从Eclipse运行hadoop作业时出错

时间:2013-09-03 09:13:15

标签: java eclipse hadoop mapreduce hbase

在尝试从eclipse在我们的Hadoop集群上启动mapreduce作业时,我遇到了一些问题。我添加了一个名为“conf”的文件夹作为类文件夹,在该文件夹下,我导入了“core-site.xml”,“hdfs-site.xml”,“mapred-site.xml”和“hbase-site” .XML”。我的hadoop集群运行Hadoop 0.20.205.0,HBase-0.94.1。我们可以使用“hadoop jar”命令将作业成功提交到cluser。由于这非常麻烦,我想设置eclipse,这样我就可以通过运行程序将Hadoop作业提交到集群。

在我向项目添加所需的依赖项之后,当我运行示例“PiEstimator.java”(Hadoop-0.20.205.0)时,我收到以下异常。

地图数量= 4 每个地图的样本= 4 线程“main”中的异常org.apache.hadoop.ipc.RemoteException:java.io.IOException:java.lang.NoSuchMethodException:org.apache.hadoop.hdfs.protocol.ClientProtocol.create(java.lang.String,org。 apache.hadoop.fs.permission.FsPermission,java.lang.String,boolean,boolean,short,long)     在java.lang.Class.getMethod(Class.java:1632)     在org.apache.hadoop.ipc.RPC $ Server.call(RPC.java:557)     在org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:1388)     在org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:1384)     at java.security.AccessController.doPrivileged(Native Method)     在javax.security.auth.Subject.doAs(Subject.java:396)     在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)     在org.apache.hadoop.ipc.Server $ Handler.run(Server.java:1382)

at org.apache.hadoop.ipc.Client.call(Client.java:1066)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:225)
at com.sun.proxy.$Proxy1.create(Unknown Source)
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.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59)
at com.sun.proxy.$Proxy1.create(Unknown Source)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.<init>(DFSClient.java:3245)
at org.apache.hadoop.hdfs.DFSClient.create(DFSClient.java:713)
at org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:182)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:555)
at org.apache.hadoop.io.SequenceFile$Writer.<init>(SequenceFile.java:892)
at org.apache.hadoop.io.SequenceFile.createWriter(SequenceFile.java:393)
at org.apache.hadoop.io.SequenceFile.createWriter(SequenceFile.java:284)
at com.amazon.seo.mapreduce.examples.PiEstimator.estimate(PiEstimator.java:265)
at com.amazon.seo.mapreduce.examples.PiEstimator.run(PiEstimator.java:325)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at com.amazon.seo.mapreduce.examples.PiEstimator.main(PiEstimator.java:333)

你能帮我理解我的设置有哪些部分是错的以及如何修复它?

2 个答案:

答案 0 :(得分:0)

您能解决此问题吗? 我已经用ClassDefinition解决了类似的错误,如下所示: 将Jar创建为可运行的Java文件(文件&gt;&gt;导出&gt;&gt;可运行的Java文件) export HADOOP_CLASSPATH =

这将使hadoop从你的jar文件中拾取正确的类。

答案 1 :(得分:0)

不幸的是,我相信您必须将Hadoop的版本升级到至少2.5.0