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


Доступ к журналам приложений Apache Hadoop YARN в HDInsight под управлением Linux

Узнайте, как получить доступ к журналам для приложений Apache Hadoop YARN (еще один переговорщик ресурсов) в кластере Apache Hadoop в Azure HDInsight.

Что такое Apache YARN?

YARN поддерживает несколько моделей программирования (Apache Hadoop MapReduce, являющихся одним из них) путем отмены управления ресурсами от планирования и мониторинга приложений. YARN использует глобальный ResourceManager (RM), на узел-работник NodeManagers (NMs) и на приложение ApplicationMasters (AMs). Каждый диспетчер приложения (AM) согласовывает ресурсы (ЦП, память, диск, сеть) для запуска вашего приложения с Диспетчером ресурсов (RM). RM работает с NM для предоставления этих ресурсов, которые выдаются в виде контейнеров. AM отвечает за отслеживание прогресса контейнеров, назначенных ему RM. Приложению может потребоваться множество контейнеров в зависимости от характера приложения.

Каждое приложение может состоять из нескольких попыток приложения. Если приложение завершается ошибкой, его можно повторить как новую попытку. Каждая попытка выполняется в контейнере. В смысле контейнер предоставляет контекст для базовой единицы работы, выполняемой приложением YARN. Все действия, выполненные в контексте контейнера, выполняются на одном рабочем узле, на котором был предоставлен контейнер. Дополнительные сведения см. в разделе Hadoop: Написание приложений YARN YARN или Apache Hadoop YARN .

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

Сервер временной шкалы YARN

Сервер временной шкалы Apache Hadoop YARN предоставляет универсальные сведения о завершенных приложениях

Сервер временной шкалы YARN включает следующий тип данных:

  • Идентификатор приложения, уникальный идентификатор приложения
  • Пользователь, который запустил приложение
  • Сведения о попытках завершить приложение
  • Контейнеры, используемые любой данной попыткой приложения

Приложения и журналы YARN

Журналы приложений (и связанные журналы контейнеров) критически важны для отладки проблемных приложений Hadoop. YARN предоставляет хорошую платформу для сбора, агрегирования и хранения журналов приложений с помощью агрегирования журналов.

Функция агрегирования журналов делает доступ к журналам приложений более детерминированным. Он объединяет журналы во всех контейнерах на рабочем узле и сохраняет их в виде одного агрегированного файла журнала на рабочий узел. Журнал сохраняется в файловой системе по умолчанию после завершения работы приложения. Приложение может использовать сотни или тысячи контейнеров, но журналы для всех контейнеров, выполняемых на одном рабочем узле, всегда объединяются в один файл. Таким образом, существует только один журнал на рабочий узел, используемый приложением. Агрегирование журналов включено по умолчанию в кластерах HDInsight версии 3.0 и выше. Объединенные журналы находятся в хранилище по умолчанию для кластера. Следующий путь — это путь HDFS к журналам:

/app-logs/<user>/logs/<applicationId>

В пути user — это имя пользователя, который запустил приложение. Идентификатор applicationId — это уникальный номер, присваиваемый приложению менеджером ресурсов YARN.

Агрегированные журналы не доступны напрямую для чтения, так как они записываются в TFileдвоичном формате, индексированном контейнером. Чтобы отобразить эти журналы для интересующих вас приложений или контейнеров в виде обычного текста, используйте журналы YARN ResourceManager или средства CLI.

Журналы Yarn в кластере ESP

В пользовательский mapred-site в Ambari необходимо добавить две конфигурации.

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

  2. В пользовательском интерфейсе Ambari перейдите к MapReduce2>Configs>Advanced>Custom mapred-site.

  3. Добавьте один из следующих наборов свойств:

    Набор 1

    mapred.acls.enabled=true
    mapreduce.job.acl-view-job=*
    

    Набор 2

    mapreduce.job.acl-view-job=<user1>,<user2>,<user3>
    
  4. Сохраните изменения и перезапустите все затронутые службы.

