alluxioerror:java.lang.illegalargumentexception:错误的fs

bgtovc5b  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(625)

我可以使用cloudera提供的示例jar在alluxio上运行wordcount,使用:

sudo -u hdfs hadoop jar /usr/lib/hadoop-0.20-mapreduce/hadoop-examples.jar wordcount -libjars /home/nn1/alluxio-1.2.0/core/client/target/alluxio-core-client-1.2.0-jar-with-dependencies.jar alluxio://nn1:19998/wordcount alluxio://nn1:19998/wc1

这是一个成功。
但是当我使用随附代码创建的jar时,我无法运行它,这也是一个示例wordcount示例代码

sudo -u hdfs hadoop jar /home/nn1/HadoopWordCount-0.0.1-SNAPSHOT-jar-with-dependencies.jar edu.am.bigdata.C45TreeModel.C45DecisionDriver -libjars /home/nn1/alluxio-1.2.0/core/client/target/alluxio-core-client-1.2.0-jar-with-dependencies.jar alluxio://10.30.60.45:19998/abdf alluxio://10.30.60.45:19998/outabdf

上面的代码是使用maven pom.xml文件构建的,包含

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-core</artifactId>
    <version>2.6.0-mr1-cdh5.4.5</version>
     </dependency>
     <dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>2.6.0-cdh5.4.5</version>
     </dependency>

你能帮我在alluxio集群中运行wordcount程序吗。希望没有额外的配置添加到pom文件中运行相同的。
运行jar后,出现以下错误:
java.lang.illegalargumentexception:错误的fs:alluxio://10.30.60.45:19998/outabdf,预期:hdfs://10.30.60.45:8020位于org.apache.hadoop.fs.filesystem.checkpath(filesystem。java:657)在org.apache.hadoop.hdfs.distributedfilesystem.getpathname(distributedfilesystem。java:194)在org.apache.hadoop.hdfs.distributedfilesystem.access$000(distributedfilesystem。java:106)在org.apache.hadoop.hdfs.distributedfilesystem$19.docall(distributedfilesystem。java:1215)在org.apache.hadoop.hdfs.distributedfilesystem$19.docall(distributedfilesystem。java:1211)在org.apache.hadoop.fs.filesystemlinkresolver.resolve(filesystemlinkresolver。java:81)在org.apache.hadoop.hdfs.distributedfilesystem.getfilestatus(分布式文件系统)。java:1211)位于org.apache.hadoop.fs.filesystem.exists(filesystem。java:1412)在edu.wordcount.run(wordcount。java:47)在org.apache.hadoop.util.toolrunner.run(toolrunner。java:70)在edu.wordcount.main(wordcount。java:23)在sun.reflect.nativemethodaccessorimpl.invoke0(本机方法)位于sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl)。java:57)在sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl。java:43)在java.lang.reflect.method.invoke(方法。java:601)在org.apache.hadoop.util.runjar.run(runjar。java:221)在org.apache.hadoop.util.runjar.main(runjar。java:136)

lvmkulzt

lvmkulzt1#

问题出在打电话给 FileSystem fs = FileSystem.get(conf); 第101行。这个 FileSystem 创建人 FileSystem.get(conf) 只支持hadoop的 fs.defaultFS 财产。要修复错误,请将该行更改为 FileSystem fs = FileSystem.get(URI.create("alluxio://nn1:19998/", conf) 通过一个 URI ,您重写 fs.defaultFS ,启用创建的 FileSystem 使用 alluxio:// 计划。
您还可以通过修改 fs.defaultFS 在你的 core-site.xml ```

fs.defaultFS
alluxio://nn1:19998/

但是,这可能会影响其他共享 `core-site.xml` 文件,所以我推荐第一种方法 `alluxio://` uri到 `FileSystem.get()` 

相关问题