学了大半个月hadoop,现在来完整搭建并测试一遍HA集群,本文总共使用了三台CentOS 7.9服务器:hadoop102 hadoop103 hadoop104,hadoop版本为3.2.3,ZK版本为3.5.9,JDK版本为1.8;以下是本次实验所配置的环境变量
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_321
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.2.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
具体的HA配置信息以及使用到的自定义Shell脚本在下一篇博客发出
第一步:使用自己写的 xcall shell脚本同时让所有服务器初始化启动JN

第二步:初始化hadoop102的namenode

第三步:开启hadoop102的namenode服务

第四步:以standby状态同步hadoop102的namenode来初始化hadoop103 hadoop104的namenode
hdfs namenode -bootstrapStandby


第五步:关闭HDFS服务

第六步:通过自己写的 zk shell脚本开启所有服务器上的ZooKeeper

第七步:初始化ZK(在哪台服务器初始化ZK都可以),主要是用于创建监控HA集群节点目录,如果之前创建过HA集群节点目录则会提示你是否覆盖原目录,按Y选择format原目录然后继续初始化;至此初始化工作已经完成,可以开始正式启动HA集群
hdfs zkfc -formatZK

第八步:启动所有节点的JN服务,然后再通过官方脚本启动HDFS;注意这里之所以要先启动JN是因为:如果通过官方启动脚本启动HDFS,则会先启动NameNode和DataNode,再启动JN,这里启动NN的时候会先跟JN进行RPC心跳连接,如果默认10秒之后JN还没有被启动,NN则会认为无法连接JN从而报错,这里也可以手动修改core-site.xml的NN连接JN的心跳重连配置
<!-- NN 连接 JN 重试次数,默认是 10 次 -->
<property>
<name>ipc.client.connect.max.retries</name>
<value>10</value>
</property>
<!-- 重试时间间隔,默认 1s -->
<property>
<name>ipc.client.connect.retry.interval</name>
<value>1000</value>
</property>

第九步(可跳过):查看此时HDFS的 active NN 节点,下图显示此时是hadoop103为 active NN 节点





第十步:启动yarn,由于此时三台服务器都是RM,所以无论在哪台服务器上启动yarn都可以


第十一步(可跳过):测试HDFS是否正常


第十二步(可跳过):测试MapReduce和Yarn是否正常


可以发现日志聚集功能也正常


本文详细记录了搭建Hadoop 3.2.3 HA集群过程,涉及环境配置、JN初始化、ZK设置、NN同步、HDFS与YARN服务启动及测试。从初始化到验证,包括自定义脚本和重要配置参数。
2103





