使用hadoop jar时如何增加堆大小?

时间:2017-05-02 11:45:48

标签: java hadoop mapreduce heap bigdata

我正在使用hadoop jar命令运行程序。但是,为了使该程序运行得更快,我需要增加Hadoop的堆大小。我尝试了以下,但它没有任何效果(我有hadoop版本2.5),即使在同一个终端。

export HADOOP_HEAPSIZE=16384
export HADOOP_OPTS="-Xmx16g"

我认为另一种方法是将以下内容添加到mapred-site.xml文件中,但遗憾的是我不是管理员,所以不能这样做。

<property>
    <name>mapred.child.java.opts</name>
    <value>-Xmx16384m</value>
</property>

还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

我通过修改HADOOP_CLIENT_OPTS环境变量解决了这个问题,如下所示。

export HADOOP_CLIENT_OPTS="-Xmx16g $HADOOP_CLIENT_OPTS"

请注意,我使用的程序仅在主节点上运行。换句话说,它不是分布式应用程序。

答案 1 :(得分:1)

使用适用于我的Hadoop jar时增加堆大小的一种方法:

HADOOP_CLIENT_OPTS="-XX:-UseGCOverheadLimit -Xmx16384m" hadoop jar parquetExample.jar 

如您所见,您在同一行且在16384m命令之前设置了环境变量的值(也适用于其他环境变量,在这种情况下,我将最大大小设置为hadoop jar)。