簡體   English   中英

Alluxio錯誤:java.lang.IllegalArgumentException:錯誤的FS

[英]Alluxio Error:java.lang.IllegalArgumentException: Wrong FS

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

這是成功的。

但是當我使用使用ATTACHED CODE創建的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 at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:657 )org.apache.hadoop.hdfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:194)atg.apache.hadoop.hdfs.DistributedFileSystem.access $ 000(DistributedFileSystem.java:106)org.apache.hadoop.hdfs.DistributedFileSystem位於org.apache.hadoop.hdfs.DistributedFileSystem $ 19.doCall(DistributedFileSystem.java:1211)的org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)at $ 19.doCall(DistributedFileSystem.java:1215) org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1211)位於ordu.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1412)的edu.WordCount.run(WordCount.java:47) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)at edu.WordCount.main(WordCount.java:23)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)a 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)的sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)atg的java.lang.reflect.Method.invoke(Method.java:601)。 apache.hadoop.util.RunJar.run(RunJar.java:221)at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

問題來自對此的呼吁

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 ,使用alluxio://方案啟用創建的FileSystem以支持路徑。

您還可以通過修改core-site.xml fs.defaultFS來修復錯誤

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

但是,這可能會影響共享core-site.xml文件的其他系統,所以我建議第一種方法將alluxio:// URI傳遞給FileSystem.get()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM