Debian Hadoop 集群扩展指南
小樊
38
2025-12-25 02:26:22
Debian Hadoop 集群扩展指南
一 规划与准备
- 扩展方式选型
- 水平扩展:新增 DataNode/NodeManager 提升容量与算力,适合大多数业务增长场景。
- 垂直扩展:提升 NameNode/ResourceManager 与节点的 CPU/内存/磁盘,适合元数据与调度压力增大的场景。
- 基础资源与网络
- 节点角色建议:NameNode/ResourceManager 配置高于工作节点;DataNode/NodeManager 多台部署。
- 硬件基线:CPU ≥4 核(推荐 ≥8 核),内存 ≥16GB(推荐 ≥32GB);NameNode 建议使用 SSD ≥500GB,DataNode 每节点 ≥2TB;网络 千兆起步,推荐万兆。
- 系统环境:Debian 系 OS,安装 Java 8+,统一 JAVA_HOME/HADOOP_HOME,配置 /etc/hosts 主机名解析,打通 SSH 免密,启用 NTP/chrony 时间同步。
- 高可用与一致性
- 生产建议启用 HDFS HA(QJM) 与 ZooKeeper,避免单点故障;所有节点 Hadoop 版本与配置保持一致,变更前做好 配置与数据备份。
二 水平扩展步骤
- 准入控制(白名单)
- 在 NameNode 的 hdfs-site.xml 配置 dfs.hosts(或旧版使用 include 文件)列出允许接入的 DataNode 主机名/IP。
- 在 ResourceManager 的 yarn-site.xml 配置 yarn.resourcemanager.nodes.include-path 列出允许接入的 NodeManager 主机名/IP。
- 新节点初始化
- 安装同版本 Hadoop 与 JDK,设置 JAVA_HOME/HADOOP_HOME/PATH,同步集群 core-site.xml/hdfs-site.xml/yarn-site.xml/mapred-site.xml 等配置。
- 配置 SSH 免密 到集群各节点,确保 NTP 时间一致。
- 挂载新磁盘并配置 dfs.datanode.data.dir(多目录可提升吞吐),必要时调整 ulimit -n 提升文件句柄上限。
- 加入集群与拉起服务
- 在 ResourceManager 节点将新主机名加入 yarn-site.xml 的 include 列表;在 NameNode 节点将新主机名加入 hdfs-site.xml 的 include 列表。
- 在新节点启动服务:
- HDFS:hadoop-daemon.sh start datanode
- YARN:yarn-daemon.sh start nodemanager
- 刷新与验证
- 刷新节点列表:
- HDFS:hdfs dfsadmin -refreshNodes
- YARN:yarn rmadmin -refreshNodes
- 查看状态:
- HDFS:hdfs dfsadmin -report(确认新节点 Live datanodes 与容量)
- YARN:yarn node -list(确认 NodeManager 状态为 RUNNING)
- 数据均衡(可选):执行 start-balancer.sh,并按需调高 dfs.datanode.balance.bandwidthPerSec 加速均衡。
三 动态缩容步骤
- 安全下线准备
- 在 ResourceManager 将待下线主机从 yarn-site.xml 的 include 列表移除;在 NameNode 将待下线主机从 hdfs-site.xml 的 include 列表移除。
- 刷新节点列表:hdfs dfsadmin -refreshNodes、yarn rmadmin -refreshNodes,观察 Decommissioning 状态。
- 数据迁移与停机
- HDFS 会自动将待下线 DataNode 上的块复制到其他节点;等待 Under replicated blocks 恢复至阈值。
- 确认安全后,在待下线节点停止服务:
- HDFS:hadoop-daemon.sh stop datanode
- YARN:yarn-daemon.sh stop nodemanager
- 清理与验证
- 从 include 列表中彻底移除该主机,再次刷新节点列表并确认节点已不在 Live 列表。
- 如为长期下线,清理该节点的 Hadoop 数据目录与日志,并检查集群 容量与负载 是否恢复均衡。
四 配置与性能调优要点
- HDFS
- 块大小:按作业与文件大小调整 dfs.blocksize(大文件可适当增大,减少寻址与元数据压力)。
- 并发与吞吐:dfs.namenode.handler.count(提升 NameNode RPC 并发)、dfs.datanode.max.transfer.threads(提升数据传输并发)。
- 副本策略:根据节点数与可靠性要求调整 dfs.replication(常用 3)。
- 均衡带宽:调高 dfs.datanode.balance.bandwidthPerSec 加速上线后的数据均衡。
- YARN
- 资源容量:按节点资源设置 yarn.nodemanager.resource.memory-mb 与 yarn.nodemanager.resource.cpu-vcores,避免超卖。
- 容器与 Shuffle:合理设置 yarn.scheduler.minimum-allocation-mb/ maximum-allocation-mb、yarn.nodemanager.aux-services=mapreduce_shuffle。
- 计算与存储
- 启用 数据压缩 减少磁盘与网络 IO;提升 数据本地化 降低跨节点传输;合理切分任务避免 数据倾斜。
五 验证与运维
- 快速验证清单
- HDFS:hdfs dfsadmin -report(容量、Live/Decommissioning 节点)、hdfs dfs -ls /(基本读写)。
- YARN:yarn node -list(节点状态)、yarn application -list(运行作业)。
- 日志与告警:检查 NameNode/ResourceManager/DataNode/NodeManager 日志,确认无异常与频繁 Full GC。
- 监控与容量管理
- 建议引入 Ambari 或 Cloudera Manager 做可视化监控、告警与滚动升级;结合 Ganglia/ Prometheus + Grafana 监控 CPU/内存/磁盘 IO/网络 与 HDFS 使用率/YARN 队列。
- 变更与回滚
- 变更遵循“备份—灰度—验证—回滚”,先在测试环境演练;保持 配置版本化 与 变更记录,异常时按流程快速回滚。