映射连接期间本地任务的Hive内存设置

时间:2015-05-04 18:05:14

标签: hadoop hive hdinsight

我正在使用hdinsight群集(hive版本.13)来运行一些配置单元查询。其中一个查询(来自TPCH诉讼的查询7)在映射加入期间启动本地任务因内存不足而失败(由于哈希表已达到配置的限制,因此hive中止它)。

Hive似乎正在为本地任务分配1GB,从这里获取这个大小,我该如何增加它呢?

2015-05-03 05:38:19        Starting to launch local task to process map join;               maximum memory = 932184064

我假设本地任务应该使用映射器的相同堆大小,但似乎并非如此。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:0)

This property controls it :

yarn.app.mapreduce.am.command-opts

This is the Application Manager jvm opts. Since local task runs on AM.

Can you also try this property :

set hive.mapjoin.localtask.max.memory.usage = 0.999;

答案 1 :(得分:0)

您可以使用HADOOP_HEAPSIZE=512HADOOP_CLIENT_OPTS=-Xmx512m,可以从hadoop-env.sh进行调整。

但请注意,这可能会导致某些工作出现意外行为,您可能需要使用

mapreduce.map.memory.mbmapreduce.map.java.opts

以及

mapreduce.reduce.memory.mb配置文件中的

mapreduce.reduce.java.optsmapred-site,以确保作业保持稳定。

答案 2 :(得分:0)

这个帖子已经很晚了..但只是面对同样问题的其他人。

文档确实声明本地(子)JVM的大小与map(https://cwiki.apache.org/confluence/display/Hive/MapJoinOptimization)的大小相同,但似乎并非如此。相反,JVM大小由hive-env.sh中的HADOOP_HEAPSIZE设置控制。因此,对于Shradha的原始帖子,我怀疑HADOOP_HEAPSIZE设置为1GB。