Apache Pig:无法运行我自己的pig.jar和pig-withouthadoop.jar [英] Apache Pig: unable to run my own pig.jar and pig-withouthadoop.jar

查看:116
本文介绍了Apache Pig:无法运行我自己的pig.jar和pig-withouthadoop.jar的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个运行Hadoop 0.20.2和Pig 0.10的群集。
我有兴趣在Pig的源代码中添加一些日志,并在集群上运行我自己的Pig版本。



我做了什么:


  1. 使用'ant'命令构建项目


  2. jar和pig-withouthadoop.jar


  3. 将jar复制到集群namenode上的Pig主目录中


  4. 运行一项工作


然后我得到以下标准输出:

  2013-03-25 06:35:05,226 [main] WARN org.apache.pig.backend.hadoop20.PigJobControl  - 回退到默认的JobControl(不是)
java.lang.Class.getDeclaredField中的runnerState
(Class.java:1882)
at org.apache.pig.backend.hadoop20。使用hadoop 0.20?)
java.lang.NoSuchFieldException:runnerState $ b $ at java.lang.Class.getDeclaredField(Class.java:1882)
at org.apache.pig.backend.hadoop20。 PigJobControl< clinit>(PigJobControl.java:51)
。在org.apache.pig.backend.hadoop.executionengine.shims.HadoopShims.newJobControl(HadoopShims.java:97)
。在org.apache .pig.backend.hadoop.exe cutionengine.mapReduceLayer.JobControlCompiler.compile(JobControlCompiler.java:287)
在org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher.launchPig(MapReduceLauncher.java:177)
。在组织。 apache.pig.PigServer.launchPlan(PigServer.java:1320)
at org.apache.pig.PigServer.executeCompiledLogicalPlan(PigServer.java:1305)
at org.apache.pig.PigServer.execute( PigServer.java:1295)
在org.apache.pig.PigServer.executeBatch(PigServer.java:375)
在org.apache.pig.PigServer.executeBatch(PigServer.java:353)$ b在org.apache.pig.tools.grunt.GruntParser.executeBatch(GruntParser.java:137)
$ b在org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:198)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:170)
at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:84)
在org.apache.pig.Main.run(Main.java:480)
在org.apache.pig.Main.main(Main.jav一:157)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
处sun.reflect.DelegatingMethodAccessorImpl sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
。 invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java: 208)
2013-03-25 06:35:05,229 [main] INFO org.apache.pig.tools.pigstats.ScriptState - 将猪脚本设置添加到作业
2013-03-25 06 :35:05260 [主要] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - mapred.job.reduce.markreset.buffer.percent未设置,设置为默认0.3
2013-03 -25 06:35:05,272 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - 将并行性设置为1
2013-03-25 06:35:06,041 [main] INFO org .apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - 创建jar文件Job9091543475518322185.jar
2013年3月25日06:35:10974 [主要] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - jar文件Job9091543475518322185.jar创建
2013 -03-25 06:35:10,995 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - 设置单店作业
2013-03-25 06:35:11,006 [main ] INFO org.apache.pig.data.SchemaTupleFrontend - 键[pig.schematuple]为false,不会生成代码。
2013-03-25 06:35:11,006 [main] INFO org.apache.pig.data.SchemaTupleFrontend - 将生成的代码移动到分布式cacche
2013-03-25 06:35: 11,006 [main] INFO org.apache.pig.data.SchemaTupleFrontend - 使用要反序列化的类设置键[pig.schematuple.class] []
2013-03-25 06:35:11,181 [main] ERROR org。 apache.pig.tools.grunt.Grunt - 错误2998:未处理的内部错误。 org.apache.hadoop.mapred.jobcontrol.JobControl.addJob(Lorg /阿帕奇/ hadoop的/ mapred / JobControl作业控制/作业;)Ljava /郎/字符串;



猪组曲线:



 错误2998:未处理的内部错误。 org.apache.hadoop.mapred.jobcontrol.JobControl.addJob(Lorg /阿帕奇/ hadoop的/ mapred / JobControl作业控制/作业;)Ljava /郎/字符串; 

java.lang.NoSuchMethodError:org.apache.hadoop.mapred.jobcontrol.JobControl.addJob(Lorg / apache / hadoop / mapred / jobcontrol / Job;)Ljava / lang / String;
处org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler.compile(JobControlCompiler.java:298)
。 launchPig(MapReduceLauncher.java:177)
在org.apache.pig.PigServer.launchPlan(PigServer.java:1320)
在org.apache.pig.PigServer.executeCompiledLogicalPlan(PigServer.java:1305)
在org.apache.pig.PigServer.execute(PigServer.java:1295)
在org.apache.pig.PigServer.executeBatch(PigServer.java:375)
在org.apache .pig.PigServer.executeBatch(PigServer.java:353)
在org.apache.pig.tools.grunt.GruntParser.executeBatch(GruntParser.java:137)
在org.apache.pig.tools .grunt.GruntParser.parseStopOnError(GruntParser.java:198)
在org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:170)
在org.apache.pig.tools .grunt.Grunt.exec(Grunt.java:84)
at org.apache.pig.Main.run(Main.java:480)在org.apache.pig.Main.main(Main.java:157)

