在以前咱們已經在 CenOS6.5 下搭建好了 Hadoop2.x 的開發環境。既然環境已經搭建好了,那麼如今咱們就應該來乾點正事嘛!好比來一個Hadoop世界的HelloWorld,也就是WordCount程序(一個簡單的單詞計數程序).linux
2.1 程序簡介oop
WordCount程序是hadoop自帶的案例,咱們能夠在 hadoop 解壓目錄下找到包含這個程序的 jar 文件(hadoop-mapreduce-examples-2.7.1.jar),該文件所在路徑爲 hadoop/share/hadoop/mapreduce。spa
咱們可使用 hadoop jar 命令查看該jar包詳細信息。執行命令:hadoop jar hadoop-mapreduce-examples-2.7.1.jar.net
能夠看到,該 jar 文件中並不止有一個案例,固然咱們此時只想看看 WordCount 程序,其餘的靠邊邊。那麼咱們按照提示,執行命令:hadoop jar hadoop-mapreduce-examples-2.7.1.jar wordcount 看看有什麼東西?
code
根據提示,它說是須要輸入文件和輸出目錄,那麼接下來,咱們就準備如下輸入文件和輸出目錄吧。blog
注:其實只須要準備輸入文件,不須要準備輸出目錄。由於 MapReduce 程序的運行,其輸出目錄不能是已存在的,不然會拋出異常。 這是爲了不數據覆蓋的問題。請看《Hadoop權威指南》
2.2 準備材料hadoop
爲了方便使用該官方 jar 文件,咱們在當前目錄下建立一個 input 目錄(你也能夠在別的目錄下建立目錄,目錄名也能夠本身取,喜歡就好),用來存放輸入文件。而後準備2個輸入文件。以下所示:
開發
由於咱們是使用 HDFS 文件系統的,因此咱們要運行 WordCount 這個 MapReduce 程序的話,須要將文件放入 HDFS 上。所以咱們使用 HDFS 的文件系統命令,在HDFS文件系統根目錄下建立一個input目錄,用來保存輸入文件。執行命令:hadoop fs -mkdir /input
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/