从 ozzie hadoop 运行 install pig

Posted

技术标签:

【中文标题】从 ozzie hadoop 运行 install pig【英文标题】:Run install pig from ozzie hadoop 【发布时间】:2015-08-19 11:47:21 【问题描述】:

我已经在我的系统上安装了 oozie,我也安装了 pig。现在我希望 ozzie 从安装在我的系统上的 pig 运行工作流,而不是从 ozzie sharelib。请帮忙,因为我收到以下错误:

2015-08-19 17:15:25,724  WARN PigActionExecutor:523 - SERVER[edb-node1] USER[hduser] GROUP[-] TOKEN[] APP[pig-wf] JOB[0000002-150819170943510-oozie-hdus-W] ACTION[0000002-150819170943510-oozie-hdus-W@pig-node] Launcher ERROR, reason: Main class [org.apache.oozie.action.hadoop.PigMain], exception invoking main(), java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.PigMain not found
2015-08-19 17:15:25,728  WARN PigActionExecutor:523 - SERVER[edb-node1] USER[hduser] GROUP[-] TOKEN[] APP[pig-wf] JOB[0000002-150819170943510-oozie-hdus-W] ACTION[0000002-150819170943510-oozie-hdus-W@pig-node] Launcher exception: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.PigMain not found
java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.PigMain not found
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2074)
    at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:234)
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:450)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
    at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler.runSubtask(LocalContainerLauncher.java:370)
    at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler.runTask(LocalContainerLauncher.java:295)
    at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler.access$200(LocalContainerLauncher.java:181)
    at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler$1.run(LocalContainerLauncher.java:224)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.PigMain not found
    at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1980)
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2072)
    ... 13 more

【问题讨论】:

请格式化你的stacktracke 【参考方案1】:

您收到的错误消息清楚地表明您的 CLASSPATH 不完整。

这是因为 pig 命令行做了很多事情,其中​​包括在调用 PigMain Java 类之前在 CLASSPATH 中静默设置适当的 Pig JAR。但是 Oozie 直接调用 Java 类;应该处理 CLASSPATH 问题...

由 Pig ShareLib 激活时 或者由您作为知识渊博的 Java 开发人员 - 毕竟,这是您的 选择不使用默认方式运行 Pig,所以你知道你在做什么 正在做,对吧?

在提出您的问题之前,您是否尝试使用以下关键字在 ***(和/或 Google)上进行搜索?结果可能证明是有用的。

oozie pig 自定义类路径

【讨论】:

我如何告诉 oozie 使用我在我的系统上安装的 pig 例如我已经安装了带有 pig 版本 1.12 的 ozzie 并且在我的系统中我已经安装了 pig 1.14 版本(版本 pig 1.14 )可用在命令行上现在我想要什么如果我运行工作流然后 ozzie 将调用安装在我的系统上的 Pig 版本 1.14)让我在我的 oozie 配置中有什么变化 用新的 JAR 创建另一个 Oozie ShareLib 怎么样? “Pig14”,然后在 Oozie Action 中显式调用 ShareLib(为此有一个 <property>)?【参考方案2】:

在上述情况下,您是否检查过您是否能够访问 Pig CLI grunt shell 或者您是否能够在不使用 Oozie 的情况下手动运行 Pig 脚本。

发生的情况是 Pig Jar 在您尝试通过 Oozie 使用时无法访问,避免此类问题的最佳情况是使用 Oozie - -ShareLib ,但正如您提到的那样,您不希望使用 sharedlib 进行相同的工作,然后使用一些替代案例,例如:

    在 Hadoop ClassPath 中更新 Pig 主路径。这些将帮助 MR 每次 Oozie 向 MR 提交请求时获取 HDFS Temp Location 中的 Jars 列表。

    在 BashProfile 中更新 Pig Home 如果 Pig 在访问 GRANT Shell 时显示错误且未找到命令。

希望这些对一些人有所帮助。

【讨论】:

我如何告诉 oozie 使用我在我的系统上安装的 pig 例如我已经安装了带有 pig 版本 1.12 的 ozzie 并且在我的系统中我已经安装了 pig 1.14 版本(版本 pig 1.14 )可用在命令行上现在我想要什么如果我运行工作流然后 ozzie 将调用安装在我的系统上的 Pig 版本 1.14)让我在我的 oozie 配置中有什么变化

以上是关于从 ozzie hadoop 运行 install pig的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop安装 --- 简易安装JDK

在centos7上安装hadoop

Red Hat Enterprise 8.4 Install Hadoop3+Hive3集群部署

大数据---Hadoop安装jdk简易版

install hadoop on xubuntu

hadoop install