Среда: CentOS7.5, Hadoop 3.0.3, Ceph 13.2.2 в качестве файловой системы.
Когда я заменил HDFS в hadoop на cephFS и протестировал MapReduce , я сообщил о следующей ошибке:
Caused by: org.apache.hadoop.fs.UnsupportedFileSystemException: fs.AbstractFileSystem.ceph.impl=null: No AbstractFileSystem configured for scheme: ceph
at org.apache.hadoop.fs.AbstractFileSystem.createFileSystem(AbstractFileSystem.java:160)
at org.apache.hadoop.fs.AbstractFileSystem.get(AbstractFileSystem.java:249)
at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:334)
at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:331)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1762)
at org.apache.hadoop.fs.FileContext.getAbstractFileSystem(FileContext.java:331)
at org.apache.hadoop.fs.FileContext.getFileContext(FileContext.java:448)
at org.apache.hadoop.fs.FileContext.getFileContext(FileContext.java:474)
at org.apache.hadoop.mapred.YARNRunner.<init>(YARNRunner.java:148)
... 28 more
Вот мой файл конфигурации:
core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>ceph://10.0.86.246:6789</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value> file:/usr/local/hadoop/tmp/</value>
</property>
<property>
<name>ceph.conf.file</name>
<value>/etc/ceph/ceph.conf</value>
</property>
<property>
<name>ceph.auth.id</name>
<value>admin</value>
</property>
<property>
<name>ceph.auth.keyring</name>
<value>/etc/ceph/ceph.client.admin.keyring</value>
</property>
<property>
<name>ceph.data.pools</name>
<value>pool1,pool2,pool3</value>
</property>
<property>
<name>fs.ceph.impl</name>
<value>org.apache.hadoop.fs.ceph.CephFileSystem</value>
</property>
</configuration>
Поэтому я добавил следующие свойства в файл конфигурации core-site.xml
:
<property>
<name>fs.AbstractFileSystem.ceph.impl</name>
<value>org.apache.hadoop.fs.ceph.CephFS</value>
</property>
Но сообщалось о новой ошибке следующим образом:
java.lang.RuntimeException: java.lang.NoSuchMethodException: org.apache.hadoop.fs.ceph.CephFS.<init>(java.net.URI, org.apache.hadoop.conf.Configuration)
at org.apache.hadoop.fs.AbstractFileSystem.newInstance(AbstractFileSystem.java:135)
at org.apache.hadoop.fs.AbstractFileSystem.createFileSystem(AbstractFileSystem.java:164)
at org.apache.hadoop.fs.AbstractFileSystem.get(AbstractFileSystem.java:249)
at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:334)
at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:331)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1762)
at org.apache.hadoop.fs.FileContext.getAbstractFileSystem(FileContext.java:331)
at org.apache.hadoop.fs.FileContext.getFileContext(FileContext.java:448)
at org.apache.hadoop.fs.FileContext.getFileContext(FileContext.java:474)
at org.apache.hadoop.mapred.YARNRunner.<init>(YARNRunner.java:148)
at org.apache.hadoop.mapred.YARNRunner.<init>(YARNRunner.java:132)
at org.apache.hadoop.mapred.YARNRunner.<init>(YARNRunner.java:122)
at org.apache.hadoop.mapred.YarnClientProtocolProvider.create(YarnClientProtocolProvider.java:34)
at org.apache.hadoop.mapreduce.Cluster.initialize(Cluster.java:95)
at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:82)
Этот метод не существует в соответствующем классе.Как я могу решить эту проблему?Или есть пакет jar, содержащий этот метод, который может быть предоставлен мне?Я пытался уменьшить версию Hadoop до 2.7.7, но сообщил об ошибке.Спасибо за внимание