首页主机资讯Ubuntu Zookeeper与Hadoop集成方法

Ubuntu Zookeeper与Hadoop集成方法

时间2025-12-03 14:52:04发布访客分类主机资讯浏览525
导读:Ubuntu 下 Zookeeper 与 Hadoop 集成指南 一 架构与准备 适用场景:为 HDFS HA(QJM) 与 YARN HA 提供 Zookeeper 仲裁与故障转移能力。 组件与版本建议: Ubuntu 20.04/2...

Ubuntu 下 Zookeeper 与 Hadoop 集成指南

一 架构与准备

  • 适用场景:为 HDFS HA(QJM)YARN HA 提供 Zookeeper 仲裁与故障转移能力。
  • 组件与版本建议:
    • Ubuntu 20.04/22.04 LTS
    • Java 8(Hadoop 3.x 系列普遍推荐)
    • Hadoop 3.3.x/3.4.x
    • Zookeeper 3.7.x
  • 基础环境:
    • 配置 /etc/hosts 或 DNS,确保各节点主机名可解析;配置 SSH 免密 便于集群启停。
    • 建议 Zookeeper 使用 奇数台(3/5/7) 节点,部署在与 Hadoop 不同的主机上更稳妥(也可同机隔离端口部署)。

二 安装与配置 Zookeeper 集群

  • 安装(示例为 Apache 官方二进制包):
    • 下载并解压至 /usr/local/zookeeper,设置环境变量:
      • 编辑 /etc/profile~/.bashrc
        • export ZOOKEEPER_HOME=/usr/local/zookeeper
        • export PATH=$PATH:$ZOOKEEPER_HOME/bin
      • 执行:source /etc/profile
  • 配置 $ZOOKEEPER_HOME/conf/zoo.cfg
    • 示例(3 节点:zk1/zk2/zk3,端口 2181/2888/3888):
      • tickTime=2000
      • initLimit=10
      • syncLimit=5
      • dataDir=/var/lib/zookeeper
      • clientPort=2181
      • server.1=zk1:2888:3888
      • server.2=zk2:2888:3888
      • server.3=zk3:2888:3888
  • 初始化 myid(各节点唯一,值为 server.X 的 X):
    • zk1:echo “1” > /var/lib/zookeeper/myid
    • zk2:echo “2” > /var/lib/zookeeper/myid
    • zk3:echo “3” > /var/lib/zookeeper/myid
  • 启动与验证:
    • 各节点执行:zkServer.sh start
    • 查看状态:zkServer.sh status(应见到 Leader/Follower 角色)
    • 客户端连通性:echo stat | nc zk1 2181 或 zkCli.sh -server zk1:2181。

三 配置 Hadoop 使用 Zookeeper

  • 在所有节点配置 $HADOOP_HOME/etc/hadoop/core-site.xml,加入 Zookeeper 仲裁地址(示例为 3 节点):
    • ha.zookeeper.quorum zk1:2181,zk2:2181,zk3:2181
  • 说明:
    • 该属性用于 HDFS HAZKFailoverController(ZKFC)YARN HAActiveStandbyElector 进行选主与故障转移;端口为 2181(Zookeeper 客户端端口)。
    • 其他 Hadoop 基础参数(如 fs.defaultFS、dfs.nameservices、dfs.ha.namenodes.[nameservice]、dfs.namenode.rpc-address.[nameservice].[nn]、dfs.client.failover.proxy.provider.[nameservice] 等)按既有 HA 规划配置,本文聚焦 Zookeeper 集成关键点。

四 初始化与启动顺序

  • 首次部署或重大变更后,建议按以下顺序执行(示例命令,按你的安装路径与脚本调整):
    1. 启动 Zookeeper 集群(所有 ZK 节点):
      • zkServer.sh start
    2. 启动 JournalNode(所有 JN 节点):
      • $HADOOP_HOME/sbin/hadoop-daemon.sh start journalnode
    3. 格式化并启动 Active NameNode(nn1):
      • $HADOOP_HOME/bin/hdfs namenode -format
      • $HADOOP_HOME/sbin/hadoop-daemon.sh start namenode
    4. 在 Standby NameNode(nn2)同步元数据并启动:
      • $HADOOP_HOME/bin/hdfs namenode -bootstrapStandby
      • $HADOOP_HOME/sbin/hadoop-daemon.sh start namenode
    5. 启动 ZKFC(两个 NameNode 节点):
      • $HADOOP_HOME/sbin/hadoop-daemon.sh start zkfc
    6. 启动 DataNode(所有 DN 节点):
      • $HADOOP_HOME/sbin/hadoop-daemon.sh start datanode
    7. 启动 YARN(ResourceManager/NodeManager):
      • $HADOOP_HOME/sbin/start-yarn.sh
    8. 启动历史服务器(可选):
      • $HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
  • 验证要点:
    • Zookeeper:zkServer.sh status 显示 Leader/Follower;zkCli.sh -server zk1:2181 可连入并查看 znode。
    • HDFS:hdfs haadmin -getServiceState nn1 / nn2 应分别返回 active/standby;HDFS Web UI 正常。
    • YARN:yarn rmadmin -getServiceState rm1 / rm2 显示 active/standby;YARN Web UI 正常。

五 常见问题与排查

  • 无法形成集群或 ZKFC 无法选主:
    • 检查 ha.zookeeper.quorum 地址与端口(默认 2181)是否可达;Zookeeper 节点数应为奇数且至少 3 台;myid 与 server.X 一一对应;防火墙/安全组放行 2181/2888/3888
  • 首次启动 NameNode 失败或元数据不一致:
    • 确认 JournalNode 已启动且目录可写;必要时清理 dfs.namenode.name.dir/dfs.datanode.data.dir 后重新格式化(仅限全新环境)。
  • 端口冲突或进程未启动:
    • 使用 netstat -tulpen | grep -E ‘2181|2888|3888|50070|8088’ 检查端口占用;使用 jps 检查 QuorumPeerMain(ZK)/JournalNode/NameNode/DataNode/ZKFC/ResourceManager/NodeManager 进程是否存在。
  • 版本兼容与 Java 版本:
    • Hadoop 3.x 建议使用 Java 8;Zookeeper 3.7.x 与 Hadoop 3.3.x/3.4.x 组合在社区实践中较为常见。
  • 配置分发与一致性:
    • 修改 core-site.xml/hdfs-site.xml/yarn-site.xml 后,使用 scp/rsync 同步到所有节点,并统一环境变量与目录权限。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu Zookeeper与Hadoop集成方法
本文地址: https://pptw.com/jishu/762386.html
如何检查Apache2配置的SEO效果 如何通过Apache2配置优化网站速度

游客 回复需填写必要信息