在CentOS7.5上搭建Hadoop3.0.3完全分布式集群

单节点集群搭建请移步:

在CentOS7.5上搭建Hadoop3.0.3单节点集群

完全分布式集群拓扑图:

在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第1张图片

当前CentOS和JDK版本:

[root@master ~]# cat /etc/redhat-release 
CentOS Linux release 7.5.1804 (Core)
[root@master ~]# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

可通过如下命令查看JAVA_HOME

[root@master ~]# echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64/jre

所要搭建的Hadoop版本:

[root@master ~]# hadoop version
Hadoop 3.0.3
Source code repository https://yjzhangal@git-wip-us.apache.org/repos/asf/hadoop.git -r 37fd7d752db73d984dc31e0cdfd590d252f5e075
Compiled by yzhang on 2018-05-31T17:12Z
Compiled with protoc 2.5.0
From source with checksum 736cdcefa911261ad56d2d120bf1fa
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.0.3.jar
Hostname HDFS MapReduce/Yarn IP
master NameNode ResourceManager 10.0.86.245
ceph1 DataNode NodeManager 10.0.86.246
ceph2 DataNode NodeManager 10.0.86.221
ceph3 DataNode NodeManager 10.0.86.253

1.设置master(任选一个做好的单节点即可)

前提条件:已配好的hostnamehosts和一个已经配好单节点集群的master,若没配好见:在CentOS7.5上搭建Hadoop3.0.3单节点集群
在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第2张图片
①修改core-site.xml文件

[root@master ~]# vim /usr/local/hadoop/etc/hadoop/core-site.xml

在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第3张图片

<property>
  <name>fs.default.name</name>
  <value>hdfs://master:9000</value>
</property>

②修改yarn-site.xml文件

[root@master ~]# vim /usr/local/hadoop/etc/hadoop/yarn-site.xml

在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第4张图片

<property>
  <name>yarn.resourcemanager.resource-tracker.address</name>
  <value>master:8025</value>
</property>
<property>
  <name>yarn.resourcemanager.scheduler.address</name>
  <value>master:8030</value>
</property>
<property>
  <name>yarn.resourcemanager.address</name>
  <value>master:8050</value>
</property>

③修改mapred-site.xml文件

[root@master ~]# vim /usr/local/hadoop/etc/hadoop/mapred-site.xml 

在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第5张图片

<property>
  <name>mapred.job.tracker</name>
  <value>master:54311</value>
</property>
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>

④修改hdfs-site.xml文件

[root@master ~]# vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml 

在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第6张图片
这里其实就是在单节点的hdfs-site.xml文件基础上删除了namenode属性。如果此时启动start-dfs.shstart-yarn.sh会少启一个namenode,这是因为namenode仅在master节点上,故等将此虚机复制到其他节点后再会单独配置此文件加上namenode属性。

<property>
  <name>dfs.replication</name>
  <value>3</value>
</property>
<property>
  <name>dfs.datanode.data.dir</name>
  <value> file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>

⑤修改workers配置文件
在Hadoop-3.x版本中,需要修改的是workers文件,而在老版本的Hadoop-2.x中(如Hadoop-2.7.7),则修改的是slaves文件

[root@master ~]# vim /usr/local/hadoop/etc/hadoop/workers

把原有的localhost删除,并写入DataNode节点主机名
在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第7张图片

2.将配置好的Hadoop文件分发到其他节点

利用rsyncmaster节点上配置好的hadoop文件夹同步到ceph1ceph2ceph3上相同路径中,这样就不用重新在这些节点上下载Hadoop了。

[root@master ~]# rsync -avP /usr/local/hadoop ceph1:/usr/local/
[root@master ~]# rsync -avP /usr/local/hadoop ceph2:/usr/local/
[root@master ~]# rsync -avP /usr/local/hadoop ceph3:/usr/local/

3.设置master

  • 重新配置hdfs-site.xml文件
[root@master ~]# vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml

在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第8张图片

<property>
  <name>dfs.replication</name>
  <value>3</value>
</property>
<property>
  <name>dfs.namenode.name.dir</name>
  <value> file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>

4.登录到master、ceph1、ceph2和ceph3并分别重建HDFS目录

①重建masternamenode文件夹

[root@master ~]# rm -rf /usr/local/hadoop/hadoop_data/hdfs
[root@master ~]# mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
[root@master ~]# chown -R root:root /usr/local/hadoop

②重建其余节点的datanode文件夹

[root@master ~]# ssh ceph1
[root@ceph1 ~]# rm -rf /usr/local/hadoop/hadoop_data/hdfs
[root@ceph1 ~]# mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
[root@ceph1 ~]# chown -R root:root /usr/local/hadoop
[root@master ~]# ssh ceph2
...
[root@master ~]# ssh ceph3
...

③格式化HDFS目录并启动服务
回到master节点下格式化HDFS目录:

[root@master ~]# hadoop namenode -format
[root@master ~]# start-dfs.sh
[root@master ~]# start-yarn.sh 

启动成功后在master下能看到有四个进程。
在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第9张图片
启动成功后在ceph1~ceph3下能看到有三个进程。
在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第10张图片

5.开启Hadoop Web界面

ResourceManager地址 http://localhost:8088/
此处我的地址是:http://10.0.86.245:8088/
NameNode HDFS Web地址 http://localhost:9870/
此处我的地址是:http://10.0.86.245:9870/

打开本机浏览器,分别输入上面两个链接出现如下页面则启动成功。可在8088页面中看到有三个活节点
在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第11张图片
可以看到HDFS也成功启动了三个活节点。
在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第12张图片
在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第13张图片
小结:
datanode(数据节点)主要负责数据的存储。
namenode(命名节点)主要负责三个功能,分别是
(1)管理元数据
(2)维护目录树
(3)响应客户请求

注:

1)如出现下图,节点中没有jps,则需要安装JDK开发插件。
45454
先检查openjdk版本
在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第14张图片
安装java-1.8.0-openjdk-devel后即可正常使用jps

[root@master ~]# yum install -y java-1.8.0-openjdk-devel

2)如果启动start-dfs.shstart-yarn.sh报错如下,则是之前设置Hadoop目录权限的时候设置用户名和组名都为root了。

[root@master ~]# start-dfs.sh 
Starting namenodes on [localhost]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [master]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
2018-11-26 09:29:54,896 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

1)则需要修改/usr/local/hadoop/sbin/路径下的start-dfs.shstop-dfs.sh配置文件

[root@master ~]# vim /usr/local/hadoop/sbin/start-dfs.sh 
[root@master ~]# vim /usr/local/hadoop/sbin/stop-dfs.sh

在配置文件顶部加入如下四行参数。
在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第15张图片

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

2)还需要修改/usr/local/hadoop/sbin/路径下的start-yarn.shstop-yarn.sh配置文件

[root@master ~]# vim /usr/local/hadoop/sbin/start-yarn.sh 
[root@master ~]# vim /usr/local/hadoop/sbin/stop-yarn.sh

在配置文件顶部加入如下三行参数。

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

现在启动成功~!
在CentOS7.5上搭建Hadoop3.0.3完全分布式集群_第16张图片

你可能感兴趣的:(Hadoop,CentOS7)