无效的NameNode地址URI,s3a不属于'schema hdfs'。

3
我正在处理有关在hadoop环境(yarn)中用Ceph替换HDFS的事情。根据我的研究,hortonworksReplace HDFS form local disk to s3 getting error的指南告诉我需要修改$hadoop_home/etc/hadoop下的core-site.xml文件。我的修改如下:
<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。
预先感谢您的帮助。
1个回答

4

在深入研究 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);
  }

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

为了针对具有相同疑问的人,保留此贴,并欢迎任何关于我的理解的评论。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接