-->

亚马逊弹性MapReduce引导操作不工作(Amazon Elastic MapReduce Boo

2019-07-28 20:00发布

我试图引导行动,以提高我的工作,但他们都不工作的堆大小的以下组合:

--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 

什么是正确的语法?

Answer 1:

你有两个选择来实现这一目标:

自定义JVM设置

为了应用自定义设置,你可能想看看在引导操作文档亚马逊弹性MapReduce(EMR亚马逊) ,具体操作配置守护程序 :

这个预定义的引导作用,可以指定堆大小或其他Java虚拟机(JVM)选项Hadoop守护进程。 您可以使用此引导操作来配置Hadoop的为需要更多的内存比Hadoop的分配默认大的作业。 您也可以使用此引导行动来修改高级JVM选项,如垃圾收集行为。

一个例子被提供,以及,它设置堆大小为2048,并配置在Java名称节点选项

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

预定义的JVM设置

另外,按照常见问题如何为我的工作流配置Hadoop的设置? 如果你的工作流任务是内存密集型,您可以选择使用较少的任务,每个核心,并降低你的工作跟踪堆大小。 对于这种情况,一个预定义的引导操作可在启动时配置你的工作流 -这是指动作配置内存密集型工作负载 ,它允许您设置群集范围的Hadoop设置为适合工作的值与内存密集型流工作负荷 ,例如:

$ ./elastic-mapreduce --create \
--bootstrap-action \
  s3://elasticmapreduce/bootstrap-actions/configurations/latest/memory-intensive

通过该预定的引导作用所施加的特定的配置设置中列出的Hadoop内存密集型配置设置 。

祝好运!



Answer 2:

斯蒂芬的回答是好和作品。 在另一方面,如果你只是想要快速和肮脏的,只是想更换一个或两个变量,那么你很可能通过寻找类似下面的命令行只是改变它:

elastic-mapreduce --create \
--bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop \
  --args "-m,mapred.child.java.opts=-Xmx999m"

我已经看到了另一个文档,尽管一老一,简单地引用类似以下引号内的整个表达式:

--bootstrap-action "s3://elasticmapreduce/bootstrap-actions/configure-hadoop -m \
    mapred.child.java.opts=-Xmx999m"    ### I tried this style, it no longer works!

无论如何,这是不容易的发现在AWS EMR文档 。 我怀疑mapred.child.java.opts是最重写variables--我也一直在寻找答案时,我得到一个错误的GC之一:“java.lang.OutOfMemoryError:GC开销超限”跌跌撞撞此页面上。 200米默认就是太小( 在默认的文档 )。

祝好运!



文章来源: Amazon Elastic MapReduce Bootstrap Actions not working