Hadoop3.2.1 完全分布式搭建及基础环境配置

前景提要

从此篇文章开始,不定期更新 Hadoop 大数据平台搭建的相关文章,包含但不限于 Hadoop完全分布式搭建、HBase、Zookeeper、MySQL、Hive、Sqoop、Flink 等大数据集群平台以及大数据相关集成软件搭建。

系统环境

三台 Centos7 系统的主机

一台 master 节点,两台 slave 节点,分别为 slave1、slave2

所需安装包

jdk-8u151-linux-x64.tar.gz

1
https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz

hadoop-3.2.1.tar.gz

1
https://archive.apache.org/dist/hadoop/core/hadoop-3.2.1/hadoop-3.2.1.tar.gz

1、设置拥有root权限的用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 新增hadoop的用户,作为运行hadoop的基础用户
[root@master ~]adduser hadoop
# 设置hadoop用户密码,在弹出的命令框中输入密码,我这里整个系统的用户密码都为123456
[root@master ~]passwd hadoop
更改用户 hadoop 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
# 授权(注:未安装 sudoer 的主机需要安装 sudoer,运行命令:yum install sudo)
vim /etc/sudoers #在里面输入以下内容
## Allow root to run any commands anywher
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL #这个是新增的用户
# 此时用户 hadoop 用户权限已经配置完毕

2、配置三台主机的 hosts 文件

1
2
3
4
5
6
# 输入命令配置 hosts 文件,将三台主机的 ip 地址以及主机名复制到 hosts 文件里面,这里以 master 主机为例
[root@master ~]vim /etc/hosts
## 输入以下内容,三台主机的配置文件都需要加入
192.168.1.1 master
192.168.1.2 slave1
192.168.1.3 slave2

3、三台主机互相配置免密登陆

1
2
3
4
5
6
7
8
9
10
11
12
13
# 每台主机都需配置,每台 centos7 系统的主机都默认了安装 openssh,但是如果又发现主机没有安装的话可以自行安装,三台主机都需要配置,这里以 master 主机为例
[root@master ~]yum install openssh-server -y #安装 openssh 的具体命令
[root@master ~]service sshd restart # 重启 openssh
# 登陆 hadoop 用户
[root@master ~]sudo su – hadoop
# 执行以下命令,防止 ssh 报22端口未开放的错
[hadoop@master ~]sudo /usr/sbin/sshd
# 配置本主机的密钥,需要注意按三次回车,不要多余的操作
[hadoop@master ~]ssh-keygen -t rsa
# 拷贝三台主机的密钥去另外两台,这里每执行一条语句都会输入一次密码,为正常行为
[hadoop@master ~]ssh-copy-id master
[hadoop@master ~]ssh-copy-id slave1
[hadoop@master ~]ssh-copy-id slave2

4、配置 JDK

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 三台主机都需要配置,这里以 master 节点为例
# 创建软件目录,这里我们所有的软件都放在此目录
[hadoop@master ~]sudo mkdir /tdsgpo
# 创建日志文件
[hadoop@master ~]sudo mkdir /data
# 切换到 tdsgpo 文件夹,解压 JDK
[hadoop@master ~]cd /tdsgpo
[hadoop@master tdsgpo]sudo cp /root/jdk-8u151-linux-x64.tar.gz /tdsgpo/
[hadoop@master tdsgpo]sudo tar -zxvf jdk-8u151-linux-x64.tar.gz
# 配置环境变量
[hadoop@master tdsgpo]sudo vim /etc/profile
[hadoop@master tdsgpo]sudo vim ~/.bashrc
# 以上命令执行之后均在文档里面输入以下内容
export JAVA_HOME=/tdsgpo/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin
# 使环境变量生效
[hadoop@master tdsgpo]source /etc/profile
[hadoop@master tdsgpo]source ~/.bashrc
# 使用命令查看 Java 版本
[hadoop@master tdsgpo]java -version
java version "1.8.0_150"

5、配置 Hadoop

1)解压

1
2
3
4
5
6
7
8
9
10
11
# 解压 Hadoop 压缩包到 tdsgpo 文件夹
[hadoop@master tdsgpo]sudo tar -zxvf hadoop-3.2.1.tar.gz
# 配置 Hadoop 环境变量
[hadoop@master tdsgpo]sudo vim /etc/profile
[hadoop@master tdsgpo]sudo vim ~/.bashrc
# 输入以下内容
export HADOOP_HOME=/tdsgpo/hadoop-3.2.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
# 使环境变量生效
[hadoop@master tdsgpo]source /etc/profile
[hadoop@master tdsgpo]source ~/.bashrc

