0

尝试从 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”命令成功地将作业提交给集群。由于这非常麻烦,我想设置 Eclipse,以便我可以通过运行程序将 Hadoop 作业提交到集群。

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

地图数量 = 每个地图 4 个样本 = 4 线程“主”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) at java.lang.Class.getMethod(Class.java:1632) at 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) at javax.security.auth.Subject.doAs(Subject.java:396) at org.apache.hadoop。 security.UserGroupInformation.doAs(UserGroupInformation.java:1059) at 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)

你能帮我了解我的设置的哪一部分是错误的以及如何解决它吗?

4

2 回答 2

0

你能解决这个问题吗?我用 ClassDefinition 解决了类似的错误,如下所示: Create Jar as a Runnable Java File (File >> Export >> Runnable Java File) export HADOOP_CLASSPATH =

这将使 hadoop 从您的 jar 文件中获取正确的类。

于 2013-11-06T13:31:16.310 回答
0

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

于 2015-04-24T16:37:31.337 回答