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

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

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


編寫 WordcountMapper 、 WordcountReducer 類后,編寫WordcountDriver 驅(qū)動(dòng)類(主類),然后設(shè)置輸入輸出目錄在Windows系統(tǒng)上,調(diào)試程序是否正確。
在Eclipse 中導(dǎo)出wordcount 工程為wordcount.jar 包,將其放到HDFS 系統(tǒng)上運(yùn)行。
(1)將wordcount.jar 放入/opt/module/hadoop2.7.2 下。
(2)新建目錄。在Linux 本地/opt/module/hadoop2.7.2 下新建目錄winput,在該目錄下創(chuàng)建測試文件word.txt,并寫入相應(yīng)內(nèi)容,代碼如下:
[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 系統(tǒng)上新建目錄。在HDFS 的根目錄下創(chuàng)建目錄testinput,代碼如下:


圖2 HDFS 查看輸出文件

圖3 單詞統(tǒng)計(jì)結(jié)果
至此,統(tǒng)計(jì)出了word.txt 文件中每個(gè)單詞出現(xiàn)的次數(shù)。Hadoop分布式集群的搭建、配置、運(yùn)行測試全部完成。