Rack awareness в Ozone

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

Чтобы настроить rack awareness для Ozone через ADCM, выполните следующие шаги:

  1. Перейдите в веб-интерфейс ADCM и выберите ваш кластер на странице Clusters.

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

  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>
    10.92.42.178 01
    10.92.43.172 02
    10.92.42.229 03
  6. Нажмите Save, затем Create.

  7. В меню Actions выберите Restart.

  8. Убедитесь, что для параметра Apply configs from ADCM установлено значение true, и нажмите Run.

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

Чтобы проверить, успешно ли настроен rack awareness, можно выполнить следующую команду:

$ ozone admin datanode list

Вывод команды должен иметь следующий вид:

Datanode 10.92.42.178:9866 - Rack: /rack01 - Status: UP
Datanode 10.92.43.172:9866 - Rack: /rack02 - Status: UP
Datanode 10.92.42.229:9866 - Rack: /rack03 - Status: UP
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней