Hadoop下WordCount程序

1、前言

在以前咱們已經在 CenOS6.5 下搭建好了 Hadoop2.x 的開發環境。既然環境已經搭建好了,那麼如今咱們就應該來乾點正事嘛!好比來一個Hadoop世界的HelloWorld,也就是WordCount程序(一個簡單的單詞計數程序).linux

2、WordCount 官方案例的運行

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

wc1

能夠看到,該 jar 文件中並不止有一個案例,固然咱們此時只想看看 WordCount 程序,其餘的靠邊邊。那麼咱們按照提示,執行命令:hadoop jar hadoop-mapreduce-examples-2.7.1.jar wordcount 看看有什麼東西?
wc2code

根據提示,它說是須要輸入文件和輸出目錄,那麼接下來,咱們就準備如下輸入文件和輸出目錄吧。blog

注:其實只須要準備輸入文件,不須要準備輸出目錄。由於 MapReduce 程序的運行,其輸出目錄不能是已存在的,不然會拋出異常。
這是爲了不數據覆蓋的問題。請看《Hadoop權威指南》

2.2 準備材料hadoop

爲了方便使用該官方 jar 文件,咱們在當前目錄下建立一個 input 目錄(你也能夠在別的目錄下建立目錄,目錄名也能夠本身取,喜歡就好),用來存放輸入文件。而後準備2個輸入文件。以下所示:
wc3開發

由於咱們是使用 HDFS 文件系統的,因此咱們要運行 WordCount 這個 MapReduce 程序的話,須要將文件放入 HDFS 上。所以咱們使用 HDFS 的文件系統命令,在HDFS文件系統根目錄下建立一個input目錄,用來保存輸入文件。執行命令:hadoop fs -mkdir /input
wc4input

注:hadoop fs -mkdir 命令是用來在 HDFS 上建立目錄的,相似於Linux下的 mkdir 命令

目錄建立好後,咱們須要把剛剛在本地文件系統上準備的輸入文件拷貝到 HDFS 上。執行命令:hadoop fs -put input/f*.txt /input
wc5博客

 

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 文件,是原本不存在的,會由程序自動建立)

 

從終端能夠看到以下命令輸出:
wc6

wc7
wc8

 

程序運行完畢,咱們看一下輸出都有啥,執行命令:hadoop fs -cat /output/*
wc9

注:hadoop fs -cat 命令功能相似於linux下的 cat 命令

從上面的輸出,能夠看到該程序將咱們的輸入文件中的單詞出現狀況,進行了統計。都是 key,value 的形式出現的

 

博客轉發:

   http://blog.csdn.net/gulu_gulu_jp/article/details/51298164/

相關文章
相關標籤/搜索