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


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

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

Службы

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

  • Apache Hcatalog — tempelton;
  • Apache Hive — hiveserver2, metastore, derbyserver;
  • Mapreduce — jobhistoryserver;
  • Apache Yarn — resourcemanager, nodemanager, timelineserver;
  • Apache HDFS — datanode, secondarynamenode, namenode.

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

Основные сведения о настройке дампа кучи

Дампы кучи включаются путем передачи параметров в виртуальную машину Java при запуске службы. Чтобы передать эти параметры, для большинства служб Apache Hadoop можно изменить скрипт оболочки, используемый для запуска службы.

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

Процессы сопоставления и уменьшения немного отличаются друг от друга, поскольку эти операции являются дочерним процессом службы MapReduce. Каждый процесс сопоставления или уменьшения запускается в дочернем контейнере и существуют две записи, содержащие параметры виртуальной машины Java. Оба содержатся в файле 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. В центральной области выберите вкладку Конфигурации .

    Image of Ambari web with HDFS Configs tab selected.

  3. Используя запись Фильтр..., введите параметры. Отобразятся только те элементы, в которых есть этот текст.

    Apache Ambari config filtered list.

  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. После применения изменений появится значок Требуется перезапуск рядом с одной или несколькими службами.

    restart required icon and restart button.

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

    Turn on hdi maintenance mode menu.

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

    Apache Ambari Restart All Affected entry.

    Примечание.

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

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