【Hadoop】高可用集群搭建

知识目录
- 一、写在前面💕
- 二、Zookeeper安装✨
- 三、Hadoop配置✨
- 四、Hadoop HA自动模式✨
- 五、HA脚本分享✨
- 七、结语💕
一、写在前面💕
大家好!这篇文章是我在搭建Hdfs的HA(高可用)时写下的详细笔记与感想,希望能帮助到大家!本篇文章收录于 初心 的 大数据 专栏。
🏠 个人主页:初心%个人主页
🧑 个人简介:大家好,我是初心,和大家共同努力
💕 座右铭:理想主义的花,终究会盛开在浪漫主义的土壤里!🍺🍺🍺
💕欢迎大家:这里是CSDN,我记录知识的地方,喜欢的话请三连,有问题请私信😘
二、Zookeeper安装✨
- 1.将Zookeeper压缩包上传到 Hadoop102的/opt/software 目录下
这里我们还是使用Xshell+Xftp进行文件上传,将Zookeeper上传。

- 2.解压到 /opt/module/HA 目录下
tar -xzvf /opt/software/apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/HA/
- 3.将Zookeeper重命名
mv /opt/module/HA/apache-zookeeper-3.5.7-bin/ zookeeper
- 4.重命名Zookeeper的zoo_sample.cfg为zoo.cfg文件
mv zoo_sample.cfg zoo.cfg
- 5.修改zoo.cfg文件
vim /opt/module/HA/zookeeper/conf/zoo.cfg
按下G,按下o,直接插入到最后一行,插入以下内容,其中hadoop102,hadoop103,hadoop104分别是三个节点的主机名。
server.1=hadoop102:2888:3888 server.2=hadoop103:2888:3888 server.3=hadoop104:2888:3888
- 6.新建myid文件
进入到zookeeper目录下:
cd /opt/module/HA/zookeeper/
新建zkData目录:
mkdir zkData
进入到zkData目录,并新建myid文件:
cd zkData
vim myid
只需分别在Hadoop102,Hadoop103,Hadoop104的myid文件添加数字 1,2,3 即可,保存退出:



