【Hadoop】高可用集群搭建

【Hadoop】高可用集群搭建

知识目录

  • 一、写在前面💕
  • 二、Zookeeper安装✨
  • 三、Hadoop配置✨
  • 四、Hadoop HA自动模式✨
  • 五、HA脚本分享✨
  • 七、结语💕

一、写在前面💕

大家好!这篇文章是我在搭建Hdfs的HA(高可用)时写下的详细笔记与感想,希望能帮助到大家!本篇文章收录于 初心 的 大数据 专栏。

🏠 个人主页:初心%个人主页

🧑 个人简介:大家好,我是初心,和大家共同努力

💕 座右铭:理想主义的花,终究会盛开在浪漫主义的土壤里!🍺🍺🍺

💕欢迎大家:这里是CSDN,我记录知识的地方,喜欢的话请三连,有问题请私信😘

二、Zookeeper安装✨

  • 1.将Zookeeper压缩包上传到 Hadoop102的/opt/software 目录下

这里我们还是使用Xshell+Xftp进行文件上传,将Zookeeper上传。

【Hadoop】高可用集群搭建

  • 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 即可,保存退出:

【Hadoop】高可用集群搭建

【Hadoop】高可用集群搭建

【Hadoop】高可用集群搭建

  • 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等你哦!😍

【Hadoop】高可用集群搭建

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