1. 背景

最近准备搭建Hadoop大数据环境,实验玩一下,本章将记录一下,怎样在Centos7 系统上搭建一个 3个节点的Hadoop集群.

2. 集群规划

Hadoop 集群是由2个集群构成的分布式集群,它们分别是HDFS集群和YARN 集群. 2个集群都是主从的结构.

IP地址 主机名称 CPU 内存 磁盘
192.168.50.30 HadoopMaster 8核 16G 200G SSD
192.168.50.31 HadoopSlave00 8核 16G 200G SSD
192.168.50.32 HadoopSlave01 8核 16G 200G SSD

2.1 HDFS 集群规划

IP地址 主机名称 部署服务
192.168.50.30 HadoopMaster NameNode,DataNode,JobHistoryServer
192.168.50.31 HadoopSlave00 DataNode
192.168.50.32 HadoopSlave01 DataNode,SecondaryNameNode

2.2 YARN 集群规划

IP地址 主机名称 部署服务
192.168.50.30 HadoopMaster NodeManager
192.168.50.31 HadoopSlave00 ResourceManager,NodeManager
192.168.50.32 HadoopSlave01 NodeManager

3. 集群搭建步骤

3.1 安装JDK

安装JDK请参考网上Linux安装JDK的方法
我这里使用 yum 进行OpenJDK 1.8 的安装
需要注意的是Hadoop需要的JDK版本 ApacheHadoop Java Versions

3.2 修改主机名的HOST映射

在 /etc/hosts 文件中修改

IP地址 主机名称
192.168.50.30 HadoopMaster
192.168.50.31 HadoopSlave00
192.168.50.32 HadoopSlave01

三台机器上都需要配置并且执行

# 修改主机名,3台机器的主机名需要都不同
[root@HadoopMaster ~]# vim /etc/hostname
[root@HadoopMaster ~]# cat /etc/hostname
HadoopMaster
[root@HadoopMaster ~]# vim /etc/hosts
[root@HadoopMaster ~]# cat /etc/hosts | grep hadoop*
192.168.50.30 HadoopMaster
192.168.50.31 HadoopSlave00
192.168.50.32 HadoopSlave01

3.3 配置时间同步

集群中的时间最好保持一致,否则可能会有问题。此处我本地搭建,虚拟机是可以链接外网,直接配置和外网时间同步。如果不能链接外网,则集群中的3台服务器,让另外的2台和其中的一台保持时间同步。

三台机器同时执行如下命令

# 将centos7的时区设置成上海
[root@HadoopMaster ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 安装ntp
[root@HadoopMaster ~]# yum install ntp
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
base                                           | 3.6 kB     00:00
extras                                         | 2.9 kB     00:00
updates                                        | 2.9 kB     00:00
软件包 ntp-4.2.6p5-29.el7.centos.2.aarch64 已安装并且是最新版本
无须任何处理
# 将ntp设置成缺省启动
[root@HadoopMaster ~]# systemctl enable ntpd
# 重启ntp服务
[root@HadoopMaster ~]# service ntpd restart
Redirecting to /bin/systemctl restart ntpd.service
# 对准时间
[root@HadoopMaster ~]# ntpdate asia.pool.ntp.org
8 Apr 11:26:20 ntpdate[1904]: the NTP socket is in use, exiting
# 对准硬件时间和系统时间
[root@HadoopMaster ~]# /sbin/hwclock --systohc
# 查看时间
[root@HadoopMaster ~]# timedatectl
      Local time: 日 2023-04-08 11:26:20 CST
  Universal time: 日 2023-02-08 19:26:20 UTC
        RTC time: 日 2023-04-08 19:26:20
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
# 开始自动时间和远程ntp时间进行同步
[root@HadoopMaster ~]# timedatectl set-ntp true

3.4 关闭防火墙

# 关闭防火墙
[root@HadoopMaster ~]# systemctl stop firewalld
systemctl stop firewalld
# 关闭防火墙开机自启
[root@HadoopMaster ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@HadoopMaster ~]#

3.5 配置SSH免密登陆

3.5.1 新建Hadoop 用户

[root@HadoopMaster ~]# useradd hadoop
[root@HadoopMaster ~]# passwd hadoop
更改用户 hadoop 的密码 。
新的 密码:
无效的密码: 密码包含用户名在某些地方
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@HadoopMaster ~]# vim /etc/sudoers
[root@HadoopMaster ~]# cat /etc/sudoers | grep hadoop
hadoop    ALL=(ALL)       NOPASSWD: ALL
[root@HadoopMaster ~]#

3.5.2 配置hadoop用户到任意一台机器都免密登录

配置3台机器,从任意一台到自身和另外2台都进行免密登录。

机器 用户 免密登陆的机器 密码用户
HadoopMaster hadoop HadoopMaster,HadoopSlave00,HadoopSlave01 hadoop
HadoopSlave00 hadoop HadoopMaster,HadoopSlave00,HadoopSlave01 hadoop
HadoopSlave01 hadoop HadoopMaster,HadoopSlave00,HadoopSlave01 hadoop

此处演示从 HadoopMaster到HadoopMaster,HadoopSlave00,HadoopSlave01免密登录的shell

# 切换到 hadoop 用户
[root@HadoopMaster ~]# su - hadoop
Last login: Sun Apr 08 12:01:43 CST 2023 on pts/0
# 生成公私钥对,下方的提示直接3个回车即可
[hadoopdeploy@HadoopMaster ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Created directory '/home/hadoop/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:PFvgTUirtNPSA1Ds+SD0RIzMAO2N1NASD16h1/E hadoop@HadoopMaster
The key's randomart image is:
+---[RSA 2048]----+
|B   .   .        |
| B o   . o       |
|+ * * + + .      |
| O B / = +       |
|. = @ O S o      |
|   o * o *       |
|    = o o E      |
|   o +           |
|    .            |
+----[SHA256]-----+
[hadoop@HadoopMaster ~]$ ssh-copy-id HadoopMaster
...
[hadoop@HadoopMaster ~]$ ssh-copy-id HadoopSlave00
...
[hadoop@HadoopMaster ~]$ ssh-copy-id HadoopSlave01

3.7 配置Hadoop

此处如无特殊说明,都是使用的hadoop用户来操作