Rack awareness

Rack awareness в Hadoop — это функция HDFS, которая обеспечивает дополнительную отказоустойчивость за счет учета топологии сети при размещении блоков данных. Если этот параметр включен, HDFS разместит одну реплику блока в DataNode на другой стойке. Это гарантирует доступность данных, например, в случае сбоя сетевого коммутатора или других проблем.

Чтобы настроить rack awareness через ADCM:

  1. На странице Clusters выберите нужный кластер.

  2. Перейдите на вкладку Services и нажмите HDFS.

  3. Включите опцию Show advanced и найдите поля Topology script и Topology data.

  4. В 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.

  5. В поле 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
  6. Подтвердите изменения в конфигурации HDFS, нажав Save.

  7. В меню Actions выберите Restart, убедитесь, что для параметра Apply configs from ADCM установлено значение true, и нажмите Run.

  8. Перезапустите сервис YARN таким же образом.

Параметры Topology script и Topology data в ADCM
Параметры Topology script и Topology data в ADCM

Проверить, успешно ли настроен 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
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней