今天试了一下自己写mapreduce的简单demo,跑通了以后趁热打铁,把过程以及需要注意的问题记录下来,供初学者交流探讨
开发环境:windows8 eclipse3.6 jdk6 hadoop1.0.4
运行环境:linux hadoop1.0.4 jdk6
为什么要搞两套环境呢?
因为单纯在windows上搞的话,开发很方便,但是hadoop部署比较麻烦,需要额外在windows上安装ssh工具
单纯在linux上搞的话,开发效率肯定是赶不上eclipse的,因为相对纯文本编写java程序并编译打包,我还是更加熟悉eclipse的
最后决定用windows开发,然后丢到linux上运行
开发过程:
1、程序。由于急于想看到跑起来的效果,所以直接反编译了hadoop自带的example中的wordcount程序。
2、工程。然后自建了一个简单的java工程,把所有hadoop的jar包都引入工程,以便让编译通过。
3、打包。利用jar cvf 命令把编译后的文件打包。打包后的manifest文件中,需要加入 Main-Class标识,value为wordcount的main类。这里需要注意的是,manifest文件最后必须有个空行
运行过程:
1、上传。把jar包上传至linux服务器
2、启动hadoop。启动前先格式化hdfs,然后把input的文件上传至hadoop的文件系统。这里需要注意的是,hadoop用的是自己的一套文件系统,不能用linux自己的文件系统
3、运行。利用hadoop jar命令运行自己的jar包,指定input和output,等待结果输出
ok