羅利
(湖南信息職業技術學院,湖南 長沙410299)
Hadoop 是開源的大數據平臺,其分布式文件系統HDFS 進行數據存儲,計算框架MapReduce 做數據計算。用戶不需了解底層實現細節就可以實現海量數據存儲計算。實際生產過程中Hadoop 平臺搭建需要多個物理服務器,但是學生學習過程中并沒有真實的服務器供學習。
Hadoop 完全分布式集群搭建環境需要至少3 臺服務器,本實驗選擇在VMware WorkStation 15 中創建3 臺虛擬機,各系統環境要求集群節點規劃信息如表1 所示。
CentOS7 預裝了OpenJDK,先刪除OpenJDK。下載匹配環境的JDK jar 包,解壓,將JDK 路徑添加到/etc/profile 末尾:
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile 使文件生效。java -version 檢查JDK 是否安裝成功,如果成功,會出現java 版本號等信息。
本文采用的Hadoop 版本為Apache Hadoop2.7.2。下載匹配環境的Hadoop jar 包,解壓,修改/etc/profile 文件:
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
source /etc/profile 使文件生效,hadoop version 檢查Hadoop是否安裝成功。
將上述已經安裝好JDK 和Hadoop 的節點克隆2 個節點,對新節點的MAC 地址重新生成,保證唯一性。
編輯/etc/hostname 文件,修改3 個節點主機名分別為master、slave1、slave2,用hostname 查看是否修改成功。
修改文件vi /etc/hosts,建立IP 地址和主機名映射關系:
192.168.200.100 master
192.168.200.101 slave1
192.168.200.102 slave2
再 關 閉 防 火 墻 , 在 /etc/selinux/confi 中 設 置“SELINUX=disabled”,systemctl disable firewalld 永久關閉防火墻。

表1 集群環境規劃信息
配置SSH 免密登錄,實現多個節點之間不輸入密碼即可登錄成功。
SSH 安全外殼協議,以master 節點免密登錄slave1 為例,配置如下:
1.5.1 生成公鑰和私鑰。在master 節點的.ssh 目錄(在用戶家目錄)下,執行ssh-keygen -t rsa,執行三個回車,生成公鑰id_rsa.pub 和私鑰id_rsa。
1.5.2 拷貝公鑰到需要免密登錄的目標節點。執行ssh-copy-id slave1 ,將公鑰拷貝到slave1 節點上。
至此,在master 節點可以ssh slave1 直接免密登錄。同理,在slave1 上需要配置免密登錄maser、slave2,slave2 上需要配置免密登錄maser、slave1。
在master 節點配置以下6 個配置文件。
2.1 hadoop-env.sh、yarn-env.sh、mapred-env.sh。這3 個文件中分別修改JAVA_HOME 環境變量,修改jdk 安裝路徑:
export JAVA_HOME=/opt/module/jdk1.8.0_144
2.2 core-site.xml。指定HDFS 中NameNode 的地址和Hadoop運行時產生文件的存儲目錄。


2.3 hdfs-site.xml。指定HDFS 副本數為3 和輔助名稱節點配置。

2.4 yarn-site.xml。指定Reducer 獲取數據的方式為mapreduce_shuffle 和YARN 的ResourceManager 的地址。

2.5 mapred-site.xml
執行cp mapred-site.xml.template mapred-site.xml 復制重命名文件,再修改指定MapReducer 運行在yarn 框架:

2.6 所有配置文件分發到slave1 和slave2 節點。

第一次啟動集群,先格式化NamaNode,再啟動集群。master節點執行hadoop namenode -format 格式化NamaNode,
配置slaves 文件,群起集群:
master
slave1
slave2
在master 節點直接用start-all.sh 命令啟動所有進程,jps 查看進程:master 節點運行了NamaNode、DataNode、NodeManager進程,slave1 節點運行ResourceManager、DataNode、NodeManager進 程 ,slave2 節 點 運 行 DataNode、NodeManager、SecondaryNameNode 進程。
以上節點各項服務正常啟動后,WEB 頁面可查看Hadoop集群的運行狀態,瀏覽器中輸入http://NameNode IP:50070 打開HDFS 的管理界面。
集群搭建成功后在集群上運行官方WordCount 案例,統計每個單詞出現的次數。
4.1 在Linux 本地/opt/module/hadoop2.7.2 下新建目錄winput,并創建測試文件word.txt,寫入內容:

4.2 HDFS 根目錄下創建目錄testinput:
[root@master hadoop-2.7.2]# hadoop fs -mkdir /testinput
4.3 本地文件系統的word.txt 上傳到HDFS 的/testinput 目錄下:

4.4 運行wordcount 案例,將輸出結果輸出到/testoutput 下:

4.5 查看運行結果。

本文利用虛擬機搭建了基于Hadoop 的大數據實驗平臺,以1 個master 節點和2 個slave 節點為例,介紹了Hadoop 集群分布式搭建的方法,最后使用該平臺進行單詞統計實驗,經過測試實踐,該搭建方法是正確的。說明利用普通PC 機集群環境簡單方便、成本低廉,對課程教學提供易于實現的解決方案,為后續學習打下堅實的基礎。