Hadoop分布式集群搭建,以及ssh互通免密登录!

前面给大家讲的是hadoop伪分布式的搭建,今天给大家讲解下3台虚拟机的hadoop搭建.

首先安装好3台虚拟机,命名为hadoop2,hadoop2,hadoop4
都安装好jdk这就不用多说了,这里为了操作方便,3台虚拟机一起下命令;
分别为每台虚拟机设置主机名
hostname hadoop2
hostname hadoop3
hostname hadoop4
首先打开xshell,新建3个会话分别命名为 hadoop2,hadoop2,hadoop4;打开这三个窗口,选择最上端的选项卡排列中选择水平排列

然后选择工具栏,找到第一个:发送键输入到所有会话

这样就可以在一个窗口操作命令,同时控制到3个窗口上了

同时操作之前,分别为每台虚拟机设置静态IP
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

hadoop2 设置:
192.168.5.129 hadoop2
hadoop3 设置:
192.168.5.129 hadoop3
hadoop4 设置:
192.168.5.129 hadoop4
里面其它配置就不多说了

同时操作3个窗口添加3台主机映射
vi /etc/hosts

192.168.5.129 hadoop2
192.168.5.139 hadoop3
192.168.5.149 hadoop4

同时操作配置公私钥,免密登陆

ssh-keygen -t rsa -P ''
这样每台机就有各自的公私钥

查看是否生成了公私钥
cd ~/.ssh/
ls

当出现id_rsa.pub和 id_rsa两个文件时说明已生成了公私钥

把公钥生成新的文件
cat id_rsa.pub >> authorized_keys

给新的文件授权
chmod 600 authorized_keys
这时三个窗口就都生成了新的文件

每台机都拷贝同样的公钥到另2台机上,这样3台机就可以互相免密登录
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop2
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop3
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop4

解析
ssh- copy-id命令可以把本地的ssh公钥文件安装到远程主机对应的主机名下
注意
因为是同时在操作3个窗口,所以当复制本机的ssh公钥时,会提示报错已存在了公钥,但是另外2台会提示输入密码,不用管报错的,直接同时输入密码就好了,这时就会把公钥复制到另外2台机上。

输入登录命令
ssh hadoop2

就会免密同时登录hadoop2这台机了

退出登录
exit

同时操作去修改hadoop集群的配置文件
进入hadoop下去修改配置文件
cd /opt/soft/hadoop260/etc/hadoop

修改配置文件hadoop-env.sh 更改jdk环境变量
vi hadoop-env.sh

export JAVA_HOME=/opt/soft/jdk180

修改配置core-site.xml,在configuration添加配置信息
vi core-site.xml

< !-- 指定HDFS中NameNode的地址是hadoop2 -->

<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.5.129:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/soft/hadoop260/tmp</value>
</property>

修改配置文件hdfs-site.xml
vi hdfs-site.xml

<!-- 指定HDFS副本个数为3-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>

<!-- 指定HDFS中SecondaryNameNode的地址必须是Hadoop4的IP -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.5.149:50090</value>
</property>

配置yarn-env.sh的jdk环境变量,去掉注释
vi yarn-env.sh
export JAVA_HOME=/opt/soft/jdk180

配置yarn-site.xml
vi yarn-site.xml

<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址是hadoop3的IP--
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.5.139</value>
</property>

<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>

配置mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml

<!-- 指定mr运行在yarn上 -->

<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

配置slaves 把3台虚拟机的主机名添加进去,删掉localhost
vi slaves
hadoop2
hadoop3
hadoop4

添加hadoop的环境变量,添加在最后面
vi /etc/profile

export HADOOP_HOME=/opt/soft/hadoop260
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME

激活
source /etc/profile

格式化NameNode 目录
hadoop namenode -format

直接启动所有
start-all.sh

jps查看

注意
namenode在hadoop2上启动,
resourceManager在hadoop3上启动,
secondaryNamenode在hadoop4上启动

只有这样才表示集群搭建成功,
当同时启动命令时,因为是第一次启动,会要求输入密码,输入密码后,有一台启动很快,另外2台会启动缓慢,enter键输入3次就好了,并会在这两台机上出现错误提示Authentication Failed,验证失败,不用管,这是因为每一台的启动进程不一样,全部启动的时候会找不到,所以最好分开启动;

有namenode的hadoop2这台机用sbin/start-dfs.sh命令启动;
有resourceManager的hadoop3这台机用sbin/start-yarn.sh命令启动;

然后输入jps查看
到web页面查看
hadoop2的网址是 192.168.5.129:50070
hadoop3的网址是 192.168.5.139:8088

如果觉得同时操作三个窗口麻烦或者不熟练,可以正常按照上面的方法先安装在一台机上;
然后把hadoop目录远程拷贝到另外两台机上也是可以的。

单台虚拟机操作步骤:
把配好的hadoop2拷贝到hadoop3和hadoop4
scp -r /opt/soft/hadoop260 root@hadoop3:$PWD

scp -r /opt/soft/hadoop260 root@hadoop4:$PWD

拷贝好后

格式化HDFS 在安装有namnode这台机上,下这个命令也就是hadoop2这台机,切记
hadoop namenode -format

启动HDFS 在hadoop2 上
sbin/start-dfs.sh

启动yarn在hadoop3 上
sbin/start-yarn.sh

如果namenode在hadoop2上启动成功,
resourceManager在hadoop3上启动成功,
secondaryNamenode在hadoop4上启动成功,
这样的话也就表示集群搭建成功。

个人建议还是同步操作比较好,因为远程拷贝的时候,文件太多,有时会出现拷贝不完整的情况,导致启动会报错,很麻烦。

最后说下时间同步,如果时间不同步的话,会导致拷贝的进程速度不一样,是拷贝两个的文件出现断裂,断档,也就是说当同时拷贝某文件时,每台虚拟机时间时不一样的,一台时间快,一台时间慢,时间不对等会得不到响应,慢的那台会觉得时间没到响应的时间,所以为了不让这种情况发生,必须让集群的时间同步。

时间同步 操作步骤:
在hadoop2这台机上操作,因为有NameNode

下载安装ntp
rpm -qa|grep ntp
yum -y install ntp


如图所示,说明已经安装成功!

修改ntp的配置文件
vi /etc/ntp.conf

修改1(设置本地网络上的主机不受限制。)
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
去掉这行的注释如下图所示!

修改2(设置为不采用公共的服务器
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

四行都注释掉,如下图所示

添加3(添加默认的一个内部时钟数据,使用它为局域网用户提供服务。)
server 127.127.1.0
fudge 127.127.1.0 stratum 10

修改/etc/sysconfig/ntpd配置
vi /etc/sysconfig/ntpd

增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes

重新启动ntpd
systemctl restart ntpd

每台机安装ntpdate
yum -y install ntpdate

在另外2台机上同步hadoop2的时间
ntpdate hadoop2
如图所示,已同步hadoop2的时间!

hadoop3和hadoop4配置同步时间的间隔
crontab -e

添加配置

*/10 * * * * /usr/sbin/ntpdate hadoop2 
每隔10分钟同步时间,根据Hadoop2的时间


到这里时间也就同步了!

猜你喜欢

转载自blog.csdn.net/zp17834994071/article/details/107115000