有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从Eclipse运行hadoop作业时发生java错误

在尝试从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。我们能够使用“hadoopjar”命令成功地将作业提交给集群。由于这非常麻烦,我想设置eclipse,这样我就可以通过运行程序将Hadoop作业提交到集群

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

地图数量=4 每个地图的样本数=4 线程“main”组织中出现异常。阿帕奇。hadoop。ipc。RemoteException:java。木卫一。IOException:java。lang.NoSuchMethodException:org。阿帕奇。hadoop。hdfs。协议客户协议。创建(java.lang.String、org.apache.hadoop.fs.permission.FsPermission、java.lang.String、boolean、boolean、short、long) 在爪哇。朗朗,上课。getMethod(Class.java:1632) 在org。阿帕奇。hadoop。ipc。RPC$Server。调用(RPC.java:557) 在org。阿帕奇。hadoop。ipc。服务器$Handler$1。运行(Server.java:1388) 在org。阿帕奇。hadoop。ipc。服务器$Handler$1。运行(Server.java:1384) 在爪哇。安全访问控制器。doPrivileged(本机方法) 在javax。安全auth。主题doAs(Subject.java:396) 在org。阿帕奇。hadoop。安全用户组信息。doAs(UserGroupInformation.java:1059) 在org。阿帕奇。hadoop。ipc。服务器$Handler。运行(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) 个答案

  1. # 1 楼答案

    你能解决这个问题吗? 我已经用ClassDefinition解决了类似的错误,如下所示: 将Jar创建为可运行的Java文件(File>;>;Export>;>;可运行的Java文件) 导出HADOOP_类路径=

    这将使hadoop能够从jar文件中提取正确的类

  2. # 2 楼答案

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