在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在sun.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:39)美元,sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25 b $ b)
在java.lang.reflect.Method.invoke(Method.java:597)
在org.apache.hadoop.util.RunJar.main(RunJar.java:208)

什么去了错误?

帮助...

我应该做其他事情,除了在namenode的安装目录中替换pig.jar和pig-withouthadoop.jar吗? div class =h2_lin>解决方案

我错过的观点是:pig-withouthadoop.jar应该使用特定的Hadoop版本进行编译。
我按照以下方式编译了jar,它工作正常:

 %ant clean jar-withouthadoop -Dhadoopversion = 23 


I have a cluster running Hadoop 0.20.2 and Pig 0.10. I'm interested to add some logs to Pig's source code and to run my own Pig version on the cluster.

What I did:

  1. built the project with 'ant' command

  2. got pig.jar and pig-withouthadoop.jar

  3. copied the jars to Pig home directory on the cluster's namenode

  4. run a job

Then I've got following std output:

2013-03-25 06:35:05,226 [main] WARN  org.apache.pig.backend.hadoop20.PigJobControl -   falling back to default JobControl (not using hadoop 0.20 ?)
java.lang.NoSuchFieldException: runnerState
    at java.lang.Class.getDeclaredField(Class.java:1882)
    at org.apache.pig.backend.hadoop20.PigJobControl.<clinit>(PigJobControl.java:51)
    at  org.apache.pig.backend.hadoop.executionengine.shims.HadoopShims.newJobControl(HadoopShims.java:97)
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler.compile(JobControlCompiler.java:287)
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher.launchPig(MapReduceLauncher.java:177)
    at org.apache.pig.PigServer.launchPlan(PigServer.java:1320)
    at org.apache.pig.PigServer.executeCompiledLogicalPlan(PigServer.java:1305)
    at org.apache.pig.PigServer.execute(PigServer.java:1295)
    at org.apache.pig.PigServer.executeBatch(PigServer.java:375)
    at org.apache.pig.PigServer.executeBatch(PigServer.java:353)
    at org.apache.pig.tools.grunt.GruntParser.executeBatch(GruntParser.java:137)
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:198)
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:170)
    at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:84)
    at org.apache.pig.Main.run(Main.java:480)
    at org.apache.pig.Main.main(Main.java:157)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at  sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:208)
2013-03-25 06:35:05,229 [main] INFO  org.apache.pig.tools.pigstats.ScriptState - Pig script settings are added to the job
2013-03-25 06:35:05,260 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - mapred.job.reduce.markreset.buffer.percent is not set, set to default 0.3
2013-03-25 06:35:05,272 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - Setting Parallelism to 1
2013-03-25 06:35:06,041 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - creating jar file Job9091543475518322185.jar
2013-03-25 06:35:10,974 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - jar file Job9091543475518322185.jar created
2013-03-25 06:35:10,995 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - Setting up single store job
2013-03-25 06:35:11,006 [main] INFO  org.apache.pig.data.SchemaTupleFrontend - Key [pig.schematuple] is false, will not generate code.
2013-03-25 06:35:11,006 [main] INFO  org.apache.pig.data.SchemaTupleFrontend - Starting process to move generated code to distributed cacche
2013-03-25 06:35:11,006 [main] INFO  org.apache.pig.data.SchemaTupleFrontend - Setting key [pig.schematuple.classes] with classes to deserialize []
2013-03-25 06:35:11,181 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2998: Unhandled internal error. org.apache.hadoop.mapred.jobcontrol.JobControl.addJob(Lorg/apache/hadoop/mapred/jobcontrol/Job;)Ljava/lang/String;

Pig Stack Trace:

ERROR 2998: Unhandled internal error. org.apache.hadoop.mapred.jobcontrol.JobControl.addJob(Lorg/apache/hadoop/mapred/jobcontrol/Job;)Ljava/lang/String;

java.lang.NoSuchMethodError: org.apache.hadoop.mapred.jobcontrol.JobControl.addJob(Lorg/apache/hadoop/mapred/jobcontrol/Job;)Ljava/lang/String;
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler.compile(JobControlCompiler.java:298)
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher.launchPig(MapReduceLauncher.java:177)
    at org.apache.pig.PigServer.launchPlan(PigServer.java:1320)
    at org.apache.pig.PigServer.executeCompiledLogicalPlan(PigServer.java:1305)
    at org.apache.pig.PigServer.execute(PigServer.java:1295)
    at org.apache.pig.PigServer.executeBatch(PigServer.java:375)
    at org.apache.pig.PigServer.executeBatch(PigServer.java:353)
    at org.apache.pig.tools.grunt.GruntParser.executeBatch(GruntParser.java:137)
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:198)
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:170)
    at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:84)
    at org.apache.pig.Main.run(Main.java:480)
    at org.apache.pig.Main.main(Main.java:157)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:208)

what went wrong? Should I do anything else except replacing pig.jar and pig-withouthadoop.jar in installation directory of namenode?

help...

解决方案

the point I missed was: pig-withouthadoop.jar should be compiled with specific Hadoop version. I compiled the jar in following way and it worked:

% ant clean jar-withouthadoop -Dhadoopversion=23

这篇关于Apache Pig:无法运行我自己的pig.jar和pig-withouthadoop.jar的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