【问题标题】:Oozie shell action memory limitOozie shell 动作内存限制
【发布时间】: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。 两者都没有任何效果。

【问题讨论】:

    标签: oozie hadoop-yarn


    【解决方案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您的答案添加解释,并说明适用的限制和假设。
      • 配置需要在操作部分。不在工作流部分。对吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-05
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多