1.18/09/08 18:22:05 ERROR namenode.NameNode: Failed to start namenode.
java.lang.IllegalArgumentException: URI has an authority component
我遇到这个原因主要是配置问题(伪分布式模式)
先说我的解决方法(这里有两种办法,没看懂,就把整篇文章看完)
1.手动在你配置tmp目录下建立dfs/name
2.配置hdfs-site.xml 直接指定namenode的name文件夹 如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/D:/hadoop-2.7.7/data/tmp/dfs/name</value>
</property>
<property>
<name>dfs.namenode.data.dir</name>
<value>file:/D:/hadoop-2.7.7/data/tmp/dfs/data</value>
</property>
</configuration>
3.如果不行,文件路径前记得加file:
过程如下:
最开始只配置了core-site.xml 执行 hdfs namenode -format
<configuration>
<property>
<name>fs.defalutFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>D:/hadoop-2.7.7/data/tmp</value>
</property>
</configuration>
这里出现了这个问题,没法在tmp下面的建立文件夹(因为初始化成功应该回有dfs/name的文件夹的 就是namenode的元文件),尝试手动建立也没用。
于是尝试直接指定namenode的name和data文件夹 配置hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>D:/hadoop-2.7.7/data/tmp/dfs/name</value>
</property>
<property>
<name>dfs.namenode.data.dir</name>
<value>D:/hadoop-2.7.7/data/tmp/dfs/data</value>
</property>
</configuration>
同样失败,但是突发奇想 把 / 改成 \
同样出现了错误(不是最开始的) 但幸运的是 namenode初始成功了
后面又尝试了hdfs-site.xml配置成
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/D:/hadoop-2.7.7/data/tmp/dfs/name</value>
</property>
<property>
<name>dfs.namenode.data.dir</name>
<value>file:/D:/hadoop-2.7.7/data/tmp/dfs/data</value>
</property>
</configuration>
也就是在文件前加了file:(斜杠该回去了的)这次完美初始化没有报任何的错