五节点的Hadoop HA集群搭建
1 集群规划
1.1 节点(虚拟机)
主机名 | IP | 操作系统 | 安装软件 |
---|---|---|---|
vm1 | 10.211.55.11 | Centos 7 | JDK,Hadoop |
vm2 | 10.211.55.12 | Centos 7 | JDK,Hadoop |
vm3 | 10.211.55.13 | Centos 7 | JDK,Hadoop,Zookeeper |
vm4 | 10.211.55.14 | Centos 7 | JDK,Hadoop,Zookeeper |
vm5 | 10.211.55.15 | Centos 7 | JDK,Hadoop,Zookeeper |
1.2 服务
vm1 | vm2 | vm3 | vm4 | vm5 | |
---|---|---|---|---|---|
NameNode | ✓ | ✓ | |||
DataNode | ✓ | ✓ | ✓ | ||
ResourceManager | ✓ | ✓ | |||
NodeManager | ✓ | ✓ | ✓ | ||
Zookeeper | ✓ | ✓ | ✓ | ||
JournalNode | ✓ | ✓ | ✓ | ||
ZKFC | ✓ | ✓ |
2 节点环境
root用户登录配置节点环境,以节点vm1为例,其他节点类似
2.1 修改主机名
hostnamectl # 查看主机名
hostnamectl set-hostname vm1 # 设置主机名
vim /etc/hostname # 设置主机名
2.2 修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-eth0
# 修改或者添加以下几项
# BOOTPROTO="static"
# ONBOOT="yes"
# IPADDR=10.211.55.11
# NETMASK=255.255.255.0
# GATEWAY=10.211.55.1
vim /etc/resolv.conf
# 添加以下内容
# nameserver 114.114.114.114
# nameserver 114.114.114.115
# 重启network服务
systemctl restart network.service
2.3 添加主机名与IP映射
vim /etc/hosts
# 添加如下内容
# 10.211.55.11 vm1
# 10.211.55.12 vm2
# 10.211.55.13 vm3
# 10.211.55.14 vm4
# 10.211.55.15 vm5
2.4 添加hadoop用户
useradd -m hadoop -s /bin/bash # 创建hadoop用户
passwd hadoop # 修改hadoop用户密码
visudo # 为hadoop用户添加sudo权限
# root ALL=(ALL) ALL 下面添加一下内容
# hadoop ALL=(ALL) ALL
2.5 关闭防火墙
systemctl stop firewalld # 停止防火墙服务
systemctl disable firewalld # 取消开启启动防火墙服务
systemctl stop iptables.service # 停止防火墙服务
systemctl disable iptables.service # 取消开启启动防火墙服务
2.6 关闭Selinux
getenforce # 查看
vim /etc/selinux/config
# SELINUX=enforcing改为SELINUX=disabled
# 重启生效
2.7 安装 JDK
下载JDK安装包
# 本机命令
scp jdk-8u251-linux-x64.rpm root@10.211.55.11:/root #上传jdk安装包到vm1
scp jdk-8u251-linux-x64.rpm root@10.211.55.12:/root #上传jdk安装包到vm2
scp jdk-8u251-linux-x64.rpm root@10.211.55.13:/root #上传jdk安装包到vm3
scp jdk-8u251-linux-x64.rpm root@10.211.55.14:/root #上传jdk安装包到vm4
scp jdk-8u251-linux-x64.rpm root@10.211.55.15:/root #上传jdk安装包到vm5
# vm1-vm5命令
rpm -ivh jdk-8u251-linux-x64.rpm # 安装jdk
java -verbose # 查看JDK安装目录
vim /etc/profile # 配置JAVA_HOME环境变量
# 添加以下内容到文件末尾
# export JAVA_HOME=/usr/java/jdk1.8.0_251-amd64
# export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile # 配置马上生效
echo $JAVA_HOME # 查看环境变
2.8 SSH免密登录
# vm1执行命令
su hadoop
ssh-keygen -t rsa # 生成公钥,一路回车
ssh-copy-id vm1
ssh-copy-id vm2
ssh-copy-id vm3
ssh-copy-id vm4
ssh-copy-id vm5
#测试免密登录
ssh vm1
ssh vm2
ssh vm3
ssh vm4
ssh vm5
2.9 NTP时间同步
# vm1-vm5命令
yum install -y ntp
systemctl start ntpd.service
systemctl enable ntpd.service
# vm1命令
vim /etc/ntp.conf
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst
# 修改上面内容为下面内容
# server 127.127.1.0 # local clock
# fudge 127.127.1.0 stratum 10
systemctl restart ntpd.service # 重启ntp服务
ntpstat # 查看ntp状态
# vm2-vm5命令
vim /etc/ntp.conf
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst
# 修改上面内容为下面内容
# server vm1
systemctl restart ntpd.service # 重启ntp服务
ntpdate -u vm1 # 同步时间
ntpstat # 查看ntp状态
2.9 准备目录
# vm1-vm5
mkdir /bdp
mkdir /bdp/data
mkdir /bdp/tmp
2.10 准备hadoop和zookeeper
下载hadoop
下载zookeeper
apache-zookeeper-3.6.1-bin.tar.gz
# 本机命令
scp hadoop-2.10.0.tar.gz hadoop@10.211.55.11:/home/hadoop #上传hadoop安装包到vm1
scp hadoop-2.10.0.tar.gz hadoop@10.211.55.12:/home/hadoop #上传hadoop安装包到vm2
scp hadoop-2.10.0.tar.gz hadoop@10.211.55.13:/home/hadoop #上传hadoop安装包到vm3
scp hadoop-2.10.0.tar.gz hadoop@10.211.55.14:/home/hadoop #上传hadoop安装包到vm4
scp hadoop-2.10.0.tar.gz hadoop@10.211.55.15:/home/hadoop #上传hadoop安装包到vm5
scp apache-zookeeper-3.6.1-bin.tar.gz hadoop@10.211.55.11:/home/hadoop #上传zookeeper安装包到vm1
scp apache-zookeeper-3.6.1-bin.tar.gz hadoop@10.211.55.12:/home/hadoop #上传zookeeper安装包到vm2
scp apache-zookeeper-3.6.1-bin.tar.gz hadoop@10.211.55.13:/home/hadoop #上传zookeeper安装包到vm3
scp apache-zookeeper-3.6.1-bin.tar.gz hadoop@10.211.55.14:/home/hadoop #上传zookeeper安装包到vm4
scp apache-zookeeper-3.6.1-bin.tar.gz hadoop@10.211.55.15:/home/hadoop #上传zookeeper安装包到vm5
#vm1-vm5命令
mkdir /bdp
chown -R hadoop:hadoop /bdp
su hadoop
cd /home/hadoop
tar zxvf hadoop-2.10.0.tar.gz -C /bdp
tar zxvf apache-zookeeper-3.6.1-bin.tar.gz /bdp
cd /bdp
mv apache-zookeeper-3.6.1-bin zookeeper-3.6.1
vim ~/.bashrc # 配置环境变量
# 在文件末尾添加一下内容
# export HADOOP_HOME=/bdp/hadoop-2.10.0
# export HADOOP_USER_NAME=hadoop
# export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
# export ZK_HOME=/bdp/zookeeper-3.6.1
# export PATH=$HADOOP_HOME/bin:$ZK_HOME/bin:$PATH
source ~/.bashrc # 配置立即生效
3 Zookeeper集群搭建
3.1 修改配置
# vm3-vm5命令
cd $ZK_HOME/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
# 修改以下内容
dataDir=/bdp/data/zookeeper
# server.0=vm3:2888:3888
# server.1=vm4:2888:3888
# server.2=vm5:2888:3888
3.2 创建myid文件
# vm3-vm5命令
mkdir -p /bdp/data/zookeeper
# vm3命令
echo 0 > /bdp/data/zookeeper/myid
# vm4命令
echo 1 > /bdp/data/zookeeper/myid
# vm5命令
echo 2 > /bdp/data/zookeeper/myid
3.3 启动Zookeeper
# vm3-vm5命令
zkServer.sh start # 启动
zkServer.sh status # 查看状态
4 Hadoop集群搭建
ssh hadoop@vm1
4.1 hadoop-env.sh
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
# 添加如下内容
# export JAVA_HOME=/usr/java/jdk1.8.0_251-amd64
4.2 core-site.xml
vim $HADOOP_HOME/etc/hadoop/core-site.xml #配置core-site.xml
core-site.xml
<configuration>
<!-- 指定hdfs的nameservice为hdp -->
<property>
<name</