Java 如何告诉hadoop为单个映射器作业分配多少内存?

Java 如何告诉hadoop为单个映射器作业分配多少内存?,java,hadoop,mapreduce,amazon,elastic-map-reduce,Java,Hadoop,Mapreduce,Amazon,Elastic Map Reduce,我创建了一个弹性MapReduce作业,并试图优化其性能 目前,我正在尝试增加每个实例的映射器数量。我是通过mapred.tasktracker.map.tasks.max=X来实现的 elastic-mapreduce --create --alive --num-instance 3 \ --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop \ --args -s,mapred.tasktr

我创建了一个弹性MapReduce作业,并试图优化其性能

目前,我正在尝试增加每个实例的映射器数量。我是通过mapred.tasktracker.map.tasks.max=X来实现的

elastic-mapreduce --create --alive --num-instance 3 \
 --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop \
 --args -s,mapred.tasktracker.map.tasks.maximum=5
每次我尝试将X设置为每个小实例超过2,初始化都会失败,从中我得出结论,hadoop为每个map任务分配了800m内存。对我来说,这似乎太过分了。我希望最高400米

如何告诉hadoop为每个映射任务使用更少的内存?

检查属性。它默认为-Xmx200m,这意味着每个map/reduce任务有200MB的堆

看起来有1.7GB的内存。以下是TaskTracker节点上Hadoop进程的默认设置的内存。多亏了

数据节点1000 MB
Tasktracker 1000 MB
Tasktracker子映射任务400 MB(2*200 MB)
Tasktracker子映射任务400 MB(2*200 MB)

总数达到2800MB

除此之外,还有操作系统内存。选择更好的配置或更改默认设置。仅供参考,以下是不同节点的H/W配置的详细信息。

检查属性。它默认为-Xmx200m,这意味着每个map/reduce任务有200MB的堆

看起来有1.7GB的内存。以下是TaskTracker节点上Hadoop进程的默认设置的内存。多亏了

数据节点1000 MB
Tasktracker 1000 MB
Tasktracker子映射任务400 MB(2*200 MB)
Tasktracker子映射任务400 MB(2*200 MB)

总数达到2800MB


除此之外,还有操作系统内存。选择更好的配置或更改默认设置。仅供参考,以下是不同节点的H/W配置的详细信息。

您可以指定每个JVM应该使用多少内存,但必须在其自己的进程中运行每个任务才能做到这一点。您可以指定每个JVM应该使用多少内存,但必须在其自己的进程中运行每个任务才能做到这一点。