【问题标题】:Invalid URI for NameNode addressNameNode 地址的 URI 无效
【发布时间】:2014-07-02 00:22:59
【问题描述】:

我正在尝试建立一个Cloudera Hadoop 集群,其中一个主节点包含namenodesecondarynamenodejobtracker,另外两个节点包含datanodetasktrackerCloudera 版本是 4.6,操作系统是 ubuntu 精确 x64。此外,此集群是从 AWS 实例创建的。 ssh passwordless 也已设置,Java 安装 Oracle-7。

每当我执行sudo service hadoop-hdfs-namenode start 时,我都会得到:

2014-05-14 05:08:38,023 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Exception in namenode join
java.lang.IllegalArgumentException: Invalid URI for NameNode address (check fs.defaultFS): file:/// has no authority.
        at org.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:329)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:317)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.getRpcServerAddress(NameNode.java:370)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.loginAsNameNodeUser(NameNode.java:422)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:442)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:621)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:606)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1177)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1241)

我的core-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->
<configuration>
   <property>
      <name>fs.defaultFS</name>
      <value>hdfs://<master-ip>:8020</value>
   </property>
</configuration>

mapred-site.xml:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->
<configuration>
   <property>
      <name>mapred.job.tracker</name>
      <value>hdfs://<master-ip>:8021</value>
   </property>
</configuration>

hdfs-site.xml:

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->
<configuration>
   <property>
      <name>dfs.replication</name>
      <value>2</value>
   </property>
   <property>
      <name>dfs.permissions</name>
      <value>false</value>
   </property>
</configuration>

我尝试使用public ipprivate-ippublic dnsfqdn,但结果是一样的。 目录/etc/hadoop/conf.empty 如下所示:

-rw-r--r-- 1 root root   2998 Feb 26 10:21 capacity-scheduler.xml
-rw-r--r-- 1 root hadoop 1335 Feb 26 10:21 configuration.xsl
-rw-r--r-- 1 root root    233 Feb 26 10:21 container-executor.cfg
-rwxr-xr-x 1 root root    287 May 14 05:09 core-site.xml
-rwxr-xr-x 1 root root   2445 May 14 05:09 hadoop-env.sh
-rw-r--r-- 1 root hadoop 1774 Feb 26 10:21 hadoop-metrics2.properties
-rw-r--r-- 1 root hadoop 2490 Feb 26 10:21 hadoop-metrics.properties
-rw-r--r-- 1 root hadoop 9196 Feb 26 10:21 hadoop-policy.xml
-rwxr-xr-x 1 root root    332 May 14 05:09 hdfs-site.xml
-rw-r--r-- 1 root hadoop 8735 Feb 26 10:21 log4j.properties
-rw-r--r-- 1 root root   4113 Feb 26 10:21 mapred-queues.xml.template
-rwxr-xr-x 1 root root    290 May 14 05:09 mapred-site.xml
-rw-r--r-- 1 root root    178 Feb 26 10:21 mapred-site.xml.template
-rwxr-xr-x 1 root root     12 May 14 05:09 masters
-rwxr-xr-x 1 root root     29 May 14 05:09 slaves
-rw-r--r-- 1 root hadoop 2316 Feb 26 10:21 ssl-client.xml.example
-rw-r--r-- 1 root hadoop 2251 Feb 26 10:21 ssl-server.xml.example
-rw-r--r-- 1 root root   2513 Feb 26 10:21 yarn-env.sh
-rw-r--r-- 1 root root   2262 Feb 26 10:21 yarn-site.xml

slaves列出了两台从机的ip addresses

<slave1-ip>
<slave2-ip>

执行中

update-alternatives --get-selections | grep hadoop
hadoop-conf                    auto     /etc/hadoop/conf.empty

我进行了很多搜索,但没有找到任何可以帮助我解决问题的东西。有人可以提供任何线索吗?

【问题讨论】:

  • 好吧..我没怎么用过cloudera..但是,为什么fs.defaultFS而不是fs.default.name?我相信 fs.defaultFS 用于 HDFS HA。
  • @Chandrakant fs.defaultFSfs.default.name 都失败了。此外,在 Cloudera 页面中,它说 fs.default.name 已弃用。
  • 我知道 fs.default.name 已被弃用,取而代之的是 fs.defaultFS 。我只是没有看到您首先使用的是 hadoop-2。看了一下namenode格式化行,实现了。
  • @Chandrakant 你知道为什么namenode没有启动吗?
  • 一般“无权限”表示没有权限。你检查过namenode正在写入的目录的权限吗?

标签: java xml hadoop cloudera


【解决方案1】:

确保您已正确设置 HADOOP_PREFIX 变量,如链接中所示: http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html

即使我遇到了与您相同的问题,但通过设置此变量得到了纠正

【讨论】:

    【解决方案2】:

    可能是您为 dfs.datanode.data.dir 提供了错误的语法 或 hdfs-site.xml 中的 dfs.namenode.data.dir。如果您在值中错过 /,您将收到此错误。 检查语法 文件:///home/hadoop/hdfs/

    【讨论】:

      【解决方案3】:

      我遇到了同样的事情。我发现我必须将 fs.defaultFS 属性添加到 hdfs-site.xml 以匹配 core-site.xml 中的 fs.defaultFS 属性:

      <property>
            <name>fs.defaultFS</name>
            <value>hdfs://<master-ip>:8020</value>
      </property>
      

      一旦我添加了这个,辅助名称节点就可以正常启动了。

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,并通过格式化名称节点来解决。下面是命令:

        hdfs namenode -format
        

        core-site.xml 条目是:

        <configuration>
           <property>
              <name>fs.defaultFS</name>
              <value>hdfs://localhost:9000</value>
           </property>
        </configuration>
        

        那肯定能解决问题。

        【讨论】:

        • 必须用这个更新我的 hadoop-3.1.2\etc\hadoop\core-site.xml,它在独立模式下完美运行,谢谢!还必须从此处的链接下载 DLL 并将 DLL 放在我的 bin 目录中:wiki.apache.org/hadoop/WindowsProblems
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-25
        • 1970-01-01
        • 2016-05-17
        • 1970-01-01
        • 2017-03-07
        • 2014-08-15
        • 2023-03-16
        相关资源
        最近更新 更多