Hive работает в локальном режиме, занимая слишком много места на локальном диске /tmp

Я выполняю сложный запрос в кусте, который при запуске начинает использовать огромное количество локального дискового пространства в папке /tmp и в конечном итоге заканчивается ошибкой пространства, поскольку папка /tmp полностью заполняется промежуточными результатами map-уменьшает, потому что указанного запроса (папка /tmp создается в отдельном разделе, имеющем 100 ГБ свободного места). Во время работы он говорит:

Execution completed successfully

MapredLocal task succeeded

Launching Job 1 out of 3

Number of reduce tasks is set to 0 since there's no reduce operator

Job running in-process (local Hadoop)

Как вы можете видеть выше, Hive каким-то образом работает в локальном режиме. Проведя некоторые исследования в сети, я проверил несколько соответствующих параметров и ниже приведены результаты:

hive> set hive.exec.mode.local.auto;

hive.exec.mode.local.auto=false

hive> set mapred.job.tracker;

mapred.job.tracker=local

hive> set mapred.local.dir;

mapred.local.dir=/tmp/hadoop-hive/mapred/local

Итак, у меня есть два вопроса по этому поводу:

  1. Может ли это быть причиной того, что задания сокращения карты занимают место на локальном диске, а не в папке hdfs /tmp, как это обычно происходит в сценариях pig?
  2. Как заставить Hive работать в распределенном режиме, учитывая текущие настройки? Пожалуйста, обратите внимание, что я использую MRV2 в кластере, но приведенные выше варианты сбивают с толку, поскольку они, похоже, актуальны для MRV1. Я могу ошибаться, будучи новичком.

Любая помощь будет высоко ценится!

1 ответ

Оказывается, мне не хватало самого необходимого. После установки HADOOP_MAPRED_HOME в /usr/lib/hadoop-mapreduce во всех узлах все проблемы были исправлены.

Другие вопросы по тегам