【发布时间】:2015-10-26 18:59:55
【问题描述】:
我在远程集群上运行 hadoop 2.2.0,在单独的机器上运行 Pig 0.12。我需要让 Pig 与 hadoop 通信,第一步似乎是用 hadoop 2.2.0 构建 Pig 0.12。这是我所做的:
- 在 ivy/libraries.properties 中将 hadoop-core.version、hadoop-common.version、hadoop-hdfs.version、hadoop-mapreduce.version 更改为 2.2.0。
- 在 ivy.xml 中,将 hadoop-core 依赖项替换为 hadoop-client 依赖项。
- 使用“ant clean jar-all -Dhadoopversion=23”构建 pig
当我从命令行运行“pig”时,出现以下错误:
ERROR 2998: Unhandled internal error. org/apache/hadoop/hdfs/DistributedFileSystem
java.lang.NoClassDefFoundError: org/apache/hadoop/hdfs/DistributedFileSystem
at org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.init(HExecutionEngine.java:173)
at org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.init(HExecutionEngine.java:122)
at org.apache.pig.impl.PigContext.connect(PigContext.java:301)
at org.apache.pig.PigServer.<init>(PigServer.java:222)
at org.apache.pig.PigServer.<init>(PigServer.java:207)
at org.apache.pig.tools.grunt.Grunt.<init>(Grunt.java:47)
at org.apache.pig.Main.run(Main.java:538)
at org.apache.pig.Main.main(Main.java:156)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hdfs.DistributedFileSystem
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
【问题讨论】:
-
我认为您采取了不必要的步骤。根据我的经验,只需在新下载的源文件夹中运行
ant jar-withouthadoop –Dhadoopversion=23就足够了。
标签: hadoop apache-pig