一文理解 Apache Hadoop 机架感知

发布时间:2026/7/3 21:49:20
一文理解 Apache Hadoop 机架感知 大型分布式集群通常跨多个机架部署。机架内网络速度快于跨机架且跨机架通信受上层交换机带宽限制。Hadoop HDFS 将文件按块存储默认每块3个副本放置策略为第一副本放在客户端所在节点第二副本放在不同机架的随机节点第三副本放在与第一副本同机架的不同节点更多副本则随机放置。此策略兼顾访问效率与容错。但Hadoop的机架感知非自适应需管理员手动配置IP与机架的映射关系。配置方法是在NameNode的hadoop-site.xml中设置topology.script.file.name指向一个可执行脚本如Python脚本。该脚本接收DataNode的IP或主机名作为参数输出对应的机架标识如/rack1。NameNode启动时加载该脚本并在收到DataNode心跳时调用它将返回的机架信息存入内存用于后续副本分配时优先选择不同机架避免随机放置导致跨机架流量激增。若未启用机架感知副本可能频繁跨机架写入增加网络带宽压力影响性能。启用后NameNode可构建网络拓扑图如/D1/R1/H1并计算节点间距离从而优化副本放置。配置完成后重启NameNode日志中成功加载脚本即表示生效。此机制有效减少跨机架流量提升集群稳定性。