Каково значение Requested resource= в пользовательском интерфейсе Hadoop?

Вопрос или проблема

Я хочу вставить некоторые данные в таблицу hive, но это застряло.

Поэтому я перехожу в веб-интерфейс hadoop и нахожу следующую информацию:

org.apache.hadoop.yarn.exceptions.InvalidResourceRequestException:
Неверный запрос ресурсов, запрошенный тип ресурса=[memory-mb] < 0 или больше максимального разрешенного распределения.
Запрошенный ресурс=<memory:-1, vCores:1>, максимальное разрешенное распределение=<memory:4096, vCores:2>,
обратите внимание, что максимальное разрешенное распределение вычисляется планировщиком на основе максимального ресурса зарегистрированных NodeManagers, который может быть меньше, чем настроенное максимальное распределение=<memory:9216, vCores:4>

Мой вопрос:
что значит Запрошенный ресурс=<memory:-1, vCores:1> в веб-интерфейсе hadoop?

Я имею в виду:
memory:-1
что это такое?

Я только что решил это, это вызвано tez. Решение находится здесь

Из ссылки, которую @appleyuchi поделился выше

Это потому, что значение по умолчанию для hive.tez.container.size равно -1

Решение:

Измените $HADOOP/etc/hadoop/tez-site.xml, чтобы установить размер контейнера и память:

<property>
  <name>hive.tez.container.size</name>
  <value>2048</value>
</property> 
<property>
  <name>tez.am.resource.memory.mb</name>
  <value>2048</value>
</property> 

Обратите внимание, что 2048 здесь должно быть больше или равно yarn.scheduler.minimum-allocation-mb

Ответ или решение

Теория

Когда вы сталкиваетесь с ресурсными запросами в Hadoop, особенно в контексте YARN (Yet Another Resource Negotiator), понимание динамики распределения ресурсов является критически важным для решения возникающих проблем. YARN представляет собой систему управления ресурсами, используемую для распределения вычислительных ресурсов для различных приложений, работающих в среде Hadoop. В данном случае, ошибка с ресурсом <memory:-1, vCores:1> указывает на проблему с распределением памяти.

Термин memory:-1 в контексте Hadoop Web UI может сбивать с толку по многим причинам. Значение -1 обычно используется в программировании для обозначения значения по умолчанию или отсутствия действительного значения. В этом контексте memory:-1 указывает на некорректный запрос ресурса памяти, который меньше нуля, что явно противоречит логике и бизнес-правилам YARN.

Вы столкнулись с этой проблемой при работе с Hive, которая использует движок выполнения Tez для обработки задач. Tez в свою очередь взаимодействует с YARN для выделения необходимых ресурсов. Когда параметр hive.tez.container.size установлен в -1, это может привести к некорректным запросам ресурсов, как в вашем случае. Это прослеживается через сообщение об ошибке "InvalidResourceRequestException", которое свидетельствует о попытке запрашивать некорректное или нереалистичное количество ресурсов.

Пример

Допустим, у вас стоит задача занесения данных в таблицу Hive, и вы наблюдаете, что задания зависают в очереди. При анализе через Hadoop Web UI обнаруживается ошибка: org.apache.hadoop.yarn.exceptions.InvalidResourceRequestException. В этой ошибке выделяется строка: Requested resource=<memory:-1, vCores:1>, которая становится ключевой точкой для диагностики проблемы.

Это указывает на попытку запросить недопустимое количество памяти. Проблема вызвана тем, что в конфигурации Tez параметр hive.tez.container.size по умолчанию установлен в -1, что приводит к подобным ошибкам запроса ресурсов. Помимо этого, конфигурации YARN, такие как yarn.scheduler.minimum-allocation-mb, тоже играют важную роль в выделении памяти для задач.

Применение

Чтобы решить эту проблему, нужно внести изменения в конфигурационные файлы, связанные с Tez и YARN. Для начала, откройте файл конфигурации tez-site.xml, который можно найти в директории $HADOOP_HOME/etc/hadoop/. Внесите следующие изменения:

<property>
  <name>hive.tez.container.size</name>
  <value>2048</value>
</property> 
<property>
  <name>tez.am.resource.memory.mb</name>
  <value>2048</value>
</property>

Здесь значение 2048 выбрано не случайно. Оно должно быть выше или равно минимальной аллокации памяти, указанной в настройках YARN, например, параметре yarn.scheduler.minimum-allocation-mb. Для ваших системных конфигураций и рабочего окружения это значение может варьироваться. Проверьте, что все установленные параметры соответствуют максимальным и минимальным ограничениям, указанным вашим YARN-ом, чтобы избежать дальнейших конфликтов.

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

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

Оцените материал
Добавить комментарий

Капча загружается...