在CentOS7.5上搭建Hadoop3.0.3单节点集群
[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
[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 |
前提条件:已配好的hostname
和hosts
和一个已经配好单节点集群的master,若没配好见:在CentOS7.5上搭建Hadoop3.0.3单节点集群
①修改core-site.xml
文件
[root@master ~]# vim /usr/local/hadoop/etc/hadoop/core-site.xml
<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
<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
<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
这里其实就是在单节点的hdfs-site.xml
文件基础上删除了namenode属性。如果此时启动start-dfs.sh
和start-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
节点主机名
利用rsync
将master
节点上配置好的hadoop
文件夹同步到ceph1、ceph2和ceph3上相同路径中,这样就不用重新在这些节点上下载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/
hdfs-site.xml
文件[root@master ~]# vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<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>
①重建master
的namenode
文件夹
[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
下能看到有四个进程。
启动成功后在ceph1
~ceph3
下能看到有三个进程。
ResourceManager地址 http://localhost:8088/
此处我的地址是:http://10.0.86.245:8088/
NameNode HDFS Web地址 http://localhost:9870/
此处我的地址是:http://10.0.86.245:9870/
打开本机浏览器,分别输入上面两个链接出现如下页面则启动成功。可在8088页面中看到有三个活节点。
可以看到HDFS也成功启动了三个活节点。
小结:
datanode(数据节点)主要负责数据的存储。
namenode(命名节点)主要负责三个功能,分别是
(1)管理元数据
(2)维护目录树
(3)响应客户请求
1)如出现下图,节点中没有jps
,则需要安装JDK开发插件。
先检查openjdk
版本
安装java-1.8.0-openjdk-devel
后即可正常使用jps
[root@master ~]# yum install -y java-1.8.0-openjdk-devel
2)如果启动start-dfs.sh
和start-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.sh
和stop-dfs.sh
配置文件
[root@master ~]# vim /usr/local/hadoop/sbin/start-dfs.sh
[root@master ~]# vim /usr/local/hadoop/sbin/stop-dfs.sh
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
2)还需要修改/usr/local/hadoop/sbin/
路径下的start-yarn.sh
和stop-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