Pig 0.13 错误 2998:未处理的内部错误。 org/apache/hadoop/mapreduce/task/JobContextImpl

Posted

技术标签:

【中文标题】Pig 0.13 错误 2998:未处理的内部错误。 org/apache/hadoop/mapreduce/task/JobContextImpl【英文标题】:Pig 0.13 ERROR 2998: Unhandled internal error. org/apache/hadoop/mapreduce/task/JobContextImpl 【发布时间】:2014-08-03 18:23:50 【问题描述】:

刚刚安装了 Pig 0.13,我正在尝试将它与 Hadoop 1.1.2 一起使用。 (Pig 文档指出 Pig 0.13 与 Hadoop 1.1.2 兼容)。根据 Pig 安装说明,我设置了 $PIG_CLASSPATH 指向定义 core-site.xml、hdfs-site.xml 和 mapred-site.xml 的 /etc/hadoop。 Hadoop 集群可以正常工作,并且适用于非 Pig 作业。根据下面的错误描述,我了解到 Pig 找不到它正在寻找的 JobContextImpl 类。

根据 Hadoop 1.1.2 API 文档,我不认为“task”是“mapreduce”包的子包。我尝试将 hadoop-core-1.1.2.jar 直接添加到 $PIG_CLASSPATH 那没有用。 (在查看了 hadoop-core-1.1.2.jar 的内容和 Hadoop 1.1.2 API 文档之后,我不相信 JobContextImpl 是在 Pig 试图从中加载它的包中定义的)。如何让 Pig 0.13 与 Hadoop 1.1.2 一起使用?

=======错误如下=======

14/08/03 14:01:05 INFO pig.ExecTypeProvider: Trying ExecType : LOCAL
14/08/03 14:01:05 INFO pig.ExecTypeProvider: Trying ExecType : MAPREDUCE
14/08/03 14:01:05 INFO pig.ExecTypeProvider: Picked MAPREDUCE as the ExecType
2014-08-03 14:01:05,959 [main] INFO  org.apache.pig.Main - Apache Pig version 0.13.0 (r1606446) compiled Jun 29 2014, 02:27:58
2014-08-03 14:01:05,959 [main] INFO  org.apache.pig.Main - Logging error messages to: /home/hadoop/pig-0.13.0/bin/pig_1407088865958.log
2014-08-03 14:01:06,112 [main] INFO  org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://master.localdomain:8020/
2014-08-03 14:01:06,388 [main] INFO  org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to map-reduce job tracker at: master.localdomain:8021
2014-08-03 14:01:06,440 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2998: Unhandled internal error. org/apache/hadoop/mapreduce/task/JobContextImpl
Details at logfile: /home/hadoop/pig-0.13.0/bin/pig_1407088865958.log
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.apache.pig.tools.pigstats.PigStatsUtil
    at org.apache.pig.Main.run(Main.java:643)
    at org.apache.pig.Main.main(Main.java:156)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:156)

===pig_1407088865958.log的内容===

猪栈跟踪

ERROR 2998: Unhandled internal error. org/apache/hadoop/mapreduce/task/JobContextImpl
java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/task/JobContextImpl
    at org.apache.pig.tools.pigstats.PigStatsUtil.<clinit>(PigStatsUtil.java:68)
    at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:79)
    at org.apache.pig.Main.run(Main.java:510)
    at org.apache.pig.Main.main(Main.java:156)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.mapreduce.task.JobContextImpl
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 9 more

【问题讨论】:

你为 Hadoop 1.x 编译 pig 了吗? 下载了二进制文件和源代码。文档中没有任何地方声明需要重新编译。事实上,Pig 0.13.0 的网站声明它与 1.1.2 兼容。在我寻求帮助的过程中,我看到一些帖子说它需要用一个指示版本的参数重新编译。我看到的参数值是23,24。我不知道该参数如何映射到我使用的 1.1.2 的 hadoop 版本。我破解了 bin/pig 脚本以指向 hadoop-core-1.1.2.jar。该脚本需要设置 HADOOP_HOME(已弃用)。不想使用已弃用的变量。 这对你有用吗?对我来说,当我尝试手动指向 hadoop-core jar 时,它仍然失败。 有人找到解决方案了吗?我遇到了同样的错误。 Hadoop 已安装 1.2.1,pig 版本为 0.13.0 【参考方案1】:

虽然不清楚这对每个人的效果如何,但提问者似乎提到了他是如何解决问题的:

在我寻求帮助的过程中,我看到帖子说需要 使用指示版本的参数重新编译。参数 我看到的值是 23,24。我不知道该参数如何映射到 我正在使用 1.1.2 的 hadoop 版本。我黑了垃圾箱/猪 脚本指向 hadoop-core-1.1.2.jar。脚本需要 设置 HADOOP_HOME(已弃用)。

【讨论】:

以上是关于Pig 0.13 错误 2998:未处理的内部错误。 org/apache/hadoop/mapreduce/task/JobContextImpl的主要内容,如果未能解决你的问题,请参考以下文章

运行 pig 0.7.0 错误:错误 2998:未处理的内部错误

Pig ERROR 2998:未处理的内部错误。静态(错误名称:com/company/Static)

Pig ERROR 2998:未处理的内部错误(错误名称 MY_CLASS_NAME)

错误 2998:未处理的内部错误。空 - 阿帕奇猪

Pig 未运行:未处理的内部错误。 jline.Terminal.getTerminal()Ljline/终端;

未处理的内部错误。在 pig 中使用 EXPLAIN 时的 Java 堆空间