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用户来操作