Amazon Elastic MapReduce引导操作无效

Shr*_*pai 3 hadoop mapreduce amazon-web-services amazon-emr elastic-map-reduce

我尝试了以下引导操作组合来增加我的作业的堆大小,但它们似乎都没有工作:

--mapred-key-value mapred.child.java.opts=-Xmx1024m 
--mapred-key-value mapred.child.ulimit=unlimited

--mapred-key-value mapred.map.child.java.opts=-Xmx1024m 
--mapred-key-value mapred.map.child.ulimit=unlimited

-m mapred.map.child.java.opts=-Xmx1024m
-m mapred.map.child.ulimit=unlimited 

-m mapred.child.java.opts=-Xmx1024m 
-m mapred.child.ulimit=unlimited 
Run Code Online (Sandbox Code Playgroud)

什么是正确的语法?

Ste*_*pel 7

您有两种方法可以实现此目的:

自定义JVM设置

为了应用自定义设置,您可能需要查看Amazon Elastic MapReduce(Amazon EMR)Bootstrap Actions文档,特别是配置守护进程的操作:

此预定义的引导操作允许您为Hadoop守护程序指定堆大小或其他Java虚拟机(JVM)选项.您可以使用此引导操作为需要比默认情况下Hadoop分配更多内存的大型作业配置Hadoop.您还可以使用此引导操作来修改高级JVM选项,例如垃圾回收行为.

还提供了一个示例,它将堆大小设置为2048并配置Java namenode选项:

$ ./elastic-mapreduce –create –alive \
  --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-daemons \
  --args --namenode-heap-size=2048,--namenode-opts=-XX:GCTimeRatio=19   
Run Code Online (Sandbox Code Playgroud)

预定义的JVM设置

或者,根据常见问题解答如何为我的作业流配置Hadoop设置?,如果你的工作流任务是内存密集型,您可以选择使用较少的任务,每个核心,并降低你的工作跟踪堆大小.对于这种情况,可以使用预定义的Bootstrap Action来配置启动时的作业流 - 这是指配置内存密集型工作负载的操作,它允许您将群集范围内的Hadoop设置设置为适合内存密集型作业流的值工作量,例如:

$ ./elastic-mapreduce --create \
--bootstrap-action \
  s3://elasticmapreduce/bootstrap-actions/configurations/latest/memory-intensive
Run Code Online (Sandbox Code Playgroud)

Hadoop内存密集型配置设置中列出了此预定义引导操作所应用的特定配置设置.

祝好运!