最近想研究下hadoop,折腾了好几天终于跑成功了自带例子CountWord。所以特此开贴记录碰到的问题。
首先是在windows 上安装cygwin上想运行hadoop,无奈实在问题太多,转到虚拟机。
首先借鉴的是这篇文章:http://www.open-open.com/lib/view/open1435761287778.html
总体讲的比较详细,但是在安装过程中还是遇到很多问题,虚拟机安装centos 比较简单,但是在ssh免密码登录的时候还是需要密码,通过搜索和实践,
http://blog.youkuaiyun.com/hackerwin7/article/details/28109073 通过这个方法成功了。
之后是配置JDK,这个也相对简单,其中麻烦的就是虚拟机中的vm tools 挂cdrom 会碰到点问题,看不到共享的目录,这个网上搜索也有答案。
然后是配置hadoop,这是问题最多的步骤,首先http://www.open-open.com/lib/view/open1435761287778.html 的配置其实是错误的,网上搜了下,
大部分教程都是转载,问题都一样,其中7,8的标题写的都是配置mapred-site.xml,显然是不对的,经过研究,8配置的应该是yarn-site.xml
主服务器的hadoop scp 到从服务器的时候,passwordauthentication 要打开,可能之前ssh免密码登录的时候已经关闭了,其实开启也没事。
在做格式化之前先把防火墙关闭。自动启动也关闭。hadoop启动时在关闭防火墙,datanode有个进程会消失(原因没找到)。
最纠结的就是hosts 文件了,反复配置了2天,各种尝试,网上的教程也比较坑爹,有的让把127.0.0.1删除,被坑了不少。
下面是我的主服务器配置:
192.168.42.128 localhost
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.42.129 anyname1
192.168.42.130 anyname2
从:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.42.129 localhost
128就是主的ip,和从的区别就是自己的ip放在最上面,因为启动hadoop时,监测9000端口时,都是127.0.0.1的ip,不能对外开放,经过尝试得出这种解决方法,
129和130也要配置在主的hosts中,对应的hostname随便填写就好,如果不配置从的ip-hostname的话,启动hadoop会报错,datanode则无法启动。
之后就是格式化和启动hadoop了。上面的问题都解决后,终于在http://192.168.42.128:50070 中看到live nodes 是 2 了。不容易啊。
之后就是eclipse的环境部署,这种教程也是网上一搜一大堆,按部就班后还是会遇到问题,比如刚开始连接的时候
这个下面一个文件夹也没有,以后自己没有连接成功,因为看到网上很多都说连接成功可以看到文件结构,后来摸索了下,本来就是结构嘛,然后再hadoop的hdfs中创建了
input 和 output文件夹,刷新了下 就可以看到了。
之后就新建mapreduce的项目,把CountWord.java复制进去,跑了下就报错createDirectoryWithMode0(Ljava/lang/String;I)V。之后把正确对应版本的hadoop.dll放到system32 中,run的参数设置了下,就能跑了,
不过感觉跑的不像是虚拟机上的mapreduce,还有待研究。