




打开网络和Internet设置 --> 点击更改适配器选项 --> 找到VMware Network Adapter VMnet8右键属性,打开后点击Internet协议版本4 ,然后这样配置 (默认网关要和刚刚虚拟机配置的ip路径一样,ip也要在一个网段)

















然后点击完成





然后就等待一段时间,好了就直接重启

登录虚拟机之后,在命令行输入这串指令
vi /etc/sysconfig/network-scripts/ifcfg-ens33
开始配置 把虚拟机ip 设置成静态 ip 按着我这样配置就行

然后 :wq 存盘退出
在命令行输入“systemctl restart network” 来重启网络,重启后可用“ifconfig”来查看当前IP

注意: 要保证Linux系统ifcfg-ens33文件中IP地址、虚拟网络编辑器地址和Windows系统VM8网络IP地址相同
先用打开远程连接工具连接本台虚拟机(要保证当前ip是可用的)



本台虚拟机的名称 hadoop101


删除里边原有的信息,添加以下信息,然后存盘退出
192.168.16.101 hadoop101
192.168.16.102 hadoop102
192.168.16.103 hadoop103
(以下操作都是在 root 家目录下)我不想截图了,太麻烦了
使用yum安装虚拟机需要网络,因此yum安装之前可以先测试下虚拟机的联网情况,可以选择:ping www.baidu.com,确认网络无误后后输入
yum install -y epel-release
注意:若是选择了最小化安装(GHOME安装不需要此操作),还需要安装以下工具
1.net-tool:包含ifconfig等查看网络地址的命令
yum install -y net-tools
2.vim:编辑器
yum install -y vim
3.其他工具
yum install -y psmisc nc rsync lrzsz ntp libzstd openssl-static tree iotop git
useradd yzr #用户名
echo ? | passwd --stdin yzr #创建密码为 ?
visudo #进入文件中
:set nu #命令模式输入显示行号的,然后找到 100行
yzr ALL=(ALL) NOPASSWD:ALL #需要添加的内容

sudo systemctl stop firewalld
sudo systemctl disable firewalld.service
mkdir -p /opt/module /opt/software
chown master:master /opt/module
chown master:master /opt/software
注意:以上修改完成后需重启虚拟机才能生效:命令行输入“reboot”指令或者图形化界面点击
利用创建的hadoop101虚拟机再另外克隆二台虚拟机:hadoop102 hadoop103
注意:克隆时,要先关闭被克隆的虚拟机

然后点击下一页,下一页,选择完整克隆


根据上边的步骤,再把hadoop103克隆一下
注意:不要同时启动三台刚克隆好的虚拟机,因为此时网络IP主机名都相同,修改完成后重启
克隆完成后,分别启动,然后对应Hosts文件修改主机名和IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
hadoo102: 192.168.16.102
hadoo103: 192.168.16.103
vim /etc/hostname
hadoop102
hadoop103
完成以后重启生效 reboot
注意:从此刻开始尽量不要再使用root用户来操作了, 用刚刚创建的 yzr用户来操作
打开三台虚拟机,在hadoop101上边操作
将 jdk和 hadoop安装包上传到/opt/software目录下

命令查看是否有这个包