2)配置 core-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
# 进入 Hadoop 的 /etc/hadoop 目录配置
[hadoop@master tdsgpo]cd /tdsgpo/hadoop-3.2.1/etc/hadoop/
[hadoop@master hadoop]sudo vim core-site.xml
# 输入以下内容,需要注意下文的 master 是指主节点的主机名,如果需要的话可以改成 IP 地址,但是必须是主节点的 IP 地址,后面的端口非必要不更改。
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>10080</value>
</property>

3)配置 hdfs-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 在上面一个步骤中接着进行
[hadoop@master hadoop]sudo vim hdfs-site.xml
# 输入以下内容,需要注意 master 主机的名称
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.http.address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/hdfs/datanode</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>hadoop</value>
</property>

4) 配置yarn-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 继续配置
[hadoop@master hadoop]sudo vim yarn-site.xml
#输入以下内容,需要注意 master 主机的名称
<property>
<name>yarn.acl.enable</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>


5)配置mapred-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 继续配置
[hadoop@master hadoop]sudo vim mapred-site.xml
# 注意有三个 master 的主机名称,这里还需要注意有三个路径,如果有更改的,需要将这里的路径也同步更改
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value> master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value> master:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/tdsgpo/hadoop-3.2.1</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/tdsgpo/hadoop-3.2.1</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/tdsgpo/hadoop-3.2.1</value>
</property>

6)配置 workers

1
2
3
4
5
6
# 继续配置
[hadoop@master hadoop]sudo vim workers
# 在里面输入三台主机的主机名称
master
slave1
slave2

6、拷贝 master 主机的信息到两个从节点

1
2
3
4
5
# 切换到软件的主目录
[hadoop@master hadoop]cd /tdsgpo
# 使用 scp 命令拷贝文件到另外两台从节点主机,需要注意这里的主机名称为 slave1、slave2.
[hadoop@master tdsgpo]sudo scp -r hadoop-3.2.1/ slave1:/tdsgpo/
[hadoop@master tdsgpo]sudo scp -r hadoop-3.2.1/ slave2:/tdsgpo/

7、格式化集群

1
2
3
4
# 进入 Hadoop 的bin目录
[hadoop@master tdsgpo]cd /tdsgpo/hadoop-3.2.1/bin/
[hadoop@master bin]hdfs namenode -format
# 当提示出现 'Storage directory /data/hadoop/hdfs/namenode has been successfully formatted' ,就证明格式化成功

8、启动 Hadoop 集群

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 进入到 sbin 目录
[hadoop@master sbin]cd /tdsgpo/hadoop-3.2.1/sbin/
# 设置 Hadoop 文件夹权限为所有人可用
[hadoop@master sbin]sudo chmod 777 -R /tdsgpo/hadoop-3.2.1
# 启动命令,按照顺序依次执行
[hadoop@master sbin]./hadoop-daemon.sh start namenode #只需要在master节点上执行
[hadoop@master sbin]./hadoop-daemon.sh start datanode #需要在master/slave1/slave2三个节点上都执行
[hadoop@master sbin]./yarn-daemon.sh start resourcemanager #只需要在master节点上执行
[hadoop@master sbin]./mr-jobhistory-daemon.sh start historyserver #只需要在master节点上执行
[hadoop@master sbin]./yarn-daemon.sh start nodemanager #需要在master/slave1/slave2三个节点上都执行
# 验证是否启动成功,jps查看出5个节点,端口号不一定都一致,但是节点名称必须一致
[hadoop@master bin]jps
26546 jps
24536 NameNode
26454 ResourceManager
13452 NodeManager
43245 JobHistoryServer
32425 DataNode
# 在浏览器输入:master:50070,查看能否打开 hdfs 控制端口,master:8088 可以打开 yarn 管理界面

本片文章在此处就结束了,主要是 Hadoop 的完全分布式搭建,在这里小伙伴们如果使用的 Vmware 安装的,就可以拍个快照,如果是使用的 Docker 镜像制作的,可以先使用 docker ps -a 查看你的三台镜像,再使用 docker commit 打包镜像,方便下次使用,下篇文章我们讲解在 Hadoop 完全分布式集群里面搭建 MySQL 以及 Hbase 。


Hadoop3.2.1 完全分布式搭建及基础环境配置
https://tdsgpo.top/2022/09/25/Hadoop3.2.1 完全分布式搭建及基础环境配置/
作者
DDS
发布于
2022年9月25日
许可协议