Ошибка Alluxio: java.lang.IllegalArgumentException: неверная файловая система

Я могу запустить подсчет слов на alluxio с примером jar, предоставленным cloudera, используя:

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

и это успех.

Но я не могу запустить его, когда использую банку, созданную с ПРИКРЕПЛЕННЫМ КОДОМ. Это также пример примера подсчета слов кода

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. Надеюсь, в файл pom не будут добавлены дополнительные конфигурации для запуска того же самого.

Я получаю следующую ошибку после запуска моей банки:

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(собственный метод) в 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)


person Sambhu R    schedule 23.12.2016    source источник


Ответы (1)


Проблема возникает из-за звонка

FileSystem fs = FileSystem.get(conf);

в строке 101. FileSystem, созданный FileSystem.get(conf), будет поддерживать только пути со схемой, определенной свойством fs.defaultFS Hadoop. Чтобы исправить ошибку, измените эту строку на

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, поэтому я рекомендую первый подход передачи URI alluxio:// в FileSystem.get().

person AAudibert    schedule 03.10.2018