解压jdk和hadoop的安装包到 /opt/module文件夹下
tar -zxvf /opt/software/jdk-8u212-linux-x64.tar.gz -C /opt/module/
tar -zxvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/module/
sudo vim /etc/profile.d/enviroment.sh
#!/bin/bash
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
测试一下,分别输入“java -version”和“hadoop version”出现以下内容证明环境变量配置成功
[yzr@hadoop101 ~]$ java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
[yzr@hadoop101 ~]$ hadoop version
Hadoop 3.1.3
Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r ba631c436b806728f8ec2f54ab1e289526c90579
Compiled by ztang on 2019-09-12T02:47Z
Compiled with protoc 2.5.0
From source with checksum ec785077c385118ac91aadde5ec9799
This command was run using /opt/module/hadoop-3.1.3/share/hadoop/common/hadoop-common-3.1.3.jar
在根目录输入“ll -a”查看是否有“.ssh”目录 如果没有:
先输入“ssh localhost”,根据提示输入“yes”,输入密码(当前用户密码)
[yzr@hadoop101 ~]$ ssh localhost
The authenticity of host 'localhost (::1%1)' can't be established.
ECDSA key fingerprint is SHA256:LgdTcQaHMt19sNAtd+9oSH3eFv4to0EtqTqUDDHvMsY.
ECDSA key fingerprint is MD5:aa:9d:5b:65:ac:02:b0:83:db:5c:6a:02:52:fb:7c:66.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
yzr@localhost's password:
Last login: Wed Nov 9 13:54:47 2022 from 192.168.16.252
进入 .ssh目录,生成公钥和密钥文件
ssh-keygen -t rsa #执行命令后按三次回车
效果
[yzr@hadoop101 ~]$ cd .ssh/
[yzr@hadoop101 .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/yzr/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/yzr/.ssh/id_rsa.
Your public key has been saved in /home/yzr/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:P/sbm8Thrt1scvckDZKawX9XdmsJCsjaS7uZbXTvSJY yzr@hadoop101
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| |
| . .. . |
| oS.o +.. +|
| o o.Ooo.+=|
| . o. *EB o++|
| . *.o*oO++.|
| *o.o+O*o.o|
+----[SHA256]-----+
[yzr@hadoop101 .ssh]$
把公钥发给三台机器(包括自身hadoop101)执行时需要输入目标机器的登录密码
ssh-copy-id hadoop101
ssh-copy-id hadoop102
ssh-copy-id hadoop103
效果
[yzr@hadoop101 .ssh]$ ssh-copy-id hadoop101
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/yzr/.ssh/id_rsa.pub"
The authenticity of host 'hadoop101 (192.168.16.101)' can't be established.
ECDSA key fingerprint is SHA256:LgdTcQaHMt19sNAtd+9oSH3eFv4to0EtqTqUDDHvMsY.
ECDSA key fingerprint is MD5:aa:9d:5b:65:ac:02:b0:83:db:5c:6a:02:52:fb:7c:66.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are al ready installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to ins tall the new keys
yzr@hadoop101's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'hadoop101'"
and check to make sure that only the key(s) you wanted were added.
[yzr@hadoop101 .ssh]$ ssh-copy-id hadoop102
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/yzr/.ssh/id_rsa.pub"
The authenticity of host 'hadoop102 (192.168.16.102)' can't be established.
ECDSA key fingerprint is SHA256:LgdTcQaHMt19sNAtd+9oSH3eFv4to0EtqTqUDDHvMsY.
ECDSA key fingerprint is MD5:aa:9d:5b:65:ac:02:b0:83:db:5c:6a:02:52:fb:7c:66.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
yzr@hadoop102's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'hadoop102'"
and check to make sure that only the key(s) you wanted were added.
[yzr@hadoop101 .ssh]$ ssh-copy-id hadoop103
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/yzr/.ssh/id_rsa.pub"
The authenticity of host 'hadoop103 (192.168.16.103)' can't be established.
ECDSA key fingerprint is SHA256:LgdTcQaHMt19sNAtd+9oSH3eFv4to0EtqTqUDDHvMsY.
ECDSA key fingerprint is MD5:aa:9d:5b:65:ac:02:b0:83:db:5c:6a:02:52:fb:7c:66.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
yzr@hadoop103's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'hadoop103'"
and check to make sure that only the key(s) you wanted were added.
[yzr@hadoop101 .ssh]$
在另外的两台机器上也要执行这个操作(生成公钥到发送公钥的过程),以使每台虚拟机都可以免密登录到其他的虚拟机
完了就测试一下
[yzr@hadoop101 .ssh]$ ssh hadoop102
Last login: Wed Nov 9 13:54:47 2022 from 192.168.16.252
[yzr@hadoop102 ~]$ ssh hadoop103
Last login: Wed Nov 9 13:54:47 2022 from 192.168.16.252
[yzr@hadoop103 ~]$ ssh hadoop101
Last login: Wed Nov 9 14:26:26 2022 from localhost
创建目录
[yzr@hadoop101 ~]$ mkdir bin
[yzr@hadoop101 ~]$ vim bin/xsync
编写分发脚本
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop101 hadoop102 hadoop103
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4. 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
脚本授权
[yzr@hadoop101 ~]$ chmod u+x bin/xsync
上述过程完成后,进入root(管理员)用户把xsync复制到相同位置
[yzr@hadoop101 ~]$ su -
[root@hadoop101 ~]# mkdir bin
[root@hadoop101 ~]# cp /home/yzr/bin/xsync /root/bin/
jdk和hadoop以及变量环境分发
[root@hadoop101 ~]# bin/xsync /opt/module
[root@hadoop101 ~]# sudo bin/xsync /etc/profile.d/enviroment.sh
环境变量配置文件群发到另外两台机器上后要分别执行以下内容重新加载环境变量
[yzr@hadoop102 .ssh]$ source /etc/profile
[yzr@hadoop102 .ssh]$ java -version
[yzr@hadoop102 .ssh]$ hadoop version
[yzr@hadoop103 .ssh]$ source /etc/profile
[yzr@hadoop103 .ssh]$ java -version
[yzr@hadoop103 .ssh]$ hadoop version

NameNode、SecondaryNameNode、ResourceManager这三个要分开不要配置在同一台虚拟机上
修改集群的配置文件,主要是以下四个
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、workers
进入配置文件所在的目录
[yzr@hadoop101 ~]$ cd /opt/module/hadoop-3.1.3/etc/hadoop/
vim core-site.xml
在<configuration>配置内容</configuration>中添加如下内容
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:8020</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为master -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>master</value>
</property>
vim hdfs-site.xml
在<configuration>配置内容</configuration>中添加如下内容
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop101:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop103:9868</value>
</property>
vim yarn-site.xml
在<configuration>配置内容</configuration>中添加如下内容
<!-- 指定MR走shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop102</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!-- 如果要程序的运行日志信息上传到HDFS系统上,可配置日志聚集(选择配置) -->
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop101:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
vim mapred-site.xml
在<configuration>配置内容</configuration>中添加如下内容
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 如果要看程序的历史运行情况,可以配置历史服务器(选择配置) -->
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop101:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop101:19888</value>
</property>
vim workers
删除其中的localhost并在其中添加如下内容
hadoop101
hadoop102
hadoop103
[yzr@hadoop101 ~]$ bin/xsync /opt/module/hadoop-3.1.3/etc/hadoop/
第一次启动需要在hadoop101节点先格式化NameNode
[yzr@hadoop101 ~]$ hdfs namenode -format
注意:此步骤忘记进行或者出现其它问题需要重新格式化,先删除三个节点/opt/module/hadoop-3.1.3/目录下的data和logs文件夹(未出现问题不要执行此操作),删除命令为
[yzr@hadoop101 hadoop-3.1.3]$ rm -rf data/ logs/
[yzr@hadoop101 ~]$ /opt/module/hadoop-3.1.3/sbin/start-dfs.sh
正常情况下会出现如下内容

[yzr@hadoop102 .ssh]$ /opt/module/hadoop-3.1.3/sbin/start-yarn.sh

若以上步骤都没问题,集群就启动成功了
然后查看各个集群的节点



web端查看HDFS的NameNode 192.168.16.101:9870
web端查看YARN的ResourceManager 192.168.16.102:8088
web查看历史服务器(如果配置了) 192.168.16.101:19888/jobhistory
自己去测试 上传 下载
进入hadoop101的 /bin目录下边创建启动脚本 vim had
#!/bin/bash
if [ $# -lt 1 ]
then
echo 参数个数不能为0
exit ;
fi
case $1 in
"start")
echo " =================== 启动 hadoop集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh hadoop101 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
;;
"stop")
echo " =================== 关闭 hadoop集群 ==================="
echo " --------------- 关闭 yarn ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop101 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
echo 参数错误
;;
esac
添加执行权限
chmod u+x had
had start #启动
had stop #停止
在/bin目录下边创建 vim jpsall
#!/bin/bash
for host in hadoop101 hadoop102 hadoop103
do
echo =============== $host ===============
ssh $host jps $1 |grep -v Jps
done
chmod u+x jpsall
现在整个集群就搭建完成了,后边将会更新关于其他工具的安装
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
我有一个涉及多台机器、消息队列和事务的问题。因此,例如用户点击网页,点击将消息发送到另一台机器,该机器将付款添加到用户的帐户。每秒可能有数千次点击。事务的所有方面都应该是容错的。我以前从未遇到过这样的事情,但一些阅读表明这是一个众所周知的问题。所以我的问题。我假设安全的方法是使用两阶段提交,但协议(protocol)是阻塞的,所以我不会获得所需的性能,我是否正确?我通常写Ruby,但似乎Redis之类的数据库和Rescue、RabbitMQ等消息队列系统对我的帮助不大——即使我实现某种两阶段提交,如果Redis崩溃,数据也会丢失,因为它本质上只是内存。所有这些让我开始关注erlang和
前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
我正在尝试为我的iOS应用程序设置cocoapods但是当我执行命令时:sudogemupdate--system我收到错误消息:当前已安装最新版本。中止。当我进入cocoapods的下一步时:sudogeminstallcocoapods我在MacOS10.8.5上遇到错误:ERROR:Errorinstallingcocoapods:cocoapods-trunkrequiresRubyversion>=2.0.0.我在MacOS10.9.4上尝试了同样的操作,但出现错误:ERROR:Couldnotfindavalidgem'cocoapods'(>=0),hereiswhy:U
这太简单了,太荒谬了,我在任何地方都找不到关于它的任何信息,包括API文档和Rails源代码:我有一个:belongs_to关联,我开始理解当您没有关联时您在Controller中调用的正常模型方法与您有关联时调用的方法略有不同。例如,我的关联在创建Controller操作时运行良好:@user=current_user@building=Building.new(params[:building])respond_todo|format|if@user.buildings.create(params[:building])#etcetera但我找不到关于更新如何工作的文档:@user
升级到OSXYosemite后,我现有的pow.cx安装不起作用。升级到最新的pow.cx无效。通过事件监视器重新启动它也没有成功。 最佳答案 卸载(!)并重新安装解决了这个问题。curlget.pow.cx/uninstall.sh|shcurlget.pow.cx|sh 关于ruby-on-rails-OSXYosemite更新破坏了pow.cx,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q
我们在Ubuntu14.04和Gitlab9.3.7上运行,运行良好。我们正在尝试更新到Gitlabv9.3.8的最新安全补丁,但它给我们这个错误:Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension.currentdirectory:/home/git/gitlab/vendor/bundle/ruby/2.3.0/gems/re2-1.0.0/ext/re2/usr/local/bin/ruby-r./siteconf20170720-19622-15i0edf.rbextconf.rbcheckingformain(
我正在尝试使用Sinatra中的重定向和session在网站周围传递一些数据。这是一个简化的示例,使用PrettyPrint进行调试:require'pp'require'rubygems'require'sinatra'enable:sessionsget'/'dosession[:foo]='12345'puts'session1'ppsessionredirectto('/redir')endget'/redir'doputs'session2'ppsession'helloworld'end查看Thin的输出,我看到:>>Listeningon0.0.0.0:4567,CTRL