NameNode 地址的 URI 无效,s3a 不属于架构 'hdfs'

Invalid URI for NameNode address, s3a is not of schema 'hdfs'

我正在做一些关于在 hadoop 环境(yarn)中用 Ceph 替换 HDFS 的事情,根据我的研究,hortonworks and 的指南告诉我我需要修改 core-site.xml 下的 $hadoop_home/etc/hadoop.
我的修改如下:

<property>
        <name>fs.s3a.access.key</name>
        <value>xxxxxxxxxxxxxx</value>
</property>
<property>
        <name>fs.s3a.secret.key</name>
        <value>xxxxxxxxxxxxx</value>
</property>
<property>
        <name>fs.default.name</name>
        <value>s3a://bucket_name</value>
</property>

<property>
        <name>fs.defaultFS</name>
        <value>s3a://bucket_name</value>
</property>
<property>
        <name>fs.s3a.endpoint</name>
        <value>http://x.x.x.x:xxxx</value>
</property>
<property>
        <name>fs.AbstractFileSystem.s3a.imp</name>
        <value>org.apache.hadoop.fs.s3a.S3A</value>
</property>

但是,当我尝试通过 sbin/start-all.sh 启动 hadoop 时,出现如下错误,

java.lang.IllegalArgumentException: Invalid URI for NameNode address (check fs.defaultFS): s3a://bucket_name is not of scheme 'hdfs'.

供您参考,我的hadoop版本是3.2.0。

提前感谢您的帮助。

在深入研究 hadoop 源代码后,我认为应该抛出这个异常。

当您尝试调用 sbin/start-all.sh.

时,无法跳过下面的代码
  /**
   * @return address of file system
   */
  public static InetSocketAddress getNNAddress(URI filesystemURI) {
    String authority = filesystemURI.getAuthority();
    if (authority == null) {
      throw new IllegalArgumentException(String.format(
          "Invalid URI for NameNode address (check %s): %s has no authority.",
          FileSystem.FS_DEFAULT_NAME_KEY, filesystemURI.toString()));
    }
    if (!HdfsConstants.HDFS_URI_SCHEME.equalsIgnoreCase(
        filesystemURI.getScheme())) {
      throw new IllegalArgumentException(String.format(
          "Invalid URI for NameNode address (check %s): " +
          "%s is not of scheme '%s'.", FileSystem.FS_DEFAULT_NAME_KEY,
          filesystemURI.toString(), HdfsConstants.HDFS_URI_SCHEME));
    }
    return getNNAddress(authority);
  }

我不需要启动 namenodesecondarynamenode 因为我使用 ceph 作为我的后端存储系统。 ceph本身可以通过它的driver来管理它所谓的datanode

为可能有同样问题的任何人保留主题,欢迎对我的理解发表任何评论。