【问题标题】:Invalid URI for NameNode address, s3a is not of schema 'hdfs'NameNode 地址的 URI 无效,s3a 不是模式“hdfs”
【发布时间】:2019-07-27 07:04:09
【问题描述】:

我正在做一些关于在 hadoop 环境(纱线)中用 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。

提前感谢您的帮助。

【问题讨论】:

    标签: hadoop hdfs bigdata ceph


    【解决方案1】:

    深挖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

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

    【讨论】:

      猜你喜欢
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      • 2021-06-30
      • 2014-07-25
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多