Оптимизация Apache Pig с помощью Apache Ambari в Azure HDInsight
Apache Ambari — это веб-интерфейс для управления кластерами HDInsight и их мониторинга. Основные сведения о пользовательском веб-интерфейсе Ambari см. в статье Управление кластерами HDInsight с помощью пользовательского веб-интерфейса Apache Ambari.
С помощью пользовательского веб-интерфейса Ambari можно изменить свойства Apache Pig, чтобы настроить запросы Pig. Непосредственное изменение свойств Pig из Ambari изменяет свойства Pig в файле /etc/pig/2.4.2.0-258.0/pig.properties
.
Чтобы изменить свойства Pig, перейдите на вкладку Configs (Конфигурации) Pig, а затем разверните область Advanced pig-properties (Дополнительные свойства Pig).
Найдите, раскомментируйте и измените значение свойства, которое требуется изменить.
Щелкните Save (Сохранить) в верхней правой части окна, чтобы сохранить новое значение. Изменение некоторых свойств может потребовать перезапуска службы.
Примечание.
Любые параметры уровня сеанса переопределяют значения свойств в файле pig.properties
.
Настройка подсистемы выполнения
Доступны две подсистемы выполнения для выполнения сценариев Pig: MapReduce и Tez. Tez — это оптимизированная подсистема, она работает намного быстрее, чем MapReduce.
Чтобы изменить подсистему выполнения, в области Advanced pig-properties (Дополнительные свойства Pig) найдите свойство
exectype
.По умолчанию используется значение MapReduce. Измените его на Tez.
Включение локального режима
Как и в Hive, локальный режим используется для ускорения выполнения заданий со сравнительно небольшими объемами данных.
Чтобы включить локальный режим, для параметра
pig.auto.local.enabled
задайте значение true. По умолчанию используется значение false.Задания с размером входных данных меньшим, чем значение свойства
pig.auto.local.input.maxbytes
, считаются небольшими заданиями. Значение этого свойства по умолчанию — 1 ГБ.
Копирование кэша JAR-файлов пользователя
Pig копирует JAR-файлы, необходимые для определяемых пользователем функций, в распределенный кэш, чтобы сделать их доступными для узлов задач. Эти JAR-файлы редко изменяются. Если параметр pig.user.cache.enabled
включен, JAR-файлы можно поместить в кэш для повторного использования заданиями, выполняемыми тем же пользователем. Этот параметр немного повышает производительность заданий.
Чтобы включить эту функцию, задайте для параметра
pig.user.cache.enabled
значение true. Значение по умолчанию — false.Чтобы задать базовый путь к кэшированным JAR-файлам, задайте его в параметре
pig.user.cache.location
. Значение по умолчанию —/tmp
.
Оптимизация производительности с помощью параметров памяти
Приведенные ниже параметры памяти позволяют оптимизировать производительность сценариев Pig.
pig.cachedbag.memusage
— объем памяти, предоставляемый контейнеру. Контейнер представляет собой набор кортежей. Кортеж — это упорядоченный набор полей, а поле — это фрагмент данных. Если объем данных в контейнере превышает выделенный объем памяти, они сбрасываются на диск. Значение по умолчанию — 0,2. Это означает 20 процентов доступной памяти. Эта память используется совместно всеми контейнерами в приложении.pig.spill.size.threshold
: контейнеры, размер которых превышает это пороговое значение размера сброса (в байтах), сбрасываются на диск. Значение по умолчанию — 5 МБ.
Сжатие временных файлов
Pig создает временные файлы во время выполнения заданий. Сжатие временных файлов позволяет повысить производительность дисковых операций чтения и записи файлов. Для сжатия временных файлов можно использовать следующие параметры.
pig.tmpfilecompression
: если имеет значение true, включает сжатие временных файлов. По умолчанию используется значение false.pig.tmpfilecompression.codec
: кодек для сжатия временных файлов. Рекомендуемые кодеки для сжатия — LZO и Snappy, так как для них требуется меньше ресурсов ЦП.
Включение объединения небольших файлов
Если эта функция включена, небольшие файлы объединяются, чтоб уменьшить число задач сопоставления. Этот параметр повышает эффективность заданий со множеством небольших файлов. Чтобы включить эту функцию, задайте для параметра pig.noSplitCombination
значение true. По умолчанию используется значение false.
Настройка модулей сопоставления
Число модулей сопоставления можно определить, изменив свойство pig.maxCombinedSplitSize
. Это свойство задает размер данных, обрабатываемых отдельной задачей сопоставления. Значение по умолчанию равно размеру блока по умолчанию в файловой системе. Увеличение этого значения уменьшает количество задач сопоставления.
Настройка модулей сжатия
Количество модулей сжатия вычисляется на основе параметра pig.exec.reducers.bytes.per.reducer
. Этот параметр задает количество байтов, обрабатываемых модулем сжатия. По умолчанию он имеет значение 1 ГБ. Чтобы задать максимальное число модулей сжатия, задайте для свойства pig.exec.reducers.max
соответствующее значение. По умолчанию оно равно 999.