3

我在 hive 中运行一个复杂的查询,运行时开始使用 /tmp 文件夹中的大量本地磁盘空间,并最终以空间错误结束,因为 /tmp 文件夹完全填满了中间 map-reduce 结果,因为提到的查询(/tmp 文件夹是在一个单独的分区中创建的,有 100 GB 的空白空间)。运行时它说:

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. 这可能是 map-reduce 作业消耗本地磁盘空间而不是 hdfs /tmp 文件夹上的空间的原因吗,就像猪脚本通常的情况一样?
  2. 给定当前设置,如何使 Hive 在分布式模式下运行?请注意,我在集群中使用 MRV2,但上述选项令人困惑,因为它们似乎与 MRV1 相关。作为新手,我在这里可能是错的。

任何帮助都感激不尽!

4

1 回答 1

0

事实证明,我错过了最基本的必需品。在所有节点中将 HADOOP_MAPRED_HOME 设置为 /usr/lib/hadoop-mapreduce 后,所有问题都已修复。

于 2015-08-06T19:27:39.430 回答