Rack awareness
Rack awareness в Hadoop — это функция HDFS, которая обеспечивает дополнительную отказоустойчивость за счет учета топологии сети при размещении блоков данных. Если этот параметр включен, HDFS разместит одну реплику блока в DataNode на другой стойке. Это гарантирует доступность данных, например, в случае сбоя сетевого коммутатора или других проблем.
Чтобы настроить rack awareness через ADCM:
-
На странице Clusters выберите нужный кластер.
-
Перейдите на вкладку Services и нажмите HDFS.
-
Включите опцию Show advanced и найдите поля Topology script и Topology data.
-
В Topology script добавьте скрипт, описывающий топологию вашей сети.
Пример Topology script#!/bin/bash # Adjust/Add the property "net.topology.script.file.name" # to core-site.xml with the "absolute" path the this # file. ENSURE the file is "executable". # Supply appropriate rack prefix RACK_PREFIX=default # To test, supply a hostname as script input: if [ $# -gt 0 ]; then CTL_FILE=${CTL_FILE:-"topology.data"} HADOOP_CONF=${HADOOP_CONF:-"/etc/hadoop/conf"} if [ ! -f ${HADOOP_CONF}/${CTL_FILE} ]; then echo -n "/$RACK_PREFIX/rack " exit 0 fi while [ $# -gt 0 ] ; do nodeArg=$1 exec< ${HADOOP_CONF}/${CTL_FILE} result="" while read line ; do ar=( $line ) if [ "${ar[0]}" = "$nodeArg" ] ; then result="${ar[1]}" fi done shift if [ -z "$result" ] ; then echo -n "/$RACK_PREFIX/rack " else echo -n "/$RACK_PREFIX/rack_$result " fi done else echo -n "/$RACK_PREFIX/rack " fi
Больше примеров скриптов топологии доступно в документации Rack Awareness.
-
В поле Topology data укажите IP-адреса стоек и соответствующие им идентификаторы следующим образом:
Пример Topology data# This file should be: # - Placed in the /etc/hadoop/conf directory # - On the Namenode (and backups IE: HA, Failover, etc) # - On the Job Tracker OR Resource Manager (and any Failover JT's/RM's) # This file should be placed in the /etc/hadoop/conf directory. # Add Hostnames to this file. Format <host ip> <rack_location> 127.0.0.1 01 127.0.0.2 02 127.0.0.3 03
-
Подтвердите изменения в конфигурации HDFS, нажав Save.
-
В меню Actions выберите Restart, убедитесь, что для параметра Apply configs from ADCM установлено значение
true
, и нажмите Run. -
Перезапустите сервис YARN таким же образом.

Проверить, успешно ли настроен rack awareness, можно просмотрев логи NameNode или использовав команду fsck.
Логи NameNode будут содержать подобные сообщения:
2023-10-23 13:09:52,474 INFO org.apache.hadoop.net.NetworkTopology: Adding a new node: /default/rack_03/127.0.0.1:1019 2023-10-23 13:09:52,569 INFO org.apache.hadoop.net.NetworkTopology: Adding a new node: /default/rack_01/127.0.0.2:1019 2023-10-23 13:09:52,571 INFO org.apache.hadoop.net.NetworkTopology: Adding a new node: /default/rack_02/127.0.0.3:1019
Вывод команды fsck
будет отображать количество стоек:
Status: HEALTHY Number of data-nodes: 3 Number of racks: 3