Oozie pig action 更改工作 jar 的番石榴依赖项

Posted

技术标签:

【中文标题】Oozie pig action 更改工作 jar 的番石榴依赖项【英文标题】:Oozie pig action change guava dependency for job jar 【发布时间】:2014-08-06 23:32:06 【问题描述】:

如何配置 oozie pig 操作以优先考虑 user.classpath ? 猪版本0.10.0-cdh4.2.1

都试过了

mapreduce.task.classpath.user.precedence
mapreduce.task.classpath.first
mapreduce.job.user.classpath.first
mapreduce.user.classpath.first

作为 pig 操作的配置设置的一部分。

<action name="my_action">
    <pig>
        <configuration>
             <property>
                  <name>mapreduce.job.user.classpath.first</name>
                   <value>true</value>
              </property>

但它们似乎都不起作用。 问题是猪(不知何故)依赖于番石榴11,而我的工作依赖于番石榴13。我想首先在类路径中推送我的工作罐子。 编辑:我认为依赖 guava11 是 oozie

不能让它工作吗?任何指针?

添加更多信息: 浏览日志后,我看到

mapred.job.classpath.files // has guava13 first in the classpath
mapred.cachefiles // has guava13 first in the classpath

但是,当 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher 启动作业时;然后 Zookeeper 的 JobControl 日志在类路径中首先有 guava 11

[JobControl] INFO  org.apache.zookeeper.ZooKeeper  - Client environment:java.class.path= // has guava 11 first in the classpath !

【问题讨论】:

【参考方案1】:

它不是为 mapreduce 作业本身,而是为您启动 mapreduce 作业的 oozie 启动器。所以你应该改用下面的。

<property> <name>oozie.launcher.mapreduce.job.user.classpath.first</name> <value>true</value> </property>

【讨论】:

【参考方案2】:

以下设置应该可以解决您的问题。

            <property>
                    <name>mapreduce.job.classloader</name>
                    <value>true</value>
            </property>

【讨论】:

【参考方案3】:

用于 oozie/猪/蜂巢

<property>
    <name>oozie.launcher.mapreduce.task.classpath.user.precedence</name>
    <value>true</value>
</property>
<property>
    <name>mapreduce.task.classpath.user.precedence</name>
    <value>true</value>
</property>

【讨论】:

以上是关于Oozie pig action 更改工作 jar 的番石榴依赖项的主要内容,如果未能解决你的问题,请参考以下文章

oozie说明(本文参考多处,自己留看)

如何在 oozie 中将 pig 选项作为参数传递?

使用 Pig、Hive 和 unix 的 Oozie 工作流程

在 Cloudera Hue 中为 Oozie(调用 PIG 脚本)配置正确的端口

Pig Cassandra 使用 oozie 处理非常缓慢(心跳)

如何使用 oozie 启动 N 次脚本 Pig?