Hadoop linux(ubuntu)分布式部署配置问题记录
从昨天晚上开始陆陆续续配置hadoop的分布式运行环境,一直到现在才配置运行成功,算是学习hadoop征程上迈出的一小步。期间也遇到了一系列问题,通过各种方法也慢慢解决了,解决过程中发现由于hadoop的异常处理系统还不够完善(本人这样认为的)不同原因导致的问题会有相同的错误提示,这使得排除错误显得异常复杂,所以在这里做一下总结,为自己也为别人尽量提供些方便。
我搭建的hadoop分布式系统配置:两台ubuntu10.10(木有三台机器啊),一台做namenode,一台做datanode。
个人经验在配置分布式hadoop时最好对网络知识有一定的了解,这对安装过程中解决问题有很大帮助,我就觉的hadoop在遇到网络问题时的错误提示相当模糊,基本上都是靠个人经验和个人理解来定位和解决问题,期间遇到的问题大部分也都是网络问题。
遇到的第一个问题:在datanode上创建用户后,在namenode上通过ssh登录datanode时发现tab键无法自动补全,这就相当恶心了。
解决办法:点击这里
遇到的第一个错误:HDFS格式工程中遇到的问题“Format aborted in /tmp/hadoop-charles/dfs/name”
解决办法:将namenode和datanode的/tmp文件下以hadoop开头的文件全部删除。然后再格,成功。
第三个错误:namenode running as process 18472. Stop it first.等等,类似的出现了好几个。
解决办法:在重新启动hadoop之前要先stop掉所有的hadoop服务。
第三个错误:Could not resolve hostname charles: Name or service not known
这是由于在参考书上看的配置都是采用的hostname,开始没注意这些,原来在hosts文件中的hostname与配置的不匹配。
解决办法:在配置文件中出现hostname的地方全部采用ip(这样可能不利于维护,但是比较简单)。另外一种方法是正确设置每台机器的hostname即/etc/hostname中的内容,然后再在hosts文件即/etc/hosts中正确配置hostname与其对应的ip。
第四个错误:(hadoop)could only be replicated to 0 nodes, instead of 1
这个问题可能有多种原因,搜索到了以下几种可能:
1.dfs的空间不足 。
2.namenode运行在safemodel下。
3.namenode所在机器的防火墙开着是的datanode无法访问master 。
4.datanode无法连接到namenode。
我遇到这个问题的原因是3和4共同出现(这种情况特别悲剧,当你解决了一个问题后还是出现同样的错误提示会让你认为先前的解决方法不正确)
解决方法:每一个可能的原因的解决方法都试一遍
第五个错误:java.net.ConnectException: Call to /192.168.0.17:9000 failed on connection exception: java.net.ConnectException: Connection refused和org.apache.hadoop.ipc.RPC: Server at /192.168.0.17:9001 not available yet, Zzzz。
这是由于datanode无法连接到namenode,可以通过打开http://namenode:50070来看live的node数目来确定,遇到这个问题时我的live node是0.
这个问题是我遇到的问题中最难解决的一个,首先是把配置文件重新检查了N遍,问题依旧,各种百度,各种google,各种解决方案都试了还是不好用。后来分析了一下:配置文件肯定不会出错,而这有事datanode无法链接到namenode所以问题很有可能出在网络传输上,于是将问题的原因定位到hosts文件和hostname上,打开hosts文件里面有好多配置(翻|墙的,以及其他软件的需要)于是试着删除所有的(前提是提前备份)留下127.0.0.1 和127.0.1.1以及其对应的hostname,再重启hadoop,成功启动。