请解释 Hadoop 的机架感知(Rack Awareness)机制。它如何影响数据块的存储策略以及集群内的数据传输过程?
考察说明
考查对 Hadoop 机架感知机制的理解及其对数据可靠性和网络传输的影响。
回答思路
- 【回答框架 1】机架感知是 Hadoop 通过配置网络拓扑(如 /default-rack 或自定义机架映射)让 NameNode 知道每个 DataNode 所在的机架位置,从而在副本放置和数据读写调度中考虑网络距离。
- 【回答框架 2】默认副本放置策略:第一个副本放在客户端所在节点(若客户端不在集群内则随机选择),第二个副本放在与第一个不同机架的节点,第三个副本放在与第二个相同机架的另一个节点,其余副本随机放置。这种策略在可靠性和网络带宽之间取得平衡。
- 【回答框架 3】对数据存储的影响:通过将副本分散到不同机架,可以防止整个机架故障导致数据丢失,提高了数据的容错性;同时机架感知使 NameNode 能更合理地选择存储节点,避免数据倾斜。
- 【回答框架 4】对数据传输的影响:读写数据时,NameNode 会根据机架距离选择最近的副本或节点,减少跨机架的网络传输,降低网络延迟和带宽消耗;例如,当客户端读取数据时,优先选择同一机架内的副本,从而提升读取性能。
- 【关键点 1】机架感知通过配置网络拓扑让 NameNode 感知机架位置。
- 【关键点 2】默认副本策略是三副本分别放置在不同机架,以平衡容错和带宽。
- 【关键点 3】机架感知优化数据读写调度,减少跨机架传输,提升性能。
- 【易错点 1】忽略机架感知配置,可能导致所有副本位于同一机架,增加数据丢失风险。
- 【易错点 2】机架感知不等于数据局部性保证,副本放置策略可能因配置而异。