Инструменты командной строки для YARN

  1. С помощью команды ssh command подключитесь к кластеру. Измените следующую команду, заменив CLUSTERNAME именем кластера, а затем введите команду:

    ssh [email protected]
    
  2. Перечислите все идентификаторы текущих работающих приложений Yarn с помощью следующей команды:

    yarn top
    

    Обратите внимание на идентификатор приложения из APPLICATIONID столбца, журналы которого необходимо скачать.

    YARN top - 18:00:07, up 19d, 0:14, 0 active users, queue(s): root
    NodeManager(s): 4 total, 4 active, 0 unhealthy, 0 decommissioned, 0 lost, 0 rebooted
    Queue(s) Applications: 2 running, 10 submitted, 0 pending, 8 completed, 0 killed, 0 failed
    Queue(s) Mem(GB): 97 available, 3 allocated, 0 pending, 0 reserved
    Queue(s) VCores: 58 available, 2 allocated, 0 pending, 0 reserved
    Queue(s) Containers: 2 allocated, 0 pending, 0 reserved
    
                      APPLICATIONID USER             TYPE      QUEUE   #CONT  #RCONT  VCORES RVCORES     MEM    RMEM  VCORESECS    MEMSECS %PROGR       TIME NAME
     application_1490377567345_0007 hive            spark  thriftsvr       1       0       1       0      1G      0G    1628407    2442611  10.00   18:20:20 Thrift JDBC/ODBC Server
     application_1490377567345_0006 hive            spark  thriftsvr       1       0       1       0      1G      0G    1628430    2442645  10.00   18:20:20 Thrift JDBC/ODBC Server
    
  3. Эти журналы можно просмотреть как обычный текст, выполнив одну из следующих команд:

    yarn logs -applicationId <applicationId> -appOwner <user-who-started-the-application>
    yarn logs -applicationId <applicationId> -appOwner <user-who-started-the-application> -containerId <containerId> -nodeAddress <worker-node-address>
    

    <Укажите идентификатор applicationId>, <user-who-started-the-application>, <containerId> и <сведения об адресе> рабочего узла при выполнении этих команд.

Другие примеры команд

  1. Скачайте журналы контейнеров Yarn для всех мастеров приложений с помощью следующей команды. На этом шаге создается файл журнала с именем amlogs.txt в текстовом формате.

    yarn logs -applicationId <application_id> -am ALL > amlogs.txt
    
  2. Скачайте журналы контейнеров Yarn только для последнего образца приложения с помощью следующей команды:

    yarn logs -applicationId <application_id> -am -1 > latestamlogs.txt
    
  3. Скачайте журналы контейнеров YARN для первых двух мастеров приложений с помощью следующей команды:

    yarn logs -applicationId <application_id> -am 1,2 > first2amlogs.txt
    
  4. Скачайте все журналы контейнеров Yarn с помощью следующей команды:

    yarn logs -applicationId <application_id> > logs.txt
    
  5. Скачайте журнал контейнера yarn для конкретного контейнера с помощью следующей команды:

    yarn logs -applicationId <application_id> -containerId <container_id> > containerlogs.txt
    

Пользовательский интерфейс YARN ResourceManager

Пользовательский интерфейс YARN ResourceManager выполняется в головном узле кластера. Доступ к нему выполняется через веб-интерфейс Ambari. Чтобы просмотреть журналы YARN, выполните следующие действия:

  1. В веб-браузере перейдите в раздел https://CLUSTERNAME.azurehdinsight.net. Замените CLUSTERNAME именем кластера HDInsight.

  2. В списке служб слева выберите YARN.

    Выбрана служба Apache Ambari Yarn.

  3. В раскрывающемся списке "Быстрые ссылки" выберите один из головного узла кластера, а затем выберите ResourceManager Log.

    Быстрые ссылки Apache Ambari Yarn.

    Вам будет представлен список ссылок на журналы YARN.

Дальнейшие действия