Rack awareness в Ozone
Rack awareness в Ozone — это функция, учитывающая физическую топологию сети при размещении данных. Она очень важна для локальности данных, отказоустойчивости и общей производительности, особенно в географически распределенном кластере. Если эта функция включена, Ozone будет размещать каждую реплику ключа на хосте в отдельной стойке. Это гарантирует доступность данных в случае сетевого сбоя или других проблем.
Чтобы настроить rack awareness для Ozone через ADCM, выполните следующие шаги:
-
Перейдите в веб-интерфейс ADCM и выберите ваш кластер на странице Clusters.
-
Перейдите на вкладку Services и нажмите Ozone.
-
Переведите в активное состояние переключатель 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> 10.92.42.178 01 10.92.43.172 02 10.92.42.229 03
-
Нажмите Save, затем Create.
-
В меню Actions выберите Restart.
-
Убедитесь, что для параметра Apply configs from ADCM установлено значение
true
, и нажмите Run.

Чтобы проверить, успешно ли настроен 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