孟永偉,黃建強(qiáng),曹騰飛,王曉英
(青海大學(xué) 計(jì)算機(jī)技術(shù)與應(yīng)用系,青海 西寧 810016)
Hadoop集群部署實(shí)驗(yàn)的設(shè)計(jì)與實(shí)現(xiàn)
孟永偉,黃建強(qiáng),曹騰飛,王曉英
(青海大學(xué) 計(jì)算機(jī)技術(shù)與應(yīng)用系,青海 西寧 810016)
闡述了Hadoop軟件框架中的兩大核心技術(shù)——HDFS分布式文件系統(tǒng)架構(gòu)和MapReduce分布式處理機(jī)制,設(shè)計(jì)了Hadoop集群部署實(shí)驗(yàn)的具體方案,主要包括實(shí)驗(yàn)?zāi)康摹?shí)驗(yàn)區(qū)域的劃分、節(jié)點(diǎn)的規(guī)劃等,并且以一組實(shí)驗(yàn)設(shè)備為例,詳細(xì)說明了配置方法,給出了實(shí)現(xiàn)過程。通過該實(shí)驗(yàn)?zāi)軌蜃寣W(xué)生從理論和實(shí)踐上掌握Hadoop有關(guān)的技術(shù)知識(shí)。
Hadoop;集群部署;HDFS;MapReduce;NameNode;DataNode;JobTrack;TaskTrack
在大數(shù)據(jù)時(shí)代,如何存儲(chǔ)和管理這些海量數(shù)據(jù)成為擺在人們面前亟待解決的問題。Hadoop采用分布式處理框架,充分利用計(jì)算機(jī)集群的強(qiáng)大處理能力,對(duì)海量數(shù)據(jù)進(jìn)行存儲(chǔ)和管理[1-4]。掌握Hadoop集群環(huán)境的部署過程,不僅讓學(xué)生對(duì)Hadoop的關(guān)鍵技術(shù)有一個(gè)清晰的認(rèn)識(shí),而且為后續(xù)學(xué)習(xí)和研究大數(shù)據(jù)奠定了良好的實(shí)驗(yàn)基礎(chǔ)。
Hadoop是一個(gè)能夠?qū)Υ髷?shù)據(jù)進(jìn)行分布式處理的軟件框架,它以可靠、高效、可伸縮的方式對(duì)大數(shù)據(jù)進(jìn)行處理[5]。Hadoop分布式的數(shù)據(jù)處理體系架構(gòu)由許多元素構(gòu)成,包括HDFS、MapReduce、Pig、Hive、HBase等。HDFS可以支持千萬級(jí)的大型分布式文件系統(tǒng);MapReduce用于超大型數(shù)據(jù)集的并行運(yùn)算;Pig可執(zhí)行加載數(shù)據(jù)、轉(zhuǎn)換數(shù)據(jù)格式以及存儲(chǔ)最終結(jié)果等一系列過程;Hive在Hadoop中扮演數(shù)據(jù)倉(cāng)庫(kù)的角色;HBase用于在Hadoop中支持大型稀疏表的列存儲(chǔ)數(shù)據(jù)環(huán)境。Hadoop框架的核心部分是HDFS的分布式數(shù)據(jù)存儲(chǔ)和MapReduce的數(shù)據(jù)并行處理機(jī)制[6-7]。
1.1 HDFS
HDFS處于Hadoop軟件框架的最底層,主要存儲(chǔ)集群中所有存儲(chǔ)節(jié)點(diǎn)上的文件,具有高傳輸、高容錯(cuò)等特點(diǎn),并且支持以流的形式訪問文件系統(tǒng)中的數(shù)據(jù),能夠?qū)崿F(xiàn)海量數(shù)據(jù)的管理。Hadoop集群主要由管理者(NameNode)和工作者(DataNode)兩類節(jié)點(diǎn)組成,并且分別以NameNode和DataNode模式運(yùn)行。NameNode主要負(fù)責(zé)管理文件系統(tǒng)名稱空間和控制外部客戶機(jī)的訪問,DataNode響應(yīng)來自HDFS客戶機(jī)的讀寫請(qǐng)求和NameNode的創(chuàng)建、刪除和復(fù)制塊的命令。
在Hadoop集群中,NameNode是唯一的,然而卻有大量的DataNode節(jié)點(diǎn),當(dāng)客戶機(jī)向NameNode節(jié)點(diǎn)發(fā)送請(qǐng)求時(shí),它都會(huì)將DataNode節(jié)點(diǎn)信息返回給客戶機(jī)。實(shí)際的I/O事務(wù)并不經(jīng)過NameNode,NameNode只是將文件的操作映射給DataNode。
HDFS中的文件被分成很多的塊,每個(gè)文件塊都會(huì)被復(fù)制多份,分別放到不同的DataNode節(jié)點(diǎn)中。最常用的策略是采用3個(gè)復(fù)制塊:2個(gè)數(shù)據(jù)塊復(fù)制存儲(chǔ)在同一機(jī)架的不同節(jié)點(diǎn),1個(gè)復(fù)制塊存儲(chǔ)在另一機(jī)架的某個(gè)節(jié)點(diǎn)[8-9]。DataNode節(jié)點(diǎn)定時(shí)給NameNode節(jié)點(diǎn)發(fā)送心跳信息,NameNode根據(jù)這些信息確定DataNode節(jié)點(diǎn)中的文件塊是否正常。如果出現(xiàn)異常,NameNode就會(huì)重新復(fù)制進(jìn)行修復(fù),保證了數(shù)據(jù)的安全性。
1.2 MapReduce
MapReduce的分布式處理機(jī)制是Hadoop的另一種核心技術(shù)[10]。它位于HDFS之上,由JobTracker和TaskTracker組成。
JobTracker是在單個(gè)主系統(tǒng)上啟動(dòng)的MapReduce應(yīng)用程序,它在Hadoop集群中是唯一的,主要負(fù)責(zé)控制MapReduce應(yīng)用程序的對(duì)象,在應(yīng)用程序提交之后,它將提供包含在HDFS中的輸入和輸出目錄。TaskTracker可以有若干個(gè),它主要是執(zhí)行JobTracker的各種命令,并且將本地節(jié)點(diǎn)的狀態(tài)傳送給JobTracker[11-12]。
MapReduce客戶機(jī)程序啟動(dòng)一個(gè)作業(yè)并將其進(jìn)行分片,同時(shí)向JobTracker發(fā)送作業(yè)請(qǐng)求。客戶機(jī)程序會(huì)將運(yùn)行作業(yè)所需要的資源復(fù)制到HDFS上,JobTracker接收到作業(yè)后,將其放到一個(gè)作業(yè)隊(duì)列中,等待作業(yè)調(diào)度器對(duì)其進(jìn)行調(diào)度。TaskTracker會(huì)定時(shí)地向JobTracker發(fā)心跳信息,如果TaskTracker已經(jīng)準(zhǔn)備好運(yùn)行一個(gè)新任務(wù),JobTracker根據(jù)輸入分片信息為每一個(gè)分片創(chuàng)建一個(gè)Map任務(wù),并將該任務(wù)分配給TaskTracker去執(zhí)行。對(duì)于一個(gè)Map任務(wù),JobTracker會(huì)選擇一個(gè)距離輸入分片文件最近的TaskTracker去執(zhí)行,這樣節(jié)省了網(wǎng)絡(luò)數(shù)據(jù)的傳輸時(shí)間;而對(duì)于一個(gè)Reduce任務(wù),JobTracker簡(jiǎn)單地從Reduce任務(wù)列表中選擇一個(gè)去執(zhí)行。Hadoop通過這樣的移動(dòng)計(jì)算程序而不是移動(dòng)數(shù)據(jù)的方式,避免了集群內(nèi)和系統(tǒng)間大量數(shù)據(jù)的頻繁移動(dòng),提高了機(jī)器的處理速度。
Hadoop集群部署實(shí)驗(yàn)的實(shí)驗(yàn)?zāi)康氖?(1)了解Hadoop的關(guān)鍵技術(shù)知識(shí);(2)掌握Hadoop集群環(huán)境部署過程。實(shí)驗(yàn)所需的硬件設(shè)備包括PC機(jī)、服務(wù)器、交換機(jī)和網(wǎng)線;軟件包括Redhat Enterprise Linux 5、hadoop1.0.3、jdk-6u21-linux-i586-rpm.bin、SecureCRT 5.5和Windows 7。
本實(shí)驗(yàn)室分為學(xué)生區(qū)和實(shí)驗(yàn)區(qū)。實(shí)驗(yàn)區(qū)放置供學(xué)生做實(shí)驗(yàn)使用的服務(wù)器以及連接服務(wù)器的以太網(wǎng)交換機(jī)各若干臺(tái),通過Vlan將每3臺(tái)服務(wù)器劃分為一組,提供學(xué)生部署Hadoop集群環(huán)境的基本硬件,每臺(tái)服務(wù)器安裝了Redhat Enterprise Linux 5操作系統(tǒng)。學(xué)生區(qū)有PC機(jī)和交換機(jī)各若干臺(tái),PC機(jī)上面安裝Windows 7操作系統(tǒng)和SecureCRT 5.5軟件。每2個(gè)學(xué)生一組,通過以太網(wǎng)進(jìn)行遠(yuǎn)程管理與配置。為了方便說明問題,選取一組實(shí)驗(yàn)設(shè)備進(jìn)行詳細(xì)配置,其拓?fù)浣Y(jié)構(gòu)如圖1所示。
圖1 Hadoop集群拓?fù)浣Y(jié)構(gòu)
3臺(tái)服務(wù)器中的一臺(tái)服務(wù)器作為Hadoop分布式文件系統(tǒng)(HDFS)的NameNode及MapReduce運(yùn)行過程中的JobTracker,這臺(tái)機(jī)器稱為主節(jié)點(diǎn)(Host1),其他2臺(tái)服務(wù)器作為HDFS的DataNode以及MapReduce運(yùn)行過程中的TaskTracker,稱為從節(jié)點(diǎn)(Host2和Host3)。節(jié)點(diǎn)部署情況見表1。
表1 節(jié)點(diǎn)部署情況
3.1 安裝基礎(chǔ)工具
(1) 在Host1節(jié)點(diǎn)上配置/etc/hosts文件并且安裝JDK(假設(shè)jdk-6u21-linux-i586-rpm.bin安裝包在/usr/local目錄下)。
[root@Host1~]vi /etc/hosts 192.168.0.11 Host1 192.168.0.12 Host2 192.168.0.13 Host3 [root@Host1~]cd /usr/local [root@Host1local]sh -ivh jdk-6u21-linux-i586-rpm.bin
(2) 配置環(huán)境變量并使之生效。
[root@Host1local]vi /etc/profile JAVA_HOME=/usr/java/jdk1.6.0_21 CLASSPATH=.:$JAVA_HOME/lib/tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH [root@Host1 conf]# source /etc/profile
(3) 驗(yàn)證是否安裝成功。
[root@Host1~]# java -version java version ″1.6.0_21″ Java(TM)SE Runtime Environment(build 1.6.0_21-b06) Java HotSpot(TM)Client VM(build 17.0-b16,mixed mode,sharing) [root@Host1 ~]
(4) 按上述方法配置其余2個(gè)節(jié)點(diǎn)。
3.2 配置3臺(tái)節(jié)點(diǎn)的SSH無密碼登錄
(1) 在Host1節(jié)點(diǎn)上生成密碼對(duì)。
[root@ Host1 local]# ssh-keygen -t rsa [root@ Host1 local]#cat root/.ssh/id_rsa.pub>>/root/.ssh/authorized_keys
(2) 將公鑰拷貝到Host2和Host3的/root/.ssh目錄下并安裝。
[root@ Host2.ssh]# mkdir /root/.ssh/ [root@ Host3.ssh]# mkdir /root/.ssh [root@ Host1 local]# scp /root/.ssh/id_rsa.pub root@ Host2:/root/.ssh [root@ Host1 local]# scp /root/.ssh/id_rsa.pub root@ Host3:/root/.ssh [root@ Host2 .ssh]#cat id_rsa.pub >> authorized_keys [root@ Host3 .ssh]#cat id_rsa.pub >> authorized_keys
(3) 驗(yàn)證SSH無密碼登錄(出現(xiàn)如下提示而無需輸入密碼,表明上一步設(shè)置成功)。
[root@Host1 ~]#ssh host1 Last Login:Wed May 14 05:02:37 2014 from host1 [root@Host1 ~] [root@Host1 ~]#ssh host2 Last Login:Wed May 14 05:03:30 2014 from host1 [root@Host2 ~] [root@Host1 ~]#ssh host3 Last Login:Wed May 14 04:48:24 2014 from host1 [root@Host3 ~]
3.3 安裝并配置Hadoop
(1) 將Hadoop-1.0.3.tar.gz解壓到/opt目錄下。
[root@ Host1 /opt]tar -zxvf hadoop-1.0.3.tar.gz
(2) 修改Hadoop-env.sh 配置。
[root@Host1 opt]# cd hadoop-1.0.3/conf [root@Host1 conf]# vi hadoop-env.sh export JAVA_HOME=/usr/java//jdk1.6.0_21
(3) 配置環(huán)境變量并使之生效。
[root@Host1 conf]# vi /etc/profile JAVA_HOME=/usr/java/jdk1.6.0_21 HADOOP_HOME=/opt/hadoop-1.0.3 CLASSPATH=.:$JAVA_HOME/lib/tools.jar PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$HADOOP_HOME/bin:$PATH export JAVA_HOME HADOOP_HOME CLASSPATH PATH [root@Host1 conf]# source /etc/profile
(4) 配置masters和slaves文件。
[root@Host1 conf]#vi masters 192.168.0.11 [root@Host1 conf]# vi slaves 192.168.0.12 192.168.0.13
(5) 配置文件hdfs-site.xml。
[root@Host1 conf]vi hdfs-site.xml
(6) 配置文件mapred-site.xml。
[root@Host1 conf]vi mapred-site.xml
(7) 配置文件core-site.xml。
[root@Host1 conf]vi core-site.xml
(8) 發(fā)布部署。
[root@Host1 conf]scp -r/opt/hadoop-1.0.3 root@ Host2:/opt/hadoop-1.0.3 [root@Host1 conf]scp -r/opt/hadoop-1.0.3 root@ Host3:/opt/hadoop-1.0.3
3.4 啟動(dòng)Hadoop
(1) 格式化分布式文件系統(tǒng)。
[root@Host1 hadoop-1.0.3]# bin/hadoop namenode -format
(2) 啟動(dòng)hdfs守護(hù)進(jìn)程。
[root@Host1 hadoop-1.0.3]# bin/start-dfs.sh
(3) 啟動(dòng)mapreduce守護(hù)進(jìn)程。
[root@Host1 hadoop-1.0.3]# bin/start-mapred.sh
3.5 驗(yàn)證安裝是否成功
(1) 使用jps命令查看啟動(dòng)的守護(hù)進(jìn)程。
[root@Host1 hadoop-1.0.3]#jps 28609 SecondaryNameNode 28703 JobTracker 30120 Jps 28438 NameNode [root@Host1 hadoop-1.0.3]# [root@Host1 hadoop-1.0.3]#ssh host2 Last Login:Wed May 14 05:04:54 2014 from host1 [root@Host2 ~]#jps 27758 DataNode 27879 TaskTracker 29360 Jps [root@Host2 ~]# [root@Host1 hadoop-1.0.3]#ssh host3 Last login:Wed May 14 05:05:52 2014 from host1 [root@Host3 ~]#jps 29937 Jps 28391 TaskTracker 28266 DataNode [root@Host3 ~]#
(2) 通過瀏覽器訪問。
輸入地址:http://192.168.0.11:50070 輸入地址:http://192.168.0.11:50030
(3) 在NameNode節(jié)點(diǎn)上查看集群狀態(tài)。
[root@Host1 hadoop-1.0.3]#bin/hadoop dfsadmin -report Configured Capacity:18149834752(16.9 GB) Present Capacity:10894651392(10.15 GB) DFS Remaining:10894479360(10.15 GB) DFS Used:172032(168 KB) DFS Used%:0% Under replicated blocks:0 Blocks With corrupt replicas:0 Missing blocks:0 Datanodes available:2(2 total,0 dead) Name:192.168.0.12:50010 Decommission Status:Normal Configured Capacity:9074917376(8.45 GB) DFS Used:86016(84 KB) Non DFS Used:3626475520(3.38 GB) DFS Remaining:5448355840(5.07 GB) DFS Used%:0% DFS Remaining%:60.04% Last contact:Wed May 14 05:34:14 PDT 2014 Name:192.168.0.13:50010 Decommission Status:Normal Configured Capacity:9074917376(8.45 GB) DFS Used:86016(84 KB) Non DFS Used:3628707840(3.38 GB) DFS Remaining:5446123520(5.07 GB) DFS Used%:0% DFS Remaining%:60.01% Last contact:Wed May 14 05:34:12 PDT 2014
Hadoop是一種新興的技術(shù),越來越多的學(xué)者加入到該項(xiàng)技術(shù)的學(xué)習(xí)和研究之中。本文闡述的Hadoop的兩個(gè)關(guān)鍵技術(shù)HDFS分布式文件系統(tǒng)架構(gòu)和MapReduce分布式處理機(jī)制,以及給出的Hadoop集群部署實(shí)驗(yàn)的方案及實(shí)現(xiàn)過程,可以幫助學(xué)生從理論和實(shí)踐方面更好地了解Hadoop技術(shù)。通過Hadoop集群部署實(shí)驗(yàn),能夠讓學(xué)生從理論和實(shí)踐上更好地掌握Hadoop有關(guān)的技術(shù)知識(shí),充分利用計(jì)算機(jī)集群的強(qiáng)大處理能力,對(duì)海量大數(shù)據(jù)進(jìn)行管理和研究。
References)
[1] White T.Hadoop權(quán)威指南[M].周敏奇,錢衛(wèi)寧,金澈清,等譯.2版.北京:清華大學(xué)出版社,2011.
[2] 陸嘉恒.Hadoop實(shí)戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2011.
[3] 王鵬.云計(jì)算的關(guān)鍵技術(shù)與應(yīng)用實(shí)例[M].北京:人民郵電出版社,2010.
[4] 王彥明,奉國(guó)和,薛云.近年來Hadoop國(guó)外研究綜述[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(6):1-5.
[5] 百度百科.Hadoop[EB/OL].[2014-04-30].http://baike.baidu.com/view/908354.htm?fr=aladdin#refIndex_7_908354.
[6] 郝樹魁.Hadoop HDFS和MapReduce架構(gòu)淺析[J].郵電設(shè)計(jì)技術(shù),2012(7):37-42.
[7] 彭仁通.Hadoop的核心技術(shù)研究或概述[J].科技廣場(chǎng),2012(5):39-41.
[8] 朱頌.分布式文件系統(tǒng)HdFS的分析[J].福建電腦,2012(4):63-65.
[9] 許春玲,張廣泉.分布式文件系統(tǒng)Hadoop HDFS與傳統(tǒng)文件系統(tǒng)Linux FS的比較與分析[J].蘇州大學(xué)學(xué)報(bào),2010,30(4):5-9.
[10] Dean J, Chemawat S. MapReduce:simplified data processing on large clusters[J].Communication of the ACM,2008,51(1):107-113.
[11] 謝桂蘭,羅省賢.基于Hadoop MapReduce模型的應(yīng)用研究[J].微型機(jī)與應(yīng)用,2010(8):4-7.
[12] 李玉林,董晶.基于Hadoop的MapReduce模型的研究與改進(jìn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2012,33(8):3110-3116.
Design and implementation of deploying Hadoop cluster experiments
Meng Yongwei,Huang Jianqiang,Cao Tengfei,Wang Xiaoying
(Department of Computer Technology and Applications,Qihai University,Xining 810016,China)
This article elaborate on two core technologies of Hadoop software framework, i.e., the architecture of Hadoop distributed file system and distributed processing mechanism of MapReduce. The concrete plan about the experiment of deploying Hadoop clusters is designed,which mainly includes the purpose of experiment,the division of experimental area,the planning of nodes.And by the case of experimental equipment, the configuration methods and implementation procedure are illustrated in detail. Through the experiment the students can master the technical knowledge related to Hadoop from theory and practice.
Hadoop; cluster; HDFS; MapReduce; NameNode; DataNode; JobTrack; TaskTrack
2014- 05- 27
清華攜手Google助力西部教育-科研培育項(xiàng)目“在線社會(huì)網(wǎng)絡(luò)模型研究及魯棒性分析”;國(guó)家自然科學(xué)基金項(xiàng)目(61363019);青海省科技創(chuàng)新能力促進(jìn)計(jì)劃項(xiàng)目(2014-ZJ-718;2014-ZJ-941Q)
孟永偉(1983—),男,河南商丘,碩士,講師,主要研究方向?yàn)閺?fù)雜網(wǎng)絡(luò)、無線傳感器網(wǎng)絡(luò)、系統(tǒng)結(jié)構(gòu).
E-mail:ywmeng@aliyun.com
TP311.52
A
1002-4956(2015)1- 0145- 5