因为一直存在namenode重启无法正常启动,必须每次格式化namenode的情况,所以今天开始设置了core-site.xml中hadoop.tm.dir的设置。设置之后namenode终于摆脱了以往重启就启动不了的问题。但是带来了新的问题,就是datanode每次启动之后很快就会死掉,查看了datanode的log,显示连接master失败。
回顾了一下今天的改动,觉得也许是因为,core-site.xml文件的改动带来的影响,进而考虑到,也许这个文件需要在所有的hadoop node上都进行修改,与是尝试在datanode上也进行修改。然后重启,发现一切恢复正常。
除了上面一种情况外还碰到了其他情况。
因为hadoop跑在虚拟机上,创建虚拟机的时候分配的空间只有8G,系统几乎用掉4G,还剩大概4G多空间。跑了几个hadoop程序之后,硬盘空间急剧减少,最后非常夸张的沾满了硬盘。其实这其中大部分数据都是临时数据或者log之类的没用的数据。然后就需要清理文件,我采用了很暴力的方式,直接删除了3台hadoop node下的hadoop.tmp.dir下的所有子文件。然后重启hadoop,显示没有datanode连接。而且eclipse插件显示一些本应该删除的文件,这里当然是namenode没有清理造成的脏数据。
需要格式化namenode,然后启动hadoop,这个时候eclipse插件里面显示正确,但是依然datanode很快就挂掉。
后来参考一篇文章
Hadoop的datanode无法启动
hdfs-site中配置的dfs.data.dir为/usr/local/hadoop/hdfs/data
用bin/hadoop start-all.sh启动Hdoop,用jps命令查看守护进程时,没有DataNode。
访问http://localhost:50070,点击页面中的Namenode logs链接,在logs页面点击hadoop-hadoop-datanode-ubuntu.log 链接,
发现在日志中有此提示:Invalid directory in dfs.data.dir: Incorrect permission for /usr/local/hadoop/hdfs/data, expected: rwxr-xr-x, while actual: rwxr-xrwx 。原因是data文件夹权限问题,执行:chmod g-w /usr/local/hadoop/hdfs/data,修改文件夹权限后,再次启动Hadoop,问题解决。
觉得需要做的更彻底写,于是把3台虚拟机上的hadoop.tmp.dir文件夹整个删除掉。这里是这样的,因为一开始没有这个文件夹的时候hadoop是可以运行的,所以删除掉最坏的结果也还是可以恢复正常,所以大胆的删除掉了。重新格式化namenode,然后启动hadoop,一切恢复正常。