我使用ruby客户端运行我的应用程序: ruby elastic-mapreduce -j j-20PEKMT9BRSUC --jar s3n://sakae55/lib/edu.cit.som.jar --main-class edu.cit.som.hadoop.SOMDriver --arg s3n:// sakae55 / repository / input / ecoli / --arg s3n:// sakae55 / repository / output / ecoli / pl / --arg s3n://sakae55/repository/data/ecoli/som.txt
然后,我看到以下错误:
java.lang.IllegalArgumentException:此文件系统对象(file:///)不支持访问请求路径'hdfs:// i -10-195-207-230.ec2.internal:9000 / mnt / var / lib / hadoop / tmp / mapred / system / job_201004221221_0017 / job.jar'你可能叫过Fi eSystem.get(conf)应该调用FileSystem.get(uri,conf)来获取支持路径的文件系统。 在org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:320) at org.apache.hadoop.fs.RawLocalFileSystem.pathToFile(RawLocalFileSystem.java:52) 在org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:416) 在org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:259) 在org.apache.hadoop.fs.FileSystem.isDirectory(FileSystem.java:676) 在org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:200) 在org.apache.hadoop.fs.FileSystem.copyFromLocalFile(FileSystem.java:1184) 在org.apache.hadoop.fs.FileSystem.copyFromLocalFile(FileSystem.java:1160) 在org.apache.hadoop.fs.FileSystem.copyFromLocalFile(FileSystem.java:1132) 在org.apache.hadoop.mapred.JobClient.configureCommandLineOptions(JobClient.java:662) 在org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:729) 在org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1026) 在edu.cit.som.hadoop.SOMDriver.runIteration(SOMDriver.java:106) 在edu.cit.som.hadoop.SOMDriver.train(SOMDriver.java:69) 在edu.cit.som.hadoop.SOMDriver.run(SOMDriver.java:52) 在org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 在org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79) 在edu.cit.som.hadoop.SOMDriver.main(SOMDriver.java:36) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在java.lang.reflect.Method.invoke(Method.java:597) 在org.apache.hadoop.util.RunJar.main(RunJar.java:155) 在org.apache.hadoop.mapred.JobShell.run(JobShell.java:54) 在org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 在org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79) 在org.apache.hadoop.mapred.JobShell.main(JobShell.java:68)
我不确定为什么错误引用“file:///”,即使我传递的所有参数都不使用模式。
答案 0 :(得分:1)
事实证明,JobConf对象的重用导致了这个问题。更改代码以为每次迭代创建新实例解决了这个问题。