Hadoop完全分布式安装部署

Hadoop完全分布式安装部署

基于Hadoop3.2.1,虚拟机CentOS7.4版本。

节点规划

主机名 节点规划
node03 ResourceManager、NameNode
node04 SecondaryNameNode、NodeManager、DataNode
node05 NodeManager、DataNode
node06 NodeManager、DataNode

关闭各节点防火墙

1
2
3
4
5
6
## 查看防火墙状态
systemctl status firewalld.service
## 关闭防火墙
systemctl stop firewalld.service
## 禁止firewall开机启动
systemctl disable firewalld.service

修改各节点主机名

1
2
3
4
## 通过hostnamectl操作或者修改/etc/hostname文件来完成。
[root@node03 usr]# hostnamectl set-hostname node03
[root@node03 usr]# cat /etc/hostname
node03

修改各主机名与IP地址对应关系

1
2
3
4
5
6
7
8
9
10
11
12
## 修改/etc/hosts配置文件,修改前
[root@master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
## 修改后
[root@master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.12 node03
192.168.10.13 node04
192.168.10.14 node05
192.168.10.15 node06

配置SSH免密钥登录

1
2
3
4
5
6
7
## 初次需要生成密钥,此处中间会有询问,一直回车即可
ssh-keygen -t rsa
## 将密钥发送到各个服务器,包括当前服务器,保证各个服务器都能实现免密钥登录
ssh-copy-id node03
ssh-copy-id node04
ssh-copy-id node05
ssh-copy-id node06

密钥默认保存位置:/root/.ssh/known_hosts

安装JDK

1
2
3
4
5
6
7
8
9
10
11
12
13
14
## 解压文件到指定目录
tar -zxvf jdk-8u162-linux-x64.tar.gz -C /opt/
## 重命名文件夹,避免配置参数时文件名过长,此步可省略
mv jdk1.8.0_162/ jdk
## 修改配置文件/etc/profile,配置JAVA环境变量,末尾追加
export JAVA_HOME=/usr/java/jdk1.8.0_162
export PATH=$JAVA_HOME/bin:$PATH
## 使配置生效
source /etc/profile
## 查看是否配置成功
[root@node03 opt]# java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

安装Hadoop,配置相关参数

注意:这里先配置好一个节点的所有参数,再分发到其它各个节点。

配置Hadoop环境变量

1
2
3
4
5
6
7
8
9
10
11
 ## 解压文件
[root@node03 tools]# tar -zxvf hadoop-3.2.1.tar.gz -C /opt/
## 修改配置文件/etc/profile,配置Hadoop环境变量
export JAVA_HOME=/opt/jdk
export HADOOP_HOME=/opt/hadoop-3.2.1
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
## 使配置生效
source /etc/profile
## 通过命令行查看hadoop版本
[root@node03 hadoop-3.2.1]# hadoop version
Hadoop 3.2.1

配置hadoop-env.sh文件

1
2
## 这个文件夹主要是配置HADOOP_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_162

配置core-site.xml文件

这个文件是Hadoop的核心配置文件,主要配置以下参数

1
2
3
4
5
6
7
8
9
10
11
12
<configuration>
<!--指定namenode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node03:9000</value>
</property>
<!--指定使用hadoop时产生文件的存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/data</value>
</property>
</configuration>

配置hdfs-site.xml文件

这个文件是Hadoop的守护进程配置项,主要配置以下参数

1
2
3
4
5
6
7
8
9
10
11
12
<configuration>
<!--NameNode web管理端口-->
   <property>
        <name>dfs.namenode.http-address</name>
        <value>node03:9870</value>
    </property>
   <!-- SecondaryNameNode web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node04:9868</value>
    </property>
</configuration>

配置mapred-site.xml文件

1
2
3
4
5
6
7
<configuration>
<!--指定hadoop以后MR运行在YARN上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

配置yarn-site.xml文件

这里可以简单配置,以下配置只是为了更加了解各端口的作用

1
2
3
4
5
6
7
8
9
10
11
12
13
<configuration>
<!-- Site specific YARN configuration properties -->
<!--nodemanager获取数据的方式是shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--ResourceManager的hostname-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node03</value>
</property>
</configuration>

配置works文件

直接修改works文件,添加相关主机名即可

1
2
3
node04
node05
node06

Hadoop3.x额外配置

在sbin目录下使用root用户启动start-dfs.sh或start-all.sh的时候可能会报错,错误如下

1
2
3
4
5
6
7
8
9
10
[root@master hadoop]# sbin/start-dfs.sh 
Starting namenodes on [master]
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.

这里提供两种解决方案,二选其一即可(建议方案二)。
解决方案一:

1
2
3
4
5
6
7
8
9
10
## 在start-dfs.sh和stop-dfs.sh文件中添加相关参数,具体参数如下
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
## 在start-yarn.sh和stop-yarn.sh文件中添加相关参数,具体参数如下
## 注意:如果启动hadoop非root用户,修改成对应用户
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

解决方案二:

1
2
3
4
5
6
## 方案一需要修改的文件较多,比较麻烦,我们可以采用方案二,直接在hadoop-env.sh上添加相关配置信息即可。
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

分发文件到其他节点

采用scp或rsync等命令直接将配置好的hadoop文件夹分发到其他节点。
注意:还有/etc/profile文件需要分发,并执行source /etc/profile使配置生效。

格式化文件系统

1
2
3
4
5
## 注意:这里在NameNode节点执行。
## hadoop安装路径下执行
bin/hdfs namenode -format
## 或者直接在任意路径下执行(这样执行必须事先配置HADOOP_HOME)
hadoop namenode -format

启动进程

1
2
3
## 注意:NameNode节点和ResourceManage节点都在node03上,我们可以直接在该节点启动。
## 相关进程在sbin目录下。
sbin/start-all.sh

查看进程是否启动

通过jps命令可以查看各节点进程,正常情况如下

主机名 已启动进程
node03 ResourceManager、NameNode
node04 SecondaryNameNode、NodeManager、DataNode
node05 NodeManager、DataNode
node06 NodeManager、DataNode

登录访问

HDFS管理界面:http://node03:9870/
YARN调度管理界面:http://node03:8088/

参考资料

Hadoop官网:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2023 henrrywan

请我喝杯咖啡吧~

支付宝
微信