使用场景
HDFS 的机架感知(Rack Awareness)是一种策略,用于优化数据块的放置和读取,以提高数据的可靠性和读写性能。通过机架感知,HDFS 可以确保数据块的副本分布在不同的机架上,从而在机架故障时仍能保证数据的可用性。
配置方法
默认情况下,HDFS 的机架感知没有被启用,所有节点都被认为在同一个默认机架/default-rack下。这种配置可能导致数据块的副本放置在同一个机架上,增加了单点故障的风险。
我们可以通过如下配置,打开机架感知。
<property>
<name>net.topology.script.file.name</name>
<value>/usr/local/service/hadoop/etc/hadoop/topology.py</value>
</property>
默认机架信息文件: /usr/local/service/rack/topology_map.py,无需后台修改,由TM管控页面的主机列表机架信息决定(具体设置方式参看主机运维章节)
HDFS要启用机架感知,需要在TM页面的core-site.xml 配置文件中设置 net.topology.script.file.name,设置为/usr/local/service/hadoop/etc/hadoop/topology.py(该文件已在后台存在,无需修改),并滚动重启HDFS。
- 机架感知副本放置策略。
- 第一个副本放在客户端所在的节点(如果客户端不在集群中,则随机选择一个节点)。
- 第二个副本放在与第一个副本不同机架的节点上。
- 第三个副本放在与第二个副本相同机架的不同节点上。
- 机架配置限制。
- 层级结构:HDFS 机架感知的网络拓扑结构通常是一个树状结构,每个节点的层级数需要一致。例如,如果一个节点的路径是 /dc1/rack1,那么所有节点的路径都应该遵循类似的层级结构。
- 副本数限制:默认情况下,HDFS 的副本数为 3。如果配置了机架感知,副本的放置策略会根据机架感知的配置来决定。副本数不应超过 DataNode 的数量。
- 脚本文件限制:net.topology.script.file.name 指定的脚本文件必须具有可执行权限,并且能够正确返回每个 DataNode 的机架信息。
生效验证
通过如下命令获取机架感知是否生效。
hdfs dfsadmin -printTopology