Hadoop启动不了Namenode进程,出现IllegalArgumentException异常

Hadoop启动不了Namenode进程,出现IllegalArgumentException异常

感谢“我是菜鸟要早起”大神的心血博客http://blog.csdn.net/licongcong_0224/article/details/12972889,参考了之后终于算是把Hadoop 2.2里要配置的内容搞清楚了。不过在启动Hadoop 服务时(本人使用了伪分布式的单机部署方式),还是出现了问题。

这次的问题乍看起来很奇怪,在本机完成配置启动Hadoop的时候,首先,我们需要对namenode进行format,但是在执行了命令之后,却出现了如下的异常:FATAL namenode.NameNode: Exception in namenode joinJava.lang.IllegalArgumentException: URI has an authority component。别的不管,就冲着这个 authority,我义无反顾地在 format命令前加上了 sudo,结果发现…………木有起到半点作用。

那么,直接跳过format环节执行start-all呢?结果看起来有点神奇,几个进程居然还都跑起来了。不过明眼一看……怪了,唯独没有namenode进程(如下图所示)。通过namenode上50070端口的 Web UI也发现无法打开网页。于是查看namenode的log文件,发现又出现了上述的IllegalArgumentException异常;而在datanode的log文件里,也发现了一大串Retrying connect to server。嗯……好吧……看来得耗上了。

经过几番查找、尝试,终于发现了问题的原因。这个异常的出现主要与这么两个文件有关:core-site.xml和hdfs-site.xml。想必进行过Hadoop配置的人对这两个文件都有着很深的印象,而这两个文件中,与本问题关系最直接的就是这么几个Property:

[html]

在core-site.xml里,我们配置了hadoop.tmp.dir属性,以我这里的配置为例:

<property>

<name>hadoop.tmp.dir</name>

<value>file:/home/hdusr/hadoop-2.2.0/tmp/</value>

</property>

[html]

在hdfs-site.xml里,我们通过如下的方式使用了hadoop.tmp.dir的属性值(以下的写法也是Hadoop 2.2中hdfs-site的默认配置值):

<property>

<name>dfs.namenode.name.dir</name>

<value>file://${hadoop.tmp.dir}/dfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file://${hadoop.tmp.dir}/dfs/data</value>

</property>

这样的配置看似没有什么大的问题,而且还包含着${hadoop.tmp.dir}这种高端大气上档次的灵活性写法。但问题就出在了这里,经过实际操作确认,如果我们用这种变量式的方法对hdfs-site文件中的属性进行配置就会出现关于URI的权限问题。个人猜测可能因为Hadoop安装在hdusr目录,所以启动hadoop服务过程中,对hdfs-site文件进行载入时,解析变量式配置信息的中间过程遇到了权限问题(在下对Linux实在是菜鸟中的菜鸟,止步于此,不敢多加妄言)。。

总而言之,IllegalArgumentException出现在本人的这种配置情况中时,可以通过把hdfs-site.xml修改为如下形式解决。

[html]

为了解决这个出现的异常,我们把hdfs-site.xml中的以下两个属性修改为:

<property>

<name>dfs.namenode.name.dir</name>

<value>file:/home/hdusr/hadoop-2.2.0/tmp/dfs/name</value>(即使用完整的绝对地址)

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file:/home/hdusr/hadoop-2.2.0/tmp/dfs/name</value>(即使用完整的绝对地址)

</property>

进过对hdfs-site.xml文件的修改后,终于……namenode成功格式化,并且也能够正常启动Hadoop服务,启动后的进程显示见下图。

以上只是本人作为菜鸟的一些不成熟的见解,所言不实之处还请见谅,望各位高人指点,感激不尽。

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

http://www.pinlue.com/style/images/nopic.gif

分享
评论
首页