◆羅利
(湖南信息職業技術學院 湖南 410299)
Hadoop 是Apache 基金會支持,采用Java 語言開發[1],以分布式文件系統HDFS 和分布式計算框架MapReduce 為核心[2],以及一些其他子項目組成的分布式系統架構。詞頻統計是大數據分析中經常要使用的功能,利用Hadoop 平臺可以實現詞頻統計,Wordcount 案例是Hadoop 的經典案例之一,以空格的形式對英文進行詞頻統計,初學者在學習Mapreduce 編程時都是以Wordcount 案例作為入門。本文利用Hadoop 分布式數據處理,實現Wordcount 案例統計單詞出現次數的功能。
本實驗Hadoop 完全分布式集群搭建環境由3 臺服務器構成,需要的軟件和系統環境要求如表1所示。

表1 集群環境信息
Hadoop 集群主要有一個NameNode 節點和3 個DataNode 節點構成,搭建主要步驟如下:
(1)安裝Centos7 操作系統的虛擬機。
(2)安裝JDK。
(3)安裝Hadoop 2.7.2。
(4)SSH 免密登錄。
(5)配置集群。
(6)啟動集群。
用于開發的電腦需要安裝JDK 和hadoop2.7.2(本文在Win10 中開發),同時把hadoop2.7.2/bin 目錄下的hadooo.dll 文件拷貝到C:WindowsSystem32 目錄下。然后添加環境變量HADOOP_HOME,變量值為HADOOP 安裝路徑:E:hadoop-2.7.2。并在Path 環境變量中添加%HADOOP_HOME%in。在Windows 的控制臺下java-version、hadoop version 出現正確的jdk 版本和Hadoop 版本,說明環境準備成功。
然后在Eclipse 中配置Hadoop 開發環境,將下載的hadoop 插件hadoop-eclipse-plugin-2.7.2.jar 復制到eclipse 安裝目錄下的plugins 目錄下,重啟eclipse。
接著打開 Eclipse,增加 Map/Reduce 功能區,打開Window-Perspective-open Perspective-other,選擇Map/Reduce 選項,添加進來。然后導入 MapReduce 運行依賴的 jar 包,打開Window-Preferences,選擇 Hadoop Map/Reduce,瀏覽hadoop 的安裝路徑,點擊Apply,如圖1所示。

圖1 Hadoop 依賴設置
把需要統計的文檔放入目錄src_data 中,運行程序,文檔執行Map 和Reduce 兩個階段。Map 和Reduce 階段的輸入輸出形式為鍵值對
啟動hadoop 集群,Eclipse 連接集群編寫mapreduce 程序(基于Java 語言)統計單詞出現次數。改寫Mapper 類和Reducer 類,核心代碼如下:


編寫 WordcountMapper 、 WordcountReducer 類后,編寫WordcountDriver 驅動類(主類),然后設置輸入輸出目錄在Windows系統上,調試程序是否正確。
在Eclipse 中導出wordcount 工程為wordcount.jar 包,將其放到HDFS 系統上運行。
(1)將wordcount.jar 放入/opt/module/hadoop2.7.2 下。
(2)新建目錄。在Linux 本地/opt/module/hadoop2.7.2 下新建目錄winput,在該目錄下創建測試文件word.txt,并寫入相應內容,代碼如下:
[root@master hadoop-2.7.2]# mkdir winput
[root@maste hadoop-2.7.2]# cd winput/
[root@maste winput]# touch word.txt
[root@master winput]# cat word.txt
hadoop hdfs yarn mapreduce
spark hbase hdfs
hadoop hadoop spark
(3)HDFS 系統上新建目錄。在HDFS 的根目錄下創建目錄testinput,代碼如下:


圖2 HDFS 查看輸出文件

圖3 單詞統計結果
至此,統計出了word.txt 文件中每個單詞出現的次數。Hadoop分布式集群的搭建、配置、運行測試全部完成。