Hadoop伪分布式安装,出现DataNode节点无法正常启动
转自love666666shen1. 环境描述:虚拟机12.0,Ubuntu 14.04,伪分布式安装Hadoop2.6。2. 问题描述:多次格式化文件系统时,会出现datanode无法启动。如下图:3. 问题产生原因:执行文件系统格式化时(即执行命令$ bin/hadoop n
·
1. 环境描述:
虚拟机12.0,Ubuntu 14.04,伪分布式安装Hadoop2.6。
2. 问题描述:
多次格式化文件系统时,会出现datanode无法启动。如下图:
3. 问题产生原因:
执行文件系统格式化时(即执行命令
$ bin/hadoop namenode -format 后),会在namenode数据文件夹(即配置文件中dfs.name.dir在本地系统的路径)中保存一个current/VERSION(我的路径为 usr/local/hadoop/tmp/dfs/name/
current/VERSION,其中hadoop为建立虚拟机时为虚拟机系统所取的用户名)文件,记录namespaceID,标识了所格式化的namenode的版本。如果我们频繁的格式化namenode,那么datanode中保存(即配置文件中dfs.data.dir在本地系统的路径)的current/VERSION文件(路径为
usr/local/hadoop/tmp/dfs/data/
current/VERSION)只是你第一次格式化时保存的namenode的ID,因此就会造成namdenode 的 namespaceID 与 datanode的namespaceID 不一致,从而导致namenode和 datanode的断连。
4. datanode启动日志:
查看日志(在
/usr/local/hadoop/logs/hadoop-hadoop-datanode-hadoop-virtual-machine.log下)发现:
************************************************************/
2017-07-3 17:40:59,973 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /home/xsj/hadoop/hadoop-0.20.2/hdfs/data: namenode namespaceID =
1825353369; datanode namespaceID =
1986950792
5. 解决方案:
把/tmp下的Hadoop开关的临时文件删除
把/hadoop.tmp.dir目录清空
注:在每次执行hadoop namenode -format时,都会为NameNode生成namespaceID,,但是在hadoop.tmp.dir目录下的DataNode还是保留上次的namespaceID,因为namespaceID的不一致,而导致DataNode无法启动,所以 只要在每次执行hadoop namenode -format之前,先删除hadoop.tmp.dir(路径为 /usr/local/hadoop/下的)tmp目录就可以启动成功,或者删除/usr/local/hadoop/tmp/dfs下的data目录,然后重新启动dfs(在hadoop安装路径 /usr/local/hadoop/ 下,运行命令./sbin/start-dfs.sh)即可。请注意是删除hadoop.tmp.dir对应的本地目录,即/usr/local/hadoop/下的tmp文件夹,而不是HDFS目录。
也可以试着参考http://blog.sina.com.cn/s/blog_76fbd24d01017qmc.html 或者http://blog.csdn.net/hackerwin7/article/details/19973045这两篇文章。
6. 重启后执行jps命令:
7. 总结:
以后在hadoop format过程中 要注意不要频繁地reformat namnode(格式化命令为 ./bin/hadoop namenode -format)的ID信息。format过程中选择N(否)就是了。
更多推荐
已为社区贡献2条内容
所有评论(0)