当前位置: 首页 > news >正文

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

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

Hadoop HA 集群的正确启动顺序

第1步:启动 ZooKeeper 集群

在所有 ZooKeeper 节点上启动:

# 在每台 ZK 节点上执行
zkServer.sh start# 检查状态
zkServer.sh status

验证:

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

第2步:启动 JournalNode 集群

在所有 JournalNode 节点上启动:

# 在 hadoop101、hadoop102、hadoop103 上分别执行
hdfs --daemon start journalnode# 检查 JournalNode 进程
jps | grep JournalNode

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

在 hadoop101 上执行:

# 1. 格式化 NameNode(仅在首次部署时执行)
hdfs namenode -format# 2. 启动第一个 NameNode
hdfs --daemon start namenode

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

在 hadoop102 上执行:

# 同步元数据从 active NameNode
hdfs namenode -bootstrapStandby# 启动备用 NameNode
hdfs --daemon start namenode

第5步:启动所有 DataNode

在所有 DataNode 节点上启动:

# 使用脚本启动所有 DataNode
start-dfs.sh# 或者手动在每个节点启动
hdfs --daemon start datanode

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

在任意 NameNode 节点上执行:

# 在 ZK 中初始化 HA 状态(仅在首次部署时执行)
hdfs zkfc -formatZK# 在两个 NameNode 上启动 ZKFC
hdfs --daemon start zkfc

完整的启动脚本示例

自动化启动脚本

#!/bin/bash
echo "=== 启动 Hadoop HA 集群 ==="echo "1. 启动 ZooKeeper 集群..."
for host in hadoop101 hadoop102 hadoop103; dossh $host "zkServer.sh start"
doneecho "2. 启动 JournalNode..."
for host in hadoop101 hadoop102 hadoop103; dossh $host "hdfs --daemon start journalnode"
doneecho "3. 启动 NameNode..."
ssh hadoop101 "hdfs --daemon start namenode"
ssh hadoop102 "hdfs --daemon start namenode"echo "4. 启动 DataNode..."
start-dfs.shecho "5. 启动 ZKFC..."
ssh hadoop101 "hdfs --daemon start zkfc"
ssh hadoop102 "hdfs --daemon start zkfc"echo "=== 启动完成 ==="

验证集群状态

# 检查 NameNode HA 状态
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2# 检查集群状态
hdfs dfsadmin -report# 检查 ZKFC 状态
hdfs haadmin -checkHealth nn1
hdfs haadmin -checkHealth nn2

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

#!/bin/bash
echo "=== 停止 Hadoop HA 集群 ==="echo "1. 停止 DataNode..."
stop-dfs.shecho "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; dossh $host "hdfs --daemon stop journalnode"
doneecho "5. 停止 ZooKeeper..."
for host in hadoop101 hadoop102 hadoop103; dossh $host "zkServer.sh stop"
doneecho "=== 停止完成 ==="

关键注意事项

1. 首次部署的特殊步骤

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

2. 日常重启顺序

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

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

3. 验证要点

# 确保所有服务都正常启动
jps# 预期应该看到(在不同节点):
# NameNode 节点: NameNode, JournalNode, ZKFC
# DataNode 节点: DataNode, JournalNode
# ZK 节点: QuorumPeerMain

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

http://www.dtcms.com/a/568734.html

相关文章:

  • 中国石油西北化工聚丙烯产品首次出口非洲
  • Node.js 自动替换脚本工具:一键完成多项目批量修改与资源替换
  • 【智能手表篇】基于Handdle AI的台式电脑一体机Housing外观缺陷检测方案
  • 域名申请了怎么做网站高级搜索百度
  • 北京 网站策划公司c2c模式类型
  • 【零基础学MySQL】第十五章:分库分表
  • Android Gradle 的 compileOptions 与 Kotlin jvmTarget 全面理解(含案例)
  • K8s Pod生命周期完全指南
  • 生成式搜索不识你?用GEO重建识别路径
  • CSP-J教程——第一阶段——第四课:算术与逻辑运算
  • k8s——pod控制器详解
  • k8s --- resource: Pod, ReplicaSet and Deployment
  • App 上架需要什么?从开发者账号到开心上架(Appuploader)免 Mac 上传的完整流程指南
  • 高端定制网站网站建设建设多少钱
  • 写SCI论文需要用到的工具这了
  • WebFlux 执行流程与背压机制剖析
  • wordpress4.9+多站点WordPress购物按钮
  • 深入解析Kubernetes中的Ephemeral Containers:故障诊断的“急救针”
  • 安卓二次打包技术深度拆解:从逆向篡改到防护逻辑
  • 蚱蜢算法原理,公式,应用案例GOA-BP
  • Android 开发问题:resource style/Theme.Material3.DayNight.NoActionBar not found.
  • 基于有限差分法的二维边值问题数值分析
  • 简单的网站维护资阳全搜索app
  • 微服务 - 网关统一鉴权
  • 八股已死、场景当立(场景篇-微服务保护篇)
  • 视觉差的网站长沙企业网站排名优化
  • 【代码随想录算法训练营——Day58】图论——117.软件构建、47. 参加科学大会
  • TDengine 字符串函数 CHAR_LENGTH 用户手册
  • Jupyter选择内核时如何找到虚拟环境
  • 【深度强化学习】#6 TRPOPPO:策略优化算法