Настройка сортировки в MapReduce
Hadoop позволяет настроить использование кастомных реализаций методов сортировки (sort) и перемешивания (shuffle) в MapReduce.
Это позволяет, например, использовать протокол RDMA вместо HTTP для перемешивания данных или использовать другие алгоритмы сортировки, которые позволяют агрегировать хеш и выполнять запросы Limit-N.
Дополнительную информацию о MapReduce можно получить в статьях Обзор работы MapReduce и Архитектура MapReduce.
ВНИМАНИЕ
Возможность использования кастомных решений для перемешивания и сортировки — экспериментальная и нестабильная. Это значит, что предоставляемые API могут измениться и нарушить совместимость в будущих версиях Hadoop. |
Перемешивание выполняется сервисами NodeManager Auxiliary service и shuffle consumer plugin.
Чтобы заменить auxiliary service по умолчанию, необходимо отредактировать свойства конфигурации NodeManager, перечисленные в таблице ниже.
Параметр | Описание | Значение по умолчанию |
---|---|---|
yarn.nodemanager.aux-services |
Название нового auxiliary service |
…,mapreduce_shuffle |
yarn.nodemanager.aux-services.mapreduce_shuffle.class |
Имя класса auxiliary service |
org.apache.hadoop.mapred.ShuffleHandler |
yarn.nodemanager.aux-services.<имя_класса>.classpath |
Путь к локальной директории с JAR-файлами auxiliary service и его зависимостей. Путь может вести к конкретному JAR-файлу, использовать паттерн |
— |
yarn.nodemanager.aux-services.<имя_класса>.remote-classpath |
Параметр, который следует использовать вместо |
— |
Чтобы отредактировать эти параметры на всех хостах с помощью ADCM:
-
На странице Clusters выберите нужный кластер.
-
Перейдите в Services и нажмите на YARN.
-
Включите параметр Show Advanced и найдите yarn-site.xml.
-
Откройте раскрывающийся список параметров, выберите yarn.nodemanager.aux-services и добавьте новый параметр.
-
Выберите yarn.nodemanager.aux-services.mapreduce_shuffle.class и введите новое значение.
-
Найдите параметр Custom yarn-site.xml, выберите Add property и введите имя нового параметра в зависимости от расположения JAR-файлов auxiliary service:
yarn.nodemanager.aux-services.<имя_класса>.classpath
илиyarn.nodemanager.aux-services.<имя_класса>.remote-classpath
. -
Подтвердите изменения в конфигурации YARN, нажав Save.
-
В раскрывающемся меню Actions выберите Restart, убедитесь, что для параметра Apply configs from ADCM установлено значение
true
, и нажмите Run.
Чтобы заменить shuffle consumer plugin по умолчанию, установите новое значение параметра mapreduce.job.reduce.shuffle.consumer.plugin.class
.
Если новое значение задано в переменной окружения на одном хосте, настройки shuffle consumer plugin изменятся для отдельной задачи MapReduce (job). Чтобы использовать один shuffle consumer plugin для всех задач, отредактируйте значение этого параметра в файле конфигурации mapred-site.xml с помощью ADCM.
ПРИМЕЧАНИЕ
Если использовать кастомные auxiliary service и shuffle consumer plugin, необходимо добавить новый сервисный ключ в параметр |
Чтобы изменить метод сортировки по умолчанию, установите новое значение для свойства mapreduce.job.map.output.collector.class
коллектора вывода (output collector).
В значении параметра может быть указан разделенный запятыми список коллекторов вывода. В этом случае задача map будет пытаться создать экземпляр каждого из них по очереди, пока одна из реализаций не будет успешно инициализирована. Это может быть полезно в случаях, когда отдельная реализация коллектора совместима только с определенными типами ключей или значений.
Если новое значение задано в переменной окружения на одном хосте, настройки коллектора изменятся для отдельной задачи MapReduce (job). Чтобы использовать новый коллектор вывода для всех задач, отредактируйте значение этого параметра в файле конфигурации mapred-site.xml с помощью ADCM.
Чтобы отредактировать mapred-site.xml на всех хостах через ADCM:
-
На странице Clusters выберите нужный кластер.
-
Перейдите в Services и нажмите на YARN.
-
Включите параметр Show Advanced и найдите Custom mapred-site.xml.
-
Откройте раскрывающийся список параметров и выберите Add property.
-
Введите имя параметра и желаемое значение.
-
Подтвердите изменения в конфигурации YARN, нажав Save.
-
В раскрывающемся меню Actions выберите Restart, убедитесь, что для параметра Apply configs from ADCM установлено значение
true
, и нажмите Run.