hadoop手工编译自己的wordcount

Hadoop 2.7.1手动编译wordcount

成功搭建了hadoop运行环境并运行了wordcount,实际上是完成了由我们给定输入和输出的路径,运行hadoop提供的示例中编译好的程序实现的,但真正的开发过程中,我们需要自己编写java代码,编译、打包才能在hadoop上运行,因此在这一次,我们利用hadoop提供的WordCount.java源码,在Linux下手工编译、打包,最后调用、运行,为进一步从事hadoop程序开发打下基础。

1 我们需要找到WordCount.java:

hadoop的源码我们可以在http://mirror.esocc.com/apache/hadoop/common/stable/ 下载到,解压,在hadoop-2.7.1-src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/dadoop/examples下找到,其中还包含许多示例代码,有空可以研究下。

2 作者用户名叫sr,在sr目录下新建wordcount_01文件夹,内部再创建src和classes两个文件夹,分别存放.java和编译后的.class文件。将找到的WordCount.java文件放入src中,打开WordCount.java,我羞愧的将包名改成了package com.sr.hadoop,有点不好意思...

3 “cd ~/wordcount_01”    进入wordcount_01文件夹

4 “javac -classpath /home/sr/usr/hadoop/hadoop-2.7.1/share/hadoop/common/hadoop-common-2.7.1.jar:/home/sr/usr/hadoop/hadoop-2.7.1/share/hadoop/common/lib/commons-cli-1.2.jar:/home/sr/usr/hadoop/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7.1.jar -d ./classes/ ./src/*.java”

这步比较关键,作用是用hadoop安装环境下hadoop-common-2.7.1.jar、commons-cli-1.2.jar、hadoop-mapreduce-client-core-2.7.1.jar三个库文件,编译src中所有的.java文件(我们也可以写成WordCount.java)。-classpath后接着3个绝对路径,是作者电脑上3个库文件的所在位置,绝对路径用:分割;-d后面跟着的是编译后存放路径和源路径。执行后就会发现classes下生成了三级文件目录,里面有编译好的.class文件,而且你会发现,对于.java中的每一个类,都有对应的文件生成。

5 “jar -cvf Srwordcount.jar -C ./classes/ .”将编译好的 class 文件打包成 Jar 包,打包后的Srwordcount会出现在wordcount_01目录中,只有打包后的.class文件才能在hadoop下运行。

6 运行Srwordcount:注意需先cd 到你自己的hadoop环境下,我的是“cd ~/usr/hadoop/hadoop-2.7.1”,请确保hadoop启动,input中放置了需要运行的文本文件,同时没有output文件夹,因为hadoop为防止运行结果发生覆盖,不会向已有的文件夹下写入数据。以上任何一步有问题,请查看我的上一篇博客。

“bin/hadoop jar /home/sr/wordcount_01/Srwordcount.jar com.sr.hadoop.WordCount /input /output”即将input中的内容用打包好的Srwordcount.jar运行,放入output中。请注意com.sr.hadoop.WordCount是调用三层目录下的WordCount.class,在第2步中我改动了包名。

你可能感兴趣的:(hadoop手工编译自己的wordcount)