OOZIE HIVE 操作 - workflow.xml 属性不会传递给子任务

Posted

技术标签:

【中文标题】OOZIE HIVE 操作 - workflow.xml 属性不会传递给子任务【英文标题】:OOZIE HIVE Action - The workflow.xml properties are not passed on to child tasks 【发布时间】:2018-06-27 12:27:31 【问题描述】:

我们在 oozie 中有一个 hive 操作,我们正在覆盖工作流中一些默认的 mapred 属性。

由 hive 操作触发的子任务具有属性的默认值,而不是工作流中配置的值。 jobtracker 中每个子作业生成的 job.xml 仅显示默认值。

如何确保所有由 hive 操作启动的子任务都从 workflow.xml 中获取属性。

以下是来自 workflow.xml 的配置单元操作:

<action name="Hive">
    <hive>
        <job-tracker>$job_tracker</job-tracker>
        <name-node>$name_node</name-node>
        <script>$wf:actionData('Query')['Location']</script>
         <param>JOBDIR=$jobDir</param>            
        <configuration>             
            <property> 
                <name>oozie.launcher.mapred.child.java.opts</name> 
                <value>-Xmx512m</value> 
            </property>                 
            <property> 
                <name>mapred.map.child.java.opts</name> 
                <value>-Xmx1024m</value> 
            </property> 
            <property> 
                <name>mapred.reduce.child.java.opts</name> 
                <value>-Xmx1024m</value> 
            </property>
                  <name>mapred.max.split.size</name>
                  <value>2560000</value>
                  <description>Largest valid size in bytes for a file split.
                        This should be set to a small multiple of the block size in bytes
                  </description> 
            </property>             
        </configuration>            
    </hive>

【问题讨论】:

您可以在 HQL 脚本中调整 Hive 参数,但不能在 Oozie 工作流中调整。请注意,在最新的 Hadoop 发行版中,oozie Hive 操作已弃用并由 Hive2 (oozie.apache.org/docs/4.2.0/DG_Hive2ActionExtension.html) 取代。 【参考方案1】:

尝试使用

mapred.map.child.java.opts -> mapreduce.map.java.opts
mapred.reduce.child.java.opts -> mapreduce.reduce.java.opts
mapred.max.split.size -> mapreduce.input.fileinputformat.split.maxsize

我认为“oozie.launcher.mapred.child.java.opts”工作正常。

【讨论】:

以上是关于OOZIE HIVE 操作 - workflow.xml 属性不会传递给子任务的主要内容,如果未能解决你的问题,请参考以下文章

工作流引擎Oozie:workflow

HUE中Oozie执行Hive脚本

oozie中如何rerun一个workflow

OOZIE:在 global job-xml 中引用的文件中定义的属性在 workflow.xml 中不可见

Oozie Workflow EL 函数 timestamp() 不给出秒数

我需要在oozie 中的workflow.xml 和job.properties 中提供配置吗?