Oozie shell 动作内存限制
Posted
技术标签:
【中文标题】Oozie shell 动作内存限制【英文标题】:Oozie shell action memory limit 【发布时间】:2014-06-17 11:43:34 【问题描述】:我们有一个带有 shell 操作的 oozie 工作流,它需要比 Yarn 默认提供的映射任务更多的内存。
我们怎样才能给它更多的内存?
我们已尝试将以下配置添加到操作中:
<configuration>
<property>
<name>mapreduce.map.memory.mb</name>
<value>6144</value> <!-- for example -->
</property>
</configuration>
我们已将其设置为内联(在 workflow.xml 中)配置和 jobXml。 两者都没有任何效果。
【问题讨论】:
【参考方案1】:我们找到了答案:
shell 操作作为 oozie “启动器”映射任务执行,此任务不使用正常的配置属性。
相反,您必须在属性前加上“oozie.launcher”,以使它们应用于启动器任务。
所以在我们的例子中,如果我们对 shell 操作使用以下配置,它就可以工作。
<configuration>
<property>
<name>oozie.launcher.mapreduce.map.memory.mb</name>
<value>6144</value> <!-- for example -->
</property>
</configuration>
这在 oozie 文档中并不明显。 我们在这里找到了这个: http://downright-amazed.blogspot.com/2012/02/configure-oozies-launcher-job.html
【讨论】:
【参考方案2】:谢谢你的意见, 只需编辑 workflow.xml 文件,添加:
<workflow-app name="simple-ONE-wf" xmlns="uri:oozie:workflow:0.1">
<start to='ONE'/>`enter code here
<action name="ONE">
<spark xmlns="uri:oozie:spark-action:0.1">
<job-tracker>$jobTracker</job-tracker>
<name-node>$nameNode</name-node>
<configuration>
<property>
<name>oozie.launcher.mapreduce.map.memory.mb</name>
<value>4096</value>
</property>
<property>
<name>oozie.launcher.mapreduce.map.java.opts</name>
<value>-Xmx3200m</value>
</property>
<property>
<name>oozie.launcher.mapreduce.map.java.opts</name>
<value>-XX:MaxPermSize=1g</value>
</property>
...
</configuration>
...
</action>
<kill name='kill'>
<message>Something went wrong: $wf:errorCode('firstdemo')</message>
</kill>
<end name='end'/>
</workflow-app>
【讨论】:
与 3 年前发布的(更清晰的,IMO)现有答案相比,此答案的附加值是多少? 更多细节,很清楚,可以用,我遇到perm OOM,只添加内存没有用,必须添加opts并设置-XX:MaxPermSize=1g 哇,如果您的目标是 Java 7 或更早版本。 Java 8 甚至在这个问题被问到之前就已经发布了。请在您的回答中明确说明,说明它有何不同以及可以在何处/何时使用。 感谢您提供此代码 sn-p,它可能会提供一些即时帮助。一个正确的解释would greatly improve 其教育价值通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有类似但不相同的问题的读者更有用。请edit您的答案添加解释,并说明适用的限制和假设。 配置需要在操作部分。不在工作流部分。对吗?以上是关于Oozie shell 动作内存限制的主要内容,如果未能解决你的问题,请参考以下文章