秦杰儀,曾 志, 孫 蕾,鄧昭宇
(湖南師范大學(xué), 湖南 長(zhǎng)沙 410081)
自2008年{Nature}發(fā)表有關(guān)大數(shù)據(jù)(Big Data)的專刊以來(lái),大數(shù)據(jù)的處理和分析已經(jīng)成為人們關(guān)注的焦點(diǎn)。大數(shù)據(jù)具有四個(gè)特點(diǎn):多樣化(Variety),海量性(Volume),快速性(Velocity)和靈活性(Vi-tality)。這四個(gè)特點(diǎn)要求我們對(duì)當(dāng)前分布式架構(gòu)的理念做出新的理解,在數(shù)據(jù)處理和數(shù)據(jù)整合上使用新的方法。Hadoop就是在此環(huán)境下成功應(yīng)用于大數(shù)據(jù)處理和分析的一個(gè)分布式架構(gòu)平臺(tái),它具有方便、健壯性、可擴(kuò)展性、搭建對(duì)硬件要求較低等優(yōu)點(diǎn),在大數(shù)據(jù)領(lǐng)域內(nèi)的分布式處理上占有較大的優(yōu)勢(shì)。
Hadoop是Apache基金會(huì)下的一款開(kāi)源軟件,它實(shí)現(xiàn)了包括分布式文件系統(tǒng)和MapReduce框架在內(nèi)的云計(jì)算軟件平臺(tái)的基礎(chǔ)架構(gòu),并且在此基礎(chǔ)架構(gòu)上整合了包括數(shù)據(jù)庫(kù)、云計(jì)算管理、數(shù)據(jù)倉(cāng)儲(chǔ)等一系列平臺(tái),是工業(yè)界和學(xué)術(shù)界進(jìn)行云計(jì)算應(yīng)用和研究的標(biāo)準(zhǔn)平臺(tái)。它的兩個(gè)核心組成部分為HDFS和 MapReduce。Hadoop使用Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS),其特點(diǎn)有以多節(jié)點(diǎn)協(xié)同代替單節(jié)點(diǎn)能力提升、處理超大文件及運(yùn)行于廉價(jià)的商用機(jī)器集群上。使用MapReduce實(shí)現(xiàn)對(duì)任務(wù)的并行處理功能,其特點(diǎn)是將計(jì)算與數(shù)據(jù)結(jié)合得更緊密、并使數(shù)據(jù)處理架構(gòu)具有平滑的可擴(kuò)展性。
如圖1在分布式存儲(chǔ)和分布式計(jì)算方面,Hadoop都使用了主/從(Master/Slave)架構(gòu)。Hadoop集群有5 個(gè)構(gòu)造模塊 NameNode、DataNode、Secondary NameNode、JobTracker、TaskTracker組成。其中 NameN-ode、Secondary NameNode、JobTracker運(yùn)行在 Master節(jié)點(diǎn)上,而DataNode、TaskTracker運(yùn)行在每個(gè)Slave節(jié)點(diǎn)上,以便Slave服務(wù)器運(yùn)行的數(shù)據(jù)處理程序能夠盡可能直接處理本機(jī)的數(shù)據(jù)。對(duì)Master節(jié)點(diǎn)需要特別說(shuō)明的是,在小集群中,Secondary NameNode可以屬于某個(gè)節(jié)點(diǎn);在大型集群中,NameNode和Secondary NameNode被分別部署在兩臺(tái)服務(wù)器上。
圖1 Hadoop集群節(jié)點(diǎn)示意圖
首先在主機(jī)中下載并安裝虛擬機(jī)VMware,新建4臺(tái)虛擬機(jī)并安裝CentOS系統(tǒng),服務(wù)器4臺(tái)(一臺(tái)為Master節(jié)點(diǎn),三臺(tái)為Slave節(jié)點(diǎn))
1)以root身份登錄KVM-Master服務(wù)器,添加一個(gè)hadoop用戶。
1)配置集群主機(jī)Hosts。
2)配置 SSH。
3)配置集群各主機(jī)間無(wú)密碼訪問(wèn)。
4)安裝主機(jī)和從機(jī)的hadoop環(huán)境。
5)格式化HDSF文件系統(tǒng)。
6)啟動(dòng)HDSF文件管理系統(tǒng)與MapReduce
解壓安裝源碼包并重命名。
主機(jī)Inter VT-x處于禁用中,需要進(jìn)入主機(jī)的BIOS設(shè)置中允許虛擬化。
使用start-dfs.sh和start-all.sh啟動(dòng)Hadoop時(shí)出錯(cuò):Error:JAVA_HOME is not set.#找不到JAVA_HOME。
此時(shí)應(yīng)檢查/usr/hadoop/conf/hadoop-env.sh文件中#export JAVA_HOME=的語(yǔ)句中JAVA_HOME的預(yù)設(shè)路徑是否與實(shí)際安裝路徑相同;并去除該句注釋’#’。
檢查Master的/root/.ssh/authorized_keys中是否含有所有Slave節(jié)點(diǎn)的公鑰。
在安裝配置完hadoop后,執(zhí)行startdfs.sh啟動(dòng)hadoop,執(zhí)行jps,發(fā)現(xiàn)NameNode啟動(dòng)起來(lái)了,而DataNode進(jìn)程卻沒(méi)有啟動(dòng)起來(lái)。這種問(wèn)題一般是由于多次格式化NameNode引起的,這個(gè)時(shí)候可以查看namenode和datanode的clusterID,如果datanode的clusterID和namenode的clusterID不一致,那么就將datanode中的clusterID修改成na?menode中的clusterID,再重新啟動(dòng)hadoop。
遇到問(wèn)題最好的辦法就是去查看相應(yīng)的log文件,然后找到問(wèn)題所在,有針對(duì)的解決,需要注意的是,每一次的啟動(dòng)日志都是追加在日志文件之后,所以需要拉到文件的最后界面進(jìn)行查看。
Hadoop架構(gòu)平臺(tái)是大數(shù)據(jù)技術(shù)中極為重要的一種分布式平臺(tái),本文對(duì)Hadoop核心組成部分的技術(shù)原理進(jìn)行了簡(jiǎn)要地說(shuō)明,并對(duì)hadoop的完全分布式環(huán)境進(jìn)行了搭建,這為日后的大數(shù)據(jù)的研究、處理等工作提供了一個(gè)很好的平臺(tái)基礎(chǔ),下一步我們的研究重心將是對(duì)相關(guān)的算法進(jìn)行深入的學(xué)習(xí)和優(yōu)化,并將算法應(yīng)用到hadoop平臺(tái)上,實(shí)現(xiàn)其并行化的運(yùn)行。
[1]安俊秀,王鵬.Hadoop大數(shù)據(jù)處理技術(shù)基礎(chǔ)與實(shí)踐[M].北京:人民郵電出版社,2015.
[2]Eric Sammer.Hadoop技術(shù)詳解[M].北京:人民郵電出版社,2013.
[3]陳琳.淺論Hadoop平臺(tái)在大數(shù)據(jù)中的應(yīng)用[J].太原學(xué)院學(xué)報(bào),2017,35(3):56-59.
[4]任建新.基于Hadoop平臺(tái)的大數(shù)據(jù)應(yīng)用系統(tǒng)架構(gòu)的研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2014.