HDFS副本策略与机架感知
请解释HDFS的副本放置策略和机架感知(Rack Awareness)机制,说明为什么这样设计。
回答
Yahuda
副本默认数量: 3
副本放置策略(第一版-经典策略):
- 第1副本: 放置在客户端所在节点(若客户端不在集群中则随机选择,优先选择负载低的节点)
- 第2副本: 放置在与第1副本不同机架的节点上
- 第3副本: 放置在与第2副本同一机架的不同节点上
这样设计的优势:
- 第1副本提供本地上传速度
- 第2副本跨机架提供机架级容错(单个机架掉电不影响数据)
- 第3副本减少跨机架写带宽(第2→第3副本在同一机架内传输)
机架感知实现:
- 管理员配置
topology.script或topology.data文件,描述节点与机架的映射 - NameNode通过心跳获取DataNode网络拓扑
- 在分配副本时优先选择距离最近的DataNode
- 距离计算:不同机架>同一机架不同节点>同一节点
HDFS 2.x+的优化策略:
- 存储类型感知(SSD/HDD/ARCHIVE)
- 第1副本在本地节点,第2副本在同一机架,第3副本跨机架
- 读请求优先读取本地或最近机架的副本