在上一篇文章中,介绍了Hadoop集群的伪分布
的部署,在读这篇前,建议先读上篇文章:Hadoop集群的部署(一)
这篇文章中我们将介绍Hadoop集群分布式
的部署。
分布式集群的部署
虚拟机准备
分布式的集群,当然需要多个虚拟机的准备。这是使用3台虚拟机,其中一个为主节点
,另外两个为从节点
。其中,上篇文章中已经配置好的虚拟机当做主节点。
ip和主机名
两个从节点的ip分别为:192.168.19.11
和192.168.19.12
。
两个从节点的主机名分别为:hadoop101
和hadoop102
。
配置过程参见上一篇文章。
注意:这里在配置hosts
文件的时候,不仅要配置自己的ip和主机名,还要设置另外两台的ip和主机名。即每台机器都要有如下的配置。
防火墙的关闭
防火墙都进行关闭。
ssh免密码登录
这一步在配置的时候有点不同。
伪分布
时只有一台机器,所以只用实现自己登录自己就可以了。
但是在集群
中设置免密码登录的时候,至少要实现主节点
免密码登录其他所有节点。
注意:这里之前要看自己的三台机器的ip
是否属于同一网段
。如果不是,可能会出现连接不上的情况。
在主节点
的机器上,使用命令:
ssh-copy-id -i hadoop101
ssh-copy-id -i hadoop102
这一步的时候还是需要输入对应从节点机器的密码的,然后再用ssh
连接的时候就可以实现免密登录了。
拷贝jdk
将主节点上我们之前上传好的jdk
拷贝到另外两天从节点上:
scp -rq /opt/jdk1.8/ hadoop101:/opt/
然后还需要将环境变量
的配置文件拷贝过去:
scp -rq /etc/profile hadoop101:/etc/
然后我们到hadoop101
机器上去确认一下:
接着再拷贝另一个从节点的。
hadoop安装
因为我们这里从伪分布式
换成分布式
,所以首先需要对之前的一些配置文件做些修改。
hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop100:50090</value>
</property>
</configuration>
注意:这里有两个从节点了,所以我们的备份数量改为2。然后设定secondaryNameNode
的这个进程也是在主节点上启动。
yarn-site.xml:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</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>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop100</value>
</property>
</configuration>
注意:这里多个一个属性,用来指定resourcemanager
在主节点的机器上启动
workers:
因为现在是集群的结构,我们需要告诉机器那些是从节点。
vim etc/hadoop/workers
默认是将本机作为从节点的,我们要将hadoop101
和hadoop102
两台机器作为从节点。
删掉之前的,将两台机器的主机名加上:
hadoop101
hadoop102
拷贝hadoop目录到另外两台机器上:
scp -rq /opt/hadoop-3.2.1/ hadoop101:/opt
重新格式化
因为我们这里相当是安装了一个新的集群,在首次启动集群前,需要对集群进行格式化。后面在启动就不需要了。
删除文件:
删除/data/hadoop_repo/
文件夹。
格式化:
cd /opt/hadoop-3.2.1
bin/hdfs namenode -fotmat
启动集群
启动:
sbin/start-all.sh
查看进程:
主节点上3个进程
,从节点上2个进程
。启动成功。
总结
从伪分布式
到分布式
,整体的部署原理是基本一致的,但是在一些小的细节上有略微的差异。处理好这些差异,才能配置成功。
参考:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。