羅利
(湖南信息職業(yè)技術(shù)學(xué)院,湖南 長(zhǎng)沙410299)
Hadoop 是開(kāi)源的大數(shù)據(jù)平臺(tái),其分布式文件系統(tǒng)HDFS 進(jìn)行數(shù)據(jù)存儲(chǔ),計(jì)算框架MapReduce 做數(shù)據(jù)計(jì)算。用戶不需了解底層實(shí)現(xiàn)細(xì)節(jié)就可以實(shí)現(xiàn)海量數(shù)據(jù)存儲(chǔ)計(jì)算。實(shí)際生產(chǎn)過(guò)程中Hadoop 平臺(tái)搭建需要多個(gè)物理服務(wù)器,但是學(xué)生學(xué)習(xí)過(guò)程中并沒(méi)有真實(shí)的服務(wù)器供學(xué)習(xí)。
Hadoop 完全分布式集群搭建環(huán)境需要至少3 臺(tái)服務(wù)器,本實(shí)驗(yàn)選擇在VMware WorkStation 15 中創(chuàng)建3 臺(tái)虛擬機(jī),各系統(tǒng)環(huán)境要求集群節(jié)點(diǎn)規(guī)劃信息如表1 所示。
CentOS7 預(yù)裝了OpenJDK,先刪除OpenJDK。下載匹配環(huán)境的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 是否安裝成功,如果成功,會(huì)出現(xiàn)java 版本號(hào)等信息。
本文采用的Hadoop 版本為Apache Hadoop2.7.2。下載匹配環(huán)境的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是否安裝成功。
將上述已經(jīng)安裝好JDK 和Hadoop 的節(jié)點(diǎn)克隆2 個(gè)節(jié)點(diǎn),對(duì)新節(jié)點(diǎn)的MAC 地址重新生成,保證唯一性。
編輯/etc/hostname 文件,修改3 個(gè)節(jié)點(diǎn)主機(jī)名分別為master、slave1、slave2,用hostname 查看是否修改成功。
修改文件vi /etc/hosts,建立IP 地址和主機(jī)名映射關(guān)系:
192.168.200.100 master
192.168.200.101 slave1
192.168.200.102 slave2
再 關(guān) 閉 防 火 墻 , 在 /etc/selinux/confi 中 設(shè) 置“SELINUX=disabled”,systemctl disable firewalld 永久關(guān)閉防火墻。
表1 集群環(huán)境規(guī)劃信息
配置SSH 免密登錄,實(shí)現(xiàn)多個(gè)節(jié)點(diǎn)之間不輸入密碼即可登錄成功。
SSH 安全外殼協(xié)議,以master 節(jié)點(diǎn)免密登錄slave1 為例,配置如下:
1.5.1 生成公鑰和私鑰。在master 節(jié)點(diǎn)的.ssh 目錄(在用戶家目錄)下,執(zhí)行ssh-keygen -t rsa,執(zhí)行三個(gè)回車,生成公鑰id_rsa.pub 和私鑰id_rsa。
1.5.2 拷貝公鑰到需要免密登錄的目標(biāo)節(jié)點(diǎn)。執(zhí)行ssh-copy-id slave1 ,將公鑰拷貝到slave1 節(jié)點(diǎn)上。
至此,在master 節(jié)點(diǎn)可以ssh slave1 直接免密登錄。同理,在slave1 上需要配置免密登錄maser、slave2,slave2 上需要配置免密登錄maser、slave1。
在master 節(jié)點(diǎn)配置以下6 個(gè)配置文件。
2.1 hadoop-env.sh、yarn-env.sh、mapred-env.sh。這3 個(gè)文件中分別修改JAVA_HOME 環(huán)境變量,修改jdk 安裝路徑:
export JAVA_HOME=/opt/module/jdk1.8.0_144
2.2 core-site.xml。指定HDFS 中NameNode 的地址和Hadoop運(yùn)行時(shí)產(chǎn)生文件的存儲(chǔ)目錄。
2.3 hdfs-site.xml。指定HDFS 副本數(shù)為3 和輔助名稱節(jié)點(diǎn)配置。
2.4 yarn-site.xml。指定Reducer 獲取數(shù)據(jù)的方式為mapreduce_shuffle 和YARN 的ResourceManager 的地址。
2.5 mapred-site.xml
執(zhí)行cp mapred-site.xml.template mapred-site.xml 復(fù)制重命名文件,再修改指定MapReducer 運(yùn)行在yarn 框架:
2.6 所有配置文件分發(fā)到slave1 和slave2 節(jié)點(diǎn)。
第一次啟動(dòng)集群,先格式化NamaNode,再啟動(dòng)集群。master節(jié)點(diǎn)執(zhí)行hadoop namenode -format 格式化NamaNode,
配置slaves 文件,群起集群:
master
slave1
slave2
在master 節(jié)點(diǎn)直接用start-all.sh 命令啟動(dòng)所有進(jìn)程,jps 查看進(jìn)程:master 節(jié)點(diǎn)運(yùn)行了NamaNode、DataNode、NodeManager進(jìn)程,slave1 節(jié)點(diǎn)運(yùn)行ResourceManager、DataNode、NodeManager進(jìn) 程 ,slave2 節(jié) 點(diǎn) 運(yùn) 行 DataNode、NodeManager、SecondaryNameNode 進(jìn)程。
以上節(jié)點(diǎn)各項(xiàng)服務(wù)正常啟動(dòng)后,WEB 頁(yè)面可查看Hadoop集群的運(yùn)行狀態(tài),瀏覽器中輸入http://NameNode IP:50070 打開(kāi)HDFS 的管理界面。
集群搭建成功后在集群上運(yùn)行官方WordCount 案例,統(tǒng)計(jì)每個(gè)單詞出現(xiàn)的次數(shù)。
4.1 在Linux 本地/opt/module/hadoop2.7.2 下新建目錄winput,并創(chuàng)建測(cè)試文件word.txt,寫(xiě)入內(nèi)容:
4.2 HDFS 根目錄下創(chuàng)建目錄testinput:
[root@master hadoop-2.7.2]# hadoop fs -mkdir /testinput
4.3 本地文件系統(tǒng)的word.txt 上傳到HDFS 的/testinput 目錄下:
4.4 運(yùn)行wordcount 案例,將輸出結(jié)果輸出到/testoutput 下:
4.5 查看運(yùn)行結(jié)果。
本文利用虛擬機(jī)搭建了基于Hadoop 的大數(shù)據(jù)實(shí)驗(yàn)平臺(tái),以1 個(gè)master 節(jié)點(diǎn)和2 個(gè)slave 節(jié)點(diǎn)為例,介紹了Hadoop 集群分布式搭建的方法,最后使用該平臺(tái)進(jìn)行單詞統(tǒng)計(jì)實(shí)驗(yàn),經(jīng)過(guò)測(cè)試實(shí)踐,該搭建方法是正確的。說(shuō)明利用普通PC 機(jī)集群環(huán)境簡(jiǎn)單方便、成本低廉,對(duì)課程教學(xué)提供易于實(shí)現(xiàn)的解決方案,為后續(xù)學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。