Hadoop下WordCount程序
一、前言
在之前我們已經在 CenOS6.5 下搭建好了 Hadoop2.x 的開發環境。既然環境已經搭建好了,那麽現在我們就應該來幹點正事嘛!比如來一個Hadoop世界的HelloWorld,也就是WordCount程序(一個簡單的單詞計數程序).
二、WordCount 官方案例的運行
2.1 程序簡介
WordCount程序是hadoop自帶的案例,我們可以在 hadoop 解壓目錄下找到包含這個程序的 jar 文件(hadoop-mapreduce-examples-2.7.1.jar),該文件所在路徑為 hadoop/share/hadoop/mapreduce。
我們可以使用 hadoop jar
可以看到,該 jar 文件中並不止有一個案例,當然我們此時只想看看 WordCount 程序,其他的靠邊邊。那麽我們按照提示,執行命令:hadoop jar hadoop-mapreduce-examples-2.7.1.jar wordcount 看看有什麽東西?
根據提示,它說是需要輸入文件和輸出目錄,那麽接下來,我們就準備以下輸入文件和輸出目錄吧。
註:其實只需要準備輸入文件,不需要準備輸出目錄。因為 MapReduce 程序的運行,其輸出目錄不能是已存在的,否則會拋出異常。 這是為了避免數據覆蓋的問題。請看《Hadoop權威指南》
2.2 準備材料
為了方便使用該官方 jar 文件,我們在當前目錄下創建一個 input 目錄(你也可以在別的目錄下創建目錄,目錄名也可以自己取,喜歡就好),用來存放輸入文件。然後準備2個輸入文件。如下所示:
因為我們是使用 HDFS 文件系統的,所以我們要運行 WordCount 這個 MapReduce 程序的話,需要將文件放入 HDFS
上。因此我們使用 HDFS 的文件系統命令,在HDFS文件系統根目錄下創建一個input目錄,用來保存輸入文件。執行命令:hadoop fs -mkdir /input
註:hadoop fs -mkdir 命令是用來在 HDFS 上創建目錄的,類似於Linux下的 mkdir 命令
目錄創建好後,我們需要把剛剛在本地文件系統上準備的輸入文件拷貝到 HDFS 上。執行命令:hadoop fs -put input/f*.txt /input
2.3 運行程序
準備工作就緒了,那麽現在就開始運行程序了。執行命令:hadoop jar hadoop-mapreduce-examples-2.7.1.jar wordcount /input /output
註:hadoop jar hadoop-mapreduce-examples-2.7.1.jar wordcount /input /output詳解
- 該命令中 /input 表示使用 HDFS 上根目錄(/)下的 input 目錄下所有文件作為程序輸入
- /output 表示使用 HDFS 根目錄下的 output 目錄存儲程序的輸出(該 output 文件,是本來不存在的,會由程序自動創建)
從終端可以看到如下命令輸出:
程序運行完畢,我們看一下輸出都有啥,執行命令:hadoop fs -cat /output/*
註:hadoop fs -cat 命令功能類似於linux下的 cat 命令
從上面的輸出,可以看到該程序將我們的輸入文件中的單詞出現情況,進行了統計。都是 key,value 的形式出現的
博客轉發:
http://blog.csdn.net/gulu_gulu_jp/article/details/51298164/
Hadoop下WordCount程序