Поделиться через


Включение дампов кучи для служб Apache Hadoop в HDInsight на платформе Linux

Дампы кучи содержат моментальный снимок памяти приложения, включая значения переменных на момент создания дампа. Поэтому они полезны для диагностики проблем, возникающих во время выполнения.

Услуги

Вы можете включить дампы кучи для следующих служб:

  • Apache hcatalog — tempelton
  • Apache hive — hiveserver2, хранилище метаданных, derbyserver
  • mapreduce — jobhistoryserver
  • Apache yarn — resourcemanager, nodemanager, timelineserver
  • Apache hdfs — datanode, secondarynamenode, namenode

Кроме того, можно включить дампы кучи для карт и уменьшить процессы, выполняемые HDInsight.

Общие сведения о конфигурации дампа кучи

Дампы кучи активируются путем передачи опций (иногда называемых параметрами) в JVM при запуске службы. Для большинства служб Apache Hadoop можно изменить скрипт оболочки, используемый для запуска службы для передачи этих параметров.

В каждом скрипте есть экспорт переменной *_OPTS, содержащей параметры, передаваемые в JVM. Например, в скрипте hadoop-env.sh строка, которая начинается с export HADOOP_NAMENODE_OPTS=, содержит параметры для службы NameNode.

Процессы сопоставления и сокращения немного отличаются, так как эти операции являются дочерним процессом службы MapReduce. Каждый процесс сопоставления или уменьшения выполняется в дочернем контейнере, и есть две записи, содержащие параметры JVM. Оба содержатся в mapred-site.xml:

  • mapreduce.admin.map.child.java.opts
  • mapreduce.admin.reduce.child.java.opts

Примечание.

Мы рекомендуем использовать Apache Ambari для изменения скриптов и mapred-site.xml параметров, так как Ambari обрабатывает репликацию изменений между узлами в кластере. Дополнительные сведения см. в разделе "Использование Apache Ambari ".

Включите дампы кучи

Этот параметр активирует дампы кучи в случае возникновения OutOfMemoryError.

-XX:+HeapDumpOnOutOfMemoryError

Элемент + указывает на то, что данный параметр включен. По умолчанию отключено.

Предупреждение

По умолчанию дампы кучи не включены для служб Hadoop в HDInsight, так как файлы дампов могут быть большими. Если вы включите их для устранения неполадок, не забудьте отключить их после воспроизведения проблемы и сбора файлов дампа.

Расположение дампа

Расположение по умолчанию для файла дампа — текущий рабочий каталог. Вы можете контролировать, где хранится файл, с помощью следующего параметра:

-XX:HeapDumpPath=/path

Например, использование -XX:HeapDumpPath=/tmp приводит к тому, что дампы будут храниться в каталоге /tmp.

Сценарии

Вы также можете активировать скрипт при возникновении OutOfMemoryError. Например, активация уведомления, чтобы узнать, что произошла ошибка. Используйте следующую опцию, чтобы запустить скрипт при OutOfMemoryError:

-XX:OnOutOfMemoryError=/path/to/script

Примечание.

Так как Apache Hadoop — это распределенная система, любой сценарий должен быть помещен на все узлы в кластере, на котором работает служба.

Скрипт также должен находиться в месте, доступном для учетной записи, под которой выполняется служба, и должен иметь разрешения на выполнение. Например, вы можете хранить скрипты в /usr/local/bin и использовать chmod go+rx /usr/local/bin/filename.sh для предоставления разрешений на чтение и выполнение.

Использование Apache Ambari

Чтобы изменить конфигурацию службы, выполните следующие действия.

  1. В веб-браузере перейдите на страницу https://CLUSTERNAME.azurehdinsight.net, где CLUSTERNAME — это имя вашего кластера.

  2. В списке слева выберите область обслуживания, которую вы хотите изменить. Например, HDFS. В центре области выберите вкладку "Конфигурации ".

    Изображение веб-сайта Ambari с выбранной вкладкой

  3. С помощью записи Filter... введите варианты. Отображаются только элементы, содержащие этот текст.

    Отфильтрованный список конфигурации Apache Ambari.

  4. Найдите запись *_OPTS для службы, для которой требуется включить дампы кучи, и добавьте нужные параметры. На следующем рисунке я добавил -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/ в запись HADOOP_NAMENODE_OPTS :

    Apache Ambari hadoop-namenode-opts.

    Примечание.

    При включении дампов куч для схемы или уменьшения дочернего процесса найдите поля с именем mapreduce.admin.map.child.java.opts и mapreduce.admin.reduce.child.java.opts.

    Нажмите кнопку "Сохранить ", чтобы сохранить изменения. Вы можете ввести короткую заметку, описывающую изменения.

  5. После применения изменений необходимый значок перезапуска появится рядом с одной или несколькими службами.

    Перезапустите необходимый значок и кнопку перезапуска.

  6. Выберите каждую службу, требующую перезапуска, и нажмите кнопку "Действия службы ", чтобы включить режим обслуживания. Режим обслуживания предотвращает создание оповещений службой при её перезапуске.

    Включите меню режима обслуживания HDI.

  7. После включения режима обслуживания нажмите кнопку «Перезапустить» для того, чтобы служба перезапустила все затронутые.

    Перезапуск всех затронутых элементов в Apache Ambari.

    Примечание.

    Записи для кнопки "Перезапустить " могут отличаться для других служб.

  8. После перезапуска служб нажмите кнопку "Действия службы ", чтобы отключить режим обслуживания. Ambari возобновляет мониторинг оповещений для службы.