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