Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Дампы кучи содержат моментальный снимок памяти приложения, включая значения переменных на момент создания дампа. Поэтому они полезны для диагностики проблем, возникающих во время выполнения.
Услуги
Вы можете включить дампы кучи для следующих служб:
- 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
Чтобы изменить конфигурацию службы, выполните следующие действия.
В веб-браузере перейдите на страницу
https://CLUSTERNAME.azurehdinsight.net
, гдеCLUSTERNAME
— это имя вашего кластера.В списке слева выберите область обслуживания, которую вы хотите изменить. Например, HDFS. В центре области выберите вкладку "Конфигурации ".
С помощью записи Filter... введите варианты. Отображаются только элементы, содержащие этот текст.
Найдите запись *_OPTS для службы, для которой требуется включить дампы кучи, и добавьте нужные параметры. На следующем рисунке я добавил
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/
в запись HADOOP_NAMENODE_OPTS :Примечание.
При включении дампов куч для схемы или уменьшения дочернего процесса найдите поля с именем mapreduce.admin.map.child.java.opts и mapreduce.admin.reduce.child.java.opts.
Нажмите кнопку "Сохранить ", чтобы сохранить изменения. Вы можете ввести короткую заметку, описывающую изменения.
После применения изменений необходимый значок перезапуска появится рядом с одной или несколькими службами.
Выберите каждую службу, требующую перезапуска, и нажмите кнопку "Действия службы ", чтобы включить режим обслуживания. Режим обслуживания предотвращает создание оповещений службой при её перезапуске.
После включения режима обслуживания нажмите кнопку «Перезапустить» для того, чтобы служба перезапустила все затронутые.
Примечание.
Записи для кнопки "Перезапустить " могут отличаться для других служб.
После перезапуска служб нажмите кнопку "Действия службы ", чтобы отключить режим обслуживания. Ambari возобновляет мониторинг оповещений для службы.