Hadoop Alluxio错误:java.lang.IllegalArgumentException:错误的FS
我能够使用cloudera提供的示例jar在alluxio上运行wordcount,使用:Hadoop Alluxio错误:java.lang.IllegalArgumentException:错误的FS,hadoop,mapreduce,hdfs,cloudera-cdh,alluxio,Hadoop,Mapreduce,Hdfs,Cloudera Cdh,Alluxio,我能够使用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:1
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示例
上面的代码是使用maven构建的
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>
org.apache.hadoop
hadoop内核
2.6.0-mr1-cdh5.4.5
org.apache.hadoop
hadoop通用
2.6.0-cdh5.4.5
你能帮我在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)
运行(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(Method.java:601)
位于org.apache.hadoop.util.RunJar.run(RunJar.java:221)
位于org.apache.hadoop.util.RunJar.main(RunJar.java:136)
问题来自于打电话给
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
,从而使创建的文件系统能够支持使用alluxio://
方案的路径
您还可以通过修改core site.xml中的fs.defaultFS
来修复错误
<property>
<name>fs.defaultFS</name>
<value>alluxio://nn1:19998/</value>
</property>
fs.defaultFS
alluxio://nn1:19998/
但是,这可能会影响共享core site.xml
文件的其他系统,因此我建议第一种方法是将alluxio://
URI传递给FileSystem.get()
<property>
<name>fs.defaultFS</name>
<value>alluxio://nn1:19998/</value>
</property>