hadoop异常汇总
该文件记录学习hadoop过程中碰到的一系列问题
(1)、hadoop测试中碰到的log4j:NULLAppender问题
前面安装hadoop单机版,碰到一个问题,一直没解决,就是在用hadoop versione命令查询hadoop版本的时候,出现
log4j:ERROR Could not find value for key log4j.appender.NullAppender
log4j:ERROR Could not instantiate appender named "NullAppender".
这个问题可能出现在hadoop应用中任何一个需要用到系统日志的应用当中(log4j是apache的一个开源日志项目,而且冒失是顶级项目,被hadoop项目所应用,google之)。
想了好久,考虑了hadoop本身问题,考虑了JDK问题,考虑了配置问题,总是没解决,今天和组员讨论了,也从网上重新找了资料,终于解决了
解决办法:在你的hadoop文件夹中找到etc/hadoop/log4j.properties文件,在文件中添加
log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender
解决。。。。。好容易。。。怨念。。。
(二)、配置基于Eclipse的Hadoop应用开发环境不能连接DFS的问题
建立Map/Reduce Location时,创建了一个HDFS Master:My_Master 的NameNode节点,报错:
Error :incomplete HDFS URI,no host : hdfs://...什么的
原本以为是自己后面修改的hdfs的NameNode和DataNode配置与系统默认的配置冲突,后来找了好久,原来问题是在Hadoop中,主机名不要包含下划线“_”,但可以有横线“-”。
修改Master名字为 My-Master ,该问题解决。。。
( 三). 重启系统后,HDFS连接不上
节点之间的通信有时候会用到IP地址,有时候会用到计算机名,所以需要给出节点IP地址跟计算机名的对应,linux系统中这种对应关系体现在/etc/hosts文件中,编辑hosts文件,按“IP 计算机名”的形式把各个节点写进hosts文件。
其中::1这一行是跟IPv6相关的,不需要去理会。其中127.0.0.1这一行是要注释掉的,不然之后运行hadoop的时候会出现“Bad connection to DFS”的错误,DFS是hadoop的文件系统。每次重启系统,hosts文件中都会自动自动加上一行127.0.0.1(原因不解),运行 hadoop之前都要把这一行kill掉才行。
对于机器datanode1,hosts文件也要做类似处理。