- 7.配置环境变量
vim /etc/profile.d/my_env.sh
插入以下内容:
# ZOOKEEPER_HOME export ZOOKEEPER_HOME=/opt/module/HA/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin
- 8.刷新环境变量
source /etc/profile.d/my_env.sh
- 9.分发
这里需要分发的有Zookeeper,my_env.sh文件,以及都要刷新环境变量。前面两个命令在hadoop102执行即可,第三个命令在hadoop103,hadoop104上都要执行一次。
xsync /opt/module/HA/zookeeper/
xsync /etc/profile.d/my_env.sh
source /etc/profile.d/my_env.sh
三、Hadoop配置✨
- 1.保留原来的Hadoop集群
为什么要保留原来的集群? 在搭建Hadoop高可用之前,我们的集群是有Hdfs,Yarn,JobHistory,这些我们日后还需要继续学习使用,因此我选择保留下来,换句话说,**即使我们高可用(HA)搭建失败了,我们还能回到开始的状态。**保留方式就是我们搭建的时候不要直接使用Hadoop目录,而是复制一份。
- 2.复制Hadoop目录
cp -r /opt/module/hadoop-3.1.3/ /opt/module/HA/
- 3.删除data和logs目录
cd /opt/module/HA/hadoop-3.1.3/
rm -rf data
rm -rf logs
- 4.新建Zookeeper相关目录
cd /opt/module/HA/
mkdir logs
mkdir tmp
- 5.修改两个配置文件
这里的两个配置文件是 core-site.xml 文件和 hdfs-site.xml 文件,这是Hadoop目录中仅需要修改的两个文件.这里以注释形式给出需要修改的地方,不用修改这两个文件,直接覆盖即可.
hdfs-site.xml:
dfs.nameservices
mycluster
dfs.ha.namenodes.mycluster
nn1,nn2
dfs.namenode.rpc-address.mycluster.nn1
hadoop102:8020
dfs.namenode.rpc-address.mycluster.nn2
hadoop103:8020
dfs.namenode.http-address.mycluster.nn1
hadoop102:9870
dfs.namenode.http-address.mycluster.nn2
hadoop103:9870
<!-- 格式为 qjournal://jn1:port;jn2:port;jn3:port/${nameservices} -->
dfs.namenode.shared.edits.dir
qjournal://hadoop102:8485;hadoop103:8485;hadoop104:8485/mycluster
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence
dfs.ha.fencing.ssh.private-key-files
/home/sky/.ssh/id_rsa
dfs.journalnode.edits.dir
/opt/module/HA/logs/
dfs.ha.automatic-failover.enabled
true
dfs.webhdfs.enabled
true
dfs.datanode.max.transfer.threads
8192
Specifies the maximum number of threads to use for transferring data
in and out of the DN.
core-site.xml:
fs.defaultFS
hdfs://mycluster
hadoop.tmp.dir
/opt/module/HA/tmp/
<!-- /opt/bigdata/hadoopha -->
hadoop.http.staticuser.user
sky
ha.zookeeper.quorum
hadoop102:2181,hadoop103:2181,hadoop104:2181
<!-- 权限配置 hadoop.proxyuser.{填写自己的用户名}.hosts-->
hadoop.proxyuser.sky.hosts
*
hadoop.proxyuser.sky.groups
*
ipc.client.connect.max.retries
100
Indicates the number of retries a client will make to establish a server connection.
ipc.client.connect.retry.interval
10000
Indicates the number of milliseconds a client will wait for before retrying to establish a server connection.
- 6.修改环境变量
vim /etc/profile.d/my_env.sh
将HADOOP_HOME改为新的Hadoop目录所在路径:
# HADOOP_HOME export HADOOP_HOME=/opt/module/HA/hadoop-3.1.3
- 7.分发Hadoop目录和my_env.sh文件
xsync /opt/module/HA/hadoop-3.1.3/
xsync /etc/profile.d/my_env.sh
- 8.刷新环境变量
分别在三个节点上刷新环境变量:
source /etc/profile.d/my_env.sh
四、Hadoop HA自动模式✨
- 1.修改hadoop/etc/hadoop/hadoop-env.sh文件
vim /opt/module/HA/hadoop-3.1.3/etc/hadoop/hadoop-env.sh
在末尾插入以下内容,sky是用户名,因为我至始至终都没使用root账号.
export HDFS_ZKFC_USER=sky export HDFS_JOURNALNODE_USER=sky
- 2.分发
xsync /opt/module/HA/hadoop-3.1.3/
- 2.启动与初始化集群
启动Zookeeper:
zkServer.sh start
刷新环境变量:
source /etc/profile.d/my_env.sh
启动Hdfs:
myhadoop start
myhadoop是我另外一个Hadoop集群启停脚本,具体的脚本内容和使用请参考:Hadoop集群启停脚本
- 3.查看namenode的活跃状态
zkServer.sh status
五、HA脚本分享✨
脚本名字是myHA.sh,功能是实现一键启动和停止Zookeeper和Hdfs,查看zookeeper状态.
#! /bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit;
fi
case $1 in
"start"){
echo "----------启动zookeeper----------"
for i in hadoop102 hadoop103 hadoop104
do
echo ---------- zookeeper $i 启动 ------------
ssh $i "/opt/module/HA/zookeeper/bin/zkServer.sh start"
done
echo "---------- 启动hdfs------------"
ssh hadoop102 "/opt/module/HA/hadoop-3.1.3/sbin/start-dfs.sh"
echo "---------- hadoop HA启动成功------------"
};;
"stop"){
echo "----------关闭hdfs----------"
ssh hadoop102 "/opt/module/HA/hadoop-3.1.3/sbin/stop-dfs.sh"
echo "----------关闭zookeeper----------"
for i in hadoop102 hadoop103 hadoop104
do
echo ---------- zookeeper $i 停止 ------------
ssh $i "/opt/module/HA/zookeeper/bin/zkServer.sh stop"
done
echo "---------- hadoop HA停止成功------------"
};;
"status"){
for i in hadoop102 hadoop103 hadoop104
do
echo ---------- zookeeper $i 状态 ------------
ssh $i "/opt/module/HA/zookeeper/bin/zkServer.sh status"
done
};;
*)
echo "Input Args Error"
;;
esac
七、结语💕
😎 本文主要讲解了如何搭建Hdfs的高可用(HA),后期还会出加上Yarn的高可用教程,大家可以期待一下哦!😊
✨ 这就是今天要分享给大家的全部内容了,我们下期再见!😊
🍻 世间所有的相遇,都是久别重逢~ 😍
🏠 我在CSDN等你哦!😍

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/4327f698f7.html
