用zookpeer搭建Hadoop的HA集群,组件启动的启动顺序是什么?

在 ZooKeeper 搭建 Hadoop HA 集群时,启动顺序非常重要,错误的顺序会导致服务无法正常启动或无法实现高可用。

Hadoop HA 集群的正确启动顺序

第1步:启动 ZooKeeper 集群

在所有 ZooKeeper 节点上启动:

bash 复制代码
# 在每台 ZK 节点上执行
zkServer.sh start

# 检查状态
zkServer.sh status

验证:

bash 复制代码
# 任意节点执行,检查 ZK 集群状态
echo stat | nc hadoop101 2181

第2步:启动 JournalNode 集群

在所有 JournalNode 节点上启动:

bash 复制代码
# 在 hadoop101、hadoop102、hadoop103 上分别执行
hdfs --daemon start journalnode

# 检查 JournalNode 进程
jps | grep JournalNode

第3步:格式化并启动第一个 NameNode

在 hadoop101 上执行:

bash 复制代码
# 1. 格式化 NameNode(仅在首次部署时执行)
hdfs namenode -format

# 2. 启动第一个 NameNode
hdfs --daemon start namenode

第4步:在备用 NameNode 上同步元数据

在 hadoop102 上执行:

bash 复制代码
# 同步元数据从 active NameNode
hdfs namenode -bootstrapStandby

# 启动备用 NameNode
hdfs --daemon start namenode

第5步:启动所有 DataNode

在所有 DataNode 节点上启动:

bash 复制代码
# 使用脚本启动所有 DataNode
start-dfs.sh

# 或者手动在每个节点启动
hdfs --daemon start datanode

第6步:初始化 ZKFC 并启动故障转移控制器

在任意 NameNode 节点上执行:

bash 复制代码
# 在 ZK 中初始化 HA 状态(仅在首次部署时执行)
hdfs zkfc -formatZK

# 在两个 NameNode 上启动 ZKFC
hdfs --daemon start zkfc

完整的启动脚本示例

自动化启动脚本

bash 复制代码
#!/bin/bash
echo "=== 启动 Hadoop HA 集群 ==="

echo "1. 启动 ZooKeeper 集群..."
for host in hadoop101 hadoop102 hadoop103; do
    ssh $host "zkServer.sh start"
done

echo "2. 启动 JournalNode..."
for host in hadoop101 hadoop102 hadoop103; do
    ssh $host "hdfs --daemon start journalnode"
done

echo "3. 启动 NameNode..."
ssh hadoop101 "hdfs --daemon start namenode"
ssh hadoop102 "hdfs --daemon start namenode"

echo "4. 启动 DataNode..."
start-dfs.sh

echo "5. 启动 ZKFC..."
ssh hadoop101 "hdfs --daemon start zkfc"
ssh hadoop102 "hdfs --daemon start zkfc"

echo "=== 启动完成 ==="

验证集群状态

bash 复制代码
# 检查 NameNode HA 状态
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

# 检查集群状态
hdfs dfsadmin -report

# 检查 ZKFC 状态
hdfs haadmin -checkHealth nn1
hdfs haadmin -checkHealth nn2

停止顺序(与启动顺序相反)

bash 复制代码
#!/bin/bash
echo "=== 停止 Hadoop HA 集群 ==="

echo "1. 停止 DataNode..."
stop-dfs.sh

echo "2. 停止 ZKFC..."
ssh hadoop101 "hdfs --daemon stop zkfc"
ssh hadoop102 "hdfs --daemon stop zkfc"

echo "3. 停止 NameNode..."
ssh hadoop101 "hdfs --daemon stop namenode"
ssh hadoop102 "hdfs --daemon stop namenode"

echo "4. 停止 JournalNode..."
for host in hadoop101 hadoop102 hadoop103; do
    ssh $host "hdfs --daemon stop journalnode"
done

echo "5. 停止 ZooKeeper..."
for host in hadoop101 hadoop102 hadoop103; do
    ssh $host "zkServer.sh stop"
done

echo "=== 停止完成 ==="

关键注意事项

1. 首次部署的特殊步骤

  • hdfs namenode -format(只在第一次执行)
  • hdfs namenode -bootstrapStandby(只在第一次执行)
  • hdfs zkfc -formatZK(只在第一次执行)

2. 日常重启顺序

日常维护时,如果已经初始化过,只需要:

  1. ZooKeeper → 2. JournalNode → 3. NameNode → 4. DataNode → 5. ZKFC

3. 验证要点

bash 复制代码
# 确保所有服务都正常启动
jps

# 预期应该看到(在不同节点):
# NameNode 节点: NameNode, JournalNode, ZKFC
# DataNode 节点: DataNode, JournalNode
# ZK 节点: QuorumPeerMain

按照这个顺序启动,您的 Hadoop HA 集群应该能够正常启动并实现高可用功能。

相关推荐
微三云-张梅38 分钟前
东莞企业做GEO:AI信任体系的三个建设层级
大数据·人工智能·微三云geo·东莞系统开发·东莞geo
美狐美颜sdk3 小时前
直播APP开发技术架构解析:从音视频流到第三方美颜SDK接入的完整方案
大数据·人工智能·音视频·美颜sdk·美颜api
Capricorn19883 小时前
知芽研究问题看板无法推进?从孵化区到笔记的机制排查指南
大数据·论文阅读·人工智能·笔记·学习方法·论文笔记
凡科网小帆4 小时前
2026小程序商城平台哪家强,小程序商城平台选型怎么做
大数据·小程序·小程序商城平台
睿本云4 小时前
从“有数据”到“会用数据”,一次标签体系的升级能带来的改变
大数据·人工智能
牛奶咖啡134 小时前
大数据Hadoop运维应用实践——Hadoop平台常见问题与故障汇总、系统调优、网络规划与硬件存储选型
大数据·hadoop·hadoop集群操作系统调优·hadoop集群运维问题汇总·hadoop集群硬件规划·大数据平台网络规划·大数据平台硬件存储选型
雨晨源码(同名B站)5 小时前
基于Python的网易云音乐评论数据情感化分析系统 音乐爬虫信息可视化 |SnowNLP评论情感分析
开发语言·hadoop·爬虫·python·信息可视化·毕业设计
MEIXIFU15 小时前
便利店实际经营面积怎么选最合适
大数据·人工智能·物联网·生活·迭代加深
观远数据5 小时前
AI+BI时代的数据合规三重门:传输、存储、消费如何一体化管控
大数据·数据分析
观远数据6 小时前
先进制造业BI价值交付:三个车间数据场景与它们的ROI账本
大数据·人工智能