【问题标题】:Error while running Hive Action in Oozie在 Oozie 中运行 Hive Action 时出错
【发布时间】:2013-08-24 13:03:13
【问题描述】:

我正在尝试通过 Oozie 运行配置单元操作。我的workflow.xml如下:

<workflow-app name='edu-apollogrp-dfe' xmlns="uri:oozie:workflow:0.1">
    <start to="HiveEvent"/>
    <action name="HiveEvent">
            <hive xmlns="uri:oozie:hive-action:0.2">
                    <job-tracker>${jobTracker}</job-tracker>
                    <name-node>${nameNode}</name-node>
                    <configuration>
                            <property>
                                    <name>oozie.hive.defaults</name>
                                    <value>${hiveConfigDefaultXml}</value>
                            </property>
                    </configuration>
                    <script>${hiveQuery}</script>
                    <param>OUTPUT=${StagingDir}</param>
            </hive>

            <ok to="end"/>
            <error to="end"/>
    </action>

    <kill name='kill'>
                    <message>Hive failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name='end'/>

这是我的 job.properties 文件:

oozie.wf.application.path=${nameNode}/user/${user.name}/hiveQuery
oozie.libpath=${nameNode}/user/${user.name}/hiveQuery/lib
queueName=interactive

#QA
nameNode=hdfs://hdfs.bravo.hadoop.apollogrp.edu
jobTracker=mapred.bravo.hadoop.apollogrp.edu:8021

# Hive

hiveConfigDefaultXml=/etc/hive/conf/hive-default.xml

hiveQuery=hiveQuery.hql
StagingDir=${nameNode}/user/${user.name}/hiveQuery/Output

当我运行这个工作流时,我最终得到了这个错误:

ACTION[0126944-130726213131121-oozie-oozi-W@HiveEvent] Launcher exception: org/apache/hadoop/hive/cli/CliDriver
java.lang.NoClassDefFoundError: org/apache/hadoop/hive/cli/CliDriver

Error Code: JA018

Error Message: org/apache/hadoop/hive/cli/CliDriver

我不确定这个错误是什么意思。我哪里错了?

编辑

This link 表示错误代码 JA018 是:JA018 is output directory exists error in workflow map-reduce action。但在我的情况下,输出目录不存在。这让事情变得更加混乱

【问题讨论】:

    标签: hadoop mapreduce hive oozie


    【解决方案1】:

    我知道出了什么问题!

    执行 Hive 操作需要类 org/apache/hadoop/hive/cli/CliDriver。从错误消息中可以明显看出这一点。这个类在这个 jar 文件中:hive-cli-0.7.1-cdh3u5.jar。 (在我的 cloudera 版本中,我的情况是 cdh3u5)。

    Oozie 在ShareLib 目录中检查这个jar。这个目录的位置通常配置在hive-site.xml,属性名称为oozie.service.WorkflowAppService.system.libpath,所以Oozie应该很容易找到jar。

    但在我的例子中,hive-site.xml 没有包含这个属性,所以 Oozie 不知道在哪里可以找到这个 jar,因此使用了 java.lang.NoClassDefFoundError

    为了解决这个问题,我必须在我的 job.properties 文件中包含一个参数,以将 oozie 指向 ShareLib 目录的位置,如下所示: oozie.libpath=${nameNode}/user/oozie/share/lib。 (取决于SharedLib 目录在集群上的配置位置)。

    这消除了错误!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-27
      • 2020-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      相关资源
      最近更新 更多