hadoop手工编译本身的wordcount

Hadoop 2.7.1手动编译wordcount

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

1 咱们须要找到WordCount.java: apache

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下找到,其中还包含许多示例代码,有空能够研究下。 oop

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

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

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中的每个类,都有对应的文件生成。 get

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

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步中我改动了包名。 博客

相关文章
相关标签/搜索