1. 程式人生 > >Hadoop下WordCount程序

Hadoop下WordCount程序

有一個 技術分享 hadoop 自己 wordcount examples pretty 準備工作 number

一、前言

在之前我們已經在 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包詳細信息。執行命令:hadoop jar hadoop-mapreduce-examples-2.7.1.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程序