本文會教妳如何用最快最簡單的方法編寫和運行壹個屬於自己的MapReduce程序, let's go!
首先有兩個前提:
1. 有壹個已經可以運行的hadoop 集群(也可以是偽分布系統), 上面的hdfs和mapreduce工作正常 (這個真的是最基本的了, 不再累述, 不會的請參考 mon.jar:/usr/lib/gphd/hbase/lib/hbase-protocol.jar:/usr/lib/gphd/hbase/lib/hbase-client.jar:/usr/lib/gphd/hbase/lib/hbase-thrift.jar:/usr/lib/gphd/hbase/lib/htrace-core-2.01.jar:/etc/gphd/hbase/conf::/usr/lib/gphd/hive/lib/hive-service.jar:/usr/lib/gphd/hive/lib/libthrift-0.9.0.jar:/usr/lib/gphd/hive/lib/hive-metastore.jar:/usr/lib/gphd/hive/lib/libfb303-0.9.0.jar:/usr/lib/gphd/hive/lib/hive-common.jar:/usr/lib/gphd/hive/lib/hive-exec.jar:/usr/lib/gphd/hive/lib/postgresql-jdbc.jar:/etc/gphd/hive/conf::/usr/lib/gphd/sm-plugins/*:
3. 編譯
運行命令
javac -classpath xxx ./myword.java
xxx部分就是上壹步裏面取到的class path
運行完此命令後, 當前目錄下會生成壹些.class 文件, 例如:
myword.class myword$IntSumReducer.class myword$TokenizerMapper.class
4. 將class文件打包成.jar文件
運行命令
jar -cvf myword.jar ./*.class
至此, 目標jar 文件成功生成
5. 準備壹些文本文件, 上傳到hdfs, 以做word count的input
例子:
隨意創建壹些文本文件, 保存到mapred_test 文件夾
運行命令
hadoop fs -put ./mapred_test/
確保此文件夾成功上傳到hdfs 當前用戶根目錄下
6. 運行我們的程序
運行命令
hadoop jar ./myword.jar myword mapred_test output
順利的話, 此命令會正常進行, 壹個MapReduce job 會開始工作, 輸出的結果會保存在 hdfs 當前用戶根目錄下的output 文件夾裏面。
至此大功告成!
如果還需要更多的功能, 我們可以修改前面的源文件以達到壹個真正有用的MapReduce job。
但是原理大同小異, 練手的話, 基本夠了。
壹個拋磚引玉的簡單例子, 歡迎板磚。
轉載