Make Hadoop 1.2.1 run, my first try

经历两天努力,8月25日下午2点40分,终于让hadoop1.2.1跑起来。

用的是《Hadoop实战第2版》(陆嘉恒)里面的WordCount例子,虽然书是2013年出的,但用的例子还是hadoop1.0.1版本,有点旧。

不怕,关键问题不在于hadoop版本,其实是java的版本和hostname设置。

我用的环境:虚拟机vmplayer上跑的opensuse12.3,java一开始用自带的1.7*版本(事实证明不好用,导致编译后不能运行jar包,老说class not found,具体原因不明白),hadoop下载了最新的1.2.1,本来以为最新的java+hadoop应该可以,估计是那个自带版本的java问题。

后来花了好一阵时间从oracle下载了一个1.6的jdk(发现原来下载java挺慢的,不知道有没有更快的方式,当然要官方下载,其他国内网站不算),重新编译后能运行起来,但用1.6的jdk反而跑不起hadoop,这个时候才把一直看到的hostname与localhost不一致提上解决问题议程(虽然之前就觉得奇怪)。

opensuse的hostname修改方式是直接编辑/etc/HOSTNAME(注意是全大写),重启(可能强制当时修改hostname也是可以,偷懒用了最没有技巧的方式),再启动hadoop。Yeah,前所未有的正常,服务跑的妥妥的,mapreduce显示running,hdfs的空间不再报100% used,Great!

image

再运行编译好的jar包的WordCount,开始的时候运行完成,但结果为空。经检查是第一次用dfs put测试文件上去hdfs时失败了,put了两个空文件,当然结果为空。马上用dfs -rm删掉原来的垃圾,重新上传测试文件,再跑,Good!结果出来了而且正确。

image

这就是我第一次安装配置好一个hadoop运行环境并跑成功第一个mapreduce程序。Cheers!

posted @ 2013-08-25 15:06  丁峰  阅读(285)  评论(0编辑  收藏  举报