Debian 上 Hadoop 集群扩展方案
一、扩展总览与选型
- 横向扩展(Scale Out):新增 DataNode/NodeManager 节点,适合容量与算力同步增长,扩容后执行 HDFS Balancer 使数据均匀分布。
- 纵向扩展(Scale Up):为现有节点新增 磁盘/内存/CPU,Hadoop 3+ 支持 DiskBalancer 做单节点内多盘均衡。
- 元数据层扩展:当 NameNode 成为瓶颈或命名空间过大时,引入 HDFS Federation 将多个命名空间分布到多个 NameNode。
- 可用性保障:生产建议启用 HA(QJM/ZKFC + ZooKeeper),避免单点故障。
- 规划要点:保持 OS/JDK/Hadoop 版本一致,统一 主机名与 /etc/hosts,配置 SSH 免密 与 NTP/chrony 时间同步,并准备回滚预案与窗口期。
二、横向扩展步骤(新增工作节点)
- 前置准备
- 在 Debian 节点完成:网络与主机名、/etc/hosts、SSH 免密、NTP/chrony、JDK、关闭 防火墙/SELinux、禁用 透明大页(THP) 与 swap。
- 统一 Hadoop 安装路径与配置基线,确保新旧节点版本一致。
- 准入控制(可选但推荐)
- 在 NameNode 的 hdfs-site.xml 配置 dfs.hosts(白名单);在 ResourceManager 的 yarn-site.xml 配置 yarn.resourcemanager.nodes.include-path,仅允许受管节点加入。
- 新节点部署
- 安装 Hadoop,拷贝集群配置(含 core-site.xml/hdfs-site.xml/yarn-site.xml/mapred-site.xml),配置 DataNode/NodeManager 相关参数(如 dfs.datanode.data.dir、yarn.nodemanager.resource.memory-mb、yarn.nodemanager.resource.cpu-vcores)。
- 启动与纳管
- 在新节点启动 DataNode 与 NodeManager。
- 在 NameNode 执行:
hdfs dfsadmin -refreshNodes;在 ResourceManager 执行:yarn rmadmin -refreshNodes,刷新节点列表。
- 数据均衡与验证
- 运行 HDFS Balancer 均衡块分布:
hdfs balancer -threshold <百分比>。
- 验证:
hdfs dfsadmin -report、yarn node -list,检查 Capacity/Used、Nodes Live 与 不健康节点 状态。
三、纵向扩展与单节点优化
- 新增磁盘并挂载
- 分区并格式化(如 XFS/EXT4),写入 /etc/fstab 持久化挂载,目录加入 dfs.datanode.data.dir。
- 配置与生效
- 在 DataNode 配置中增加新目录,重启 DataNode 使新盘生效。
- 单节点磁盘均衡(Hadoop 3+)
- 生成并执行均衡计划:
hdfs diskbalancer -plan <DataNode_IP> -out /tmp/plan.json;hdfs diskbalancer -execute /tmp/plan.json。
- 内存与并发参数(示例,按节点资源调整)
- yarn.nodemanager.resource.memory-mb:节点可分配给容器的总内存。
- yarn.nodemanager.resource.cpu-vcores:可用 vcore 数。
- dfs.datanode.max.transfer.threads:提升 DataNode 传输并发。
- dfs.namenode.handler.count:提升 NameNode 元数据服务线程。
- dfs.datanode.balance.bandwidthPerSec:控制 Balancer 带宽,避免影响业务。
四、缩容与安全下线
- 准备与数据迁移
- 设置节点为 退役(Decommission) 状态,触发 HDFS 将块副本复制到其他 DataNode;在 YARN 将节点标记为 退役,等待容器回收。
- 停止与清理
- 待副本重建完成且 Decommission Status 为 Decommissioned,停止新节点 DataNode/NodeManager。
- 从 dfs.hosts / yarn.resourcemanager.nodes.include-path 移除该节点,执行
hdfs dfsadmin -refreshNodes 与 yarn rmadmin -refreshNodes。
- 验证
- 确认 hdfs dfsadmin -report 与 yarn node -list 中该节点已不在 Live 列表,且 Under-Replicated Blocks 恢复正常。
五、HA 与 Federation 场景的扩展要点
- HA 集群新增 JournalNode(如部署了 QJM HA)
- 在新节点安装同版本 Hadoop,同步 hdfs-site.xml 中的 JournalNode 相关目录与 ZooKeeper 地址;启动 JournalNode;依次重启 Standby NameNode 加载新 JournalNode 元数据,必要时执行 hdfs haadmin -failover 切换主备,验证 Journal Status。
- Federation 扩展命名空间
- 当单 NameNode 元数据与负载成为瓶颈时,规划多个 NameNode 组成 Federation,通过 ViewFS 或客户端挂载表提供统一命名空间视图,按业务域拆分 Namespace/Block Pool,实现水平扩展与隔离。