【问题标题】:Alluxio Error:java.lang.IllegalArgumentException: Wrong FSAlluxio 错误:java.lang.IllegalArgumentException:错误的 FS
【发布时间】:2016-12-23 04:43:00
【问题描述】:

我可以使用 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 示例 code

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(DistributedFileSystem.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(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.apache.hadoop.util.RunJar.run(RunJar.java:221) 在 org.apache.hadoop.util.RunJar.main(RunJar.java:136)

【问题讨论】:

    标签: hadoop mapreduce hdfs cloudera-cdh alluxio


    【解决方案1】:

    问题来自于调用

    FileSystem fs = FileSystem.get(conf);

    在第 101 行。FileSystem.get(conf) 创建的 FileSystem 将仅支持使用 Hadoop 的 fs.defaultFS 属性定义的方案的路径。要修复错误,请将该行更改为

    FileSystem fs = FileSystem.get(URI.create("alluxio://nn1:19998/", conf)

    通过传递URI,您覆盖fs.defaultFS,使创建的FileSystem 能够支持使用alluxio:// 方案的路径。

    您也可以通过修改fs.defaultFS 中的core-site.xml 来修复错误

    <property>
      <name>fs.defaultFS</name>
      <value>alluxio://nn1:19998/</value>
    </property>
    

    但是,这可能会影响共享core-site.xml 文件的其他系统,因此我建议将alluxio:// URI 传递给FileSystem.get() 的第一种方法

    【讨论】:

      猜你喜欢
      • 2014-07-09
      • 2019-05-08
      • 1970-01-01
      • 2020-06-03
      • 2021-04-29
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多