hadoop遇到的问题

装好hadoop,但是一直出现问题,总结如下:

排错到现在,最大的感觉是,也许你的错误表象跟网上说的一样,但是解决方法会大有不同,只能说这种错误是同一问题(如namenode出错)导致,但是究竟是什么行为导致这个问题,每个人也许都不相同,所以重点是找到自己的操作时的错误所在.

1.Too many fetch-failures错误

问题介绍:http://blog.csdn.net/liangliyin/article/details/6455713

网上的解决方案:1)Answer:(http://www.hadoopor.com/thread-71-1-1.html
         出现这个问题主要是结点间的连通不够全面。
     检查 、/etc/hosts
               要求本机ip 对应 服务器名
               要求要包含所有的服务器ip + 服务器名
     检查 .ssh/authorized_keys
               要求包含所有服务器(包括其自身)的public key

(没解决问题。。。。。。。。最后自己该了下网络链接,问题接二连三的变成下面情况。。。)

2.web页面上的LiveNode中有一个datanode的链接不能打开,但是只能用别名node3,

   修改个task的/etc/hosts,是网络中每个ip地址对应一个主机名,保证ssh能链接到各个主机名,注意一定要连接到主机名

3.datanode进程正常启动,但是在web页面上看到live Node为0,tasktracker也不可用

   (此时如果使用hadoop fs -put或-copyFromLocal等会得到could only be replicated to 0 nodes, instead of 1”)

     1.关闭防火墙,(ubuntu下默认关闭)

    2. 关闭safenode模式:把safemode置于off状态:hadoop dfsadmin -safemode leave

    3,都说是haoop.tmp.dir没有删除干净就把namenode格式化了,但是我已经把namenode还有datanode上的都删了,还是没有解决。。

  个人觉得以上三种方法,都是针对datanode本身就没有正常启动的,但是我的datanode进程已经有了(用jps看见)。所以没有解决问题

   最后我在每个节点的/etc/hosts里把127.0.0.1都注释掉,就正常了。(这步可能不是这个原因,因为网上都说这个是可以存在的,并且后来我又把这句加上去了,也没有再出现类似错误)并且没有在出现最开始的too many fetch-failure错误。

4.connect to host gp port 22: No route to host
   发现竟然是重启电脑后,有一个datanode的IP改变了,所以要修改其他机器的/etc/hosts.

5.Retrying connect to server: localhost/127.0.0.1:9000. Already tried 0 time(s)...............

Call to localhost/127.0.0.1:9000 failed on connection exception

(一般这个问题肯定是namenode连接不正常引起的,所以主要是检查namenode进程是否正常启动,我则是因为其他原因。。虽然有相同症状,但是错误不同)

第一次运行没出这个问题,这次在外面运行测试TestDFSIO也正常,但是在eclipse中运行自己写的MapReduce程序却出现这个错误。

  原因应该是这次我是在集群上运行的,所以一定要把程序打包成jar,文件使用hadoop jar运行,这样namenode才能进行map和reduce任务的分发。

(突然觉得单元测试还是很有必要的,以前一直懒得看。。。。)

6.关于 Warning: $HADOOP_HOME is deprecated.

刚刚把hadoop升为1.0.0版本。一直出现这个警告:解决链接:http://www.dw4e.com/?p=83

经查hadoop-1.0.0/bin/hadoop脚本和hadoop-config.sh脚本,发现脚本中对HADOOP_HOME的环境变量设置做了判断,笔者的环境根本不需要设置HADOOP_HOME环境变量。
参考文章:
HADOOP-7398
解决方案一:到HOME目录编辑.bash_profile文件,去掉HADOOP_HOME的变量设定,重新输入hadoop fs命令,警告消失。
解决方案二:到HOME目录编辑.bash_profile文件,添加一个环境变量,之后警告消失:

export HADOOP_HOME_WARN_SUPPRESS=1

 

ubuntu重启网络命令:sudo /etc/init.d/networking restart

ubuntu主机名文件:/etc/hostnam

posted @ 2013-03-08 20:30  dandingyy  阅读(1631)  评论(1编辑  收藏  举报