劉斌++閆佳++陳興
摘要:隨著信息技術(shù)的迅猛發(fā)展,各行業(yè)產(chǎn)生的數(shù)據(jù)呈爆炸性的增長(zhǎng),而這些數(shù)據(jù)已遠(yuǎn)超過(guò)了傳統(tǒng)的計(jì)算技術(shù)與信息系統(tǒng)的處理能力。實(shí)現(xiàn)大數(shù)據(jù)的研究,以有效的信息技術(shù)的手段和計(jì)算方法,獲取、處理和分析各行業(yè)的大數(shù)據(jù)發(fā)現(xiàn)潛在的價(jià)值意義重大。該文就主要就是針對(duì)大數(shù)據(jù)下的Hadoop分布式架構(gòu)的討論。
關(guān)鍵詞:大數(shù)據(jù);Hadoop分布式架構(gòu);HDFS分布式文件系統(tǒng);MapReduce并行計(jì)算框架
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)01-0007-02
1 大數(shù)據(jù)的相關(guān)介紹
1.1 大數(shù)據(jù)的概念
大數(shù)據(jù)(Big Data),或稱巨量資料,指的是所涉及的資料量巨大到無(wú)法通過(guò)目前主流的軟件工具在合理時(shí)間內(nèi)達(dá)到擷取、管理、處理,并整理成為幫助企業(yè)經(jīng)營(yíng)決策更積極目的的資訊。大數(shù)據(jù)不同于集中在一個(gè)磁盤陣列中的海量數(shù)據(jù)集合。大數(shù)據(jù)是由分布存儲(chǔ)在集群節(jié)點(diǎn)中多個(gè)單節(jié)點(diǎn)的磁盤空間中能被進(jìn)行分布式處理的數(shù)據(jù)構(gòu)成的一個(gè)數(shù)據(jù)總體。大數(shù)據(jù)的規(guī)模可以隨著節(jié)點(diǎn)數(shù)量的不斷增加而不斷擴(kuò)大。大數(shù)據(jù)的價(jià)值在于基于人們歷史產(chǎn)生的各類數(shù)據(jù)可以產(chǎn)生出新的有價(jià)值的信息。
1.2 大數(shù)據(jù)的特點(diǎn)
1)大體量(Volume):大數(shù)據(jù)是指數(shù)據(jù)量非常龐大,其龐大體現(xiàn)在數(shù)據(jù)存儲(chǔ)量大、計(jì)算量大。
2)時(shí)效性(Velocity):大數(shù)據(jù)是指在數(shù)據(jù)不斷增長(zhǎng),增長(zhǎng)速度快,數(shù)據(jù)在存儲(chǔ)、傳輸時(shí)的處理速度快。
3)多樣性(Variety)大數(shù)據(jù)可以結(jié)構(gòu)化的表單,半結(jié)構(gòu)的文本、視頻、圖像、語(yǔ)音以及非結(jié)構(gòu)化的文件。
4)大價(jià)值(Value):在大量的數(shù)據(jù)中有價(jià)信息是很少的,但這些有價(jià)信息是通過(guò)分析挖掘才能夠發(fā)現(xiàn)的。雖然價(jià)值密度低,但其商業(yè)價(jià)值高。
2 Hadoop分布式系統(tǒng)的介紹
2.1 Hadoop系統(tǒng)
Hadoop是Apache基金會(huì)下的一個(gè)能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架,具有可靠、高效、可伸縮的數(shù)據(jù)處理特點(diǎn)。硬件角度看,Hadoop系統(tǒng)是應(yīng)用于普通的商用服務(wù)器集群的分布式存儲(chǔ)和并行計(jì)算系統(tǒng)。軟件角度看,Hadoop系統(tǒng)包括分布式存存儲(chǔ)和并行計(jì)算兩個(gè)部分。如圖1所示:系統(tǒng)的架構(gòu)圖。
2.2 HDFS分布式文件系統(tǒng)
(1)HDFS系統(tǒng)邏輯架構(gòu)
HDFS是一個(gè)多層次的架構(gòu),基于主從模式進(jìn)行管理,采用遠(yuǎn)程過(guò)程通訊即RPC來(lái)實(shí)現(xiàn)層間的交互。
HDFS由客戶端層、名稱節(jié)點(diǎn)層和數(shù)據(jù)節(jié)點(diǎn)層三個(gè)層次構(gòu)成。
客戶端層通過(guò)HDFS提供一個(gè)文件系統(tǒng)接口,通過(guò)名稱節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)的交互來(lái)讀寫HDFS的文件系統(tǒng)。客戶端首先從名稱節(jié)點(diǎn)(NameNode)上獲得文件數(shù)據(jù)塊的位置列表,然后直接從數(shù)據(jù)節(jié)點(diǎn)上讀取文件數(shù)據(jù),NameNode不參與文件的傳輸。
名稱節(jié)點(diǎn)層主要由名稱節(jié)點(diǎn)服務(wù)器和二級(jí)名稱節(jié)點(diǎn)構(gòu)成。NameNode執(zhí)行文件系統(tǒng)的命名操作。二級(jí)名稱節(jié)點(diǎn)Secondary NameNode主要輔助NameNode處理鏡像文件和事務(wù)日志,他會(huì)定期從NameNode上復(fù)制鏡像文件和事務(wù)日志到臨時(shí)目錄,合并生成新的日志文件后重新上傳到NameNode上。
數(shù)據(jù)節(jié)點(diǎn)層主要是由多個(gè)數(shù)據(jù)節(jié)點(diǎn)構(gòu)成。DataNode負(fù)責(zé)處理客戶的讀/寫請(qǐng)求,依照NameNode的命令,來(lái)執(zhí)行數(shù)據(jù)塊的創(chuàng)建、復(fù)制、刪除等工作。
(2)HDFS系統(tǒng)物理架構(gòu)
HDFS的典型部署方式是在兩個(gè)專門的服務(wù)器上運(yùn)行NameNode和Secondary NameNode,再將DataNode安裝在以機(jī)架位單位的多組機(jī)架的機(jī)器上。一個(gè)集群只有一個(gè)NameNode。
2.3 MapReduce并行計(jì)算框架
MapReduce是一種分布式軟件編程框架,其運(yùn)行依賴于分布式作業(yè)系統(tǒng)。分布式作業(yè)系統(tǒng)也是主從模式的,它由一個(gè)作業(yè)節(jié)點(diǎn)(JobTracker)和多個(gè)任務(wù)節(jié)點(diǎn)(TaskTracker)構(gòu)成。MapReduce向作業(yè)端發(fā)出一個(gè)數(shù)據(jù)處理請(qǐng)求,作業(yè)主節(jié)點(diǎn)接收到請(qǐng)求后,會(huì)將MapReduce的程序代碼經(jīng)網(wǎng)絡(luò)傳輸?shù)蕉鄠€(gè)作業(yè)節(jié)點(diǎn),由多個(gè)作業(yè)節(jié)點(diǎn)調(diào)用MapReduce程序?qū)Ρ镜氐臄?shù)據(jù)進(jìn)行處理。
(1)設(shè)計(jì)思路
MapReduce編程模式設(shè)計(jì)遵循“分而治之、移動(dòng)邏輯、屏蔽底層、處理定制”的設(shè)計(jì)思想。
分而治之是將大規(guī)模的數(shù)據(jù)分拆成N個(gè)數(shù)據(jù)塊部分,由一個(gè)主節(jié)點(diǎn)將MapReduce函數(shù)分發(fā)到各個(gè)數(shù)據(jù)塊的分支節(jié)點(diǎn)上去運(yùn)行,然后通過(guò)合并各分支節(jié)點(diǎn)的結(jié)果來(lái)得到最終結(jié)果。MapReduce并行計(jì)算模型如圖2所示。
圖2 MapReduce并行編程模型
2)基本概念
字面上看,map是映射,reduce是化簡(jiǎn),而邏輯上講,map即分析,reduce即歸納。Map函數(shù)是面向部分的分析,而reduce是面向整體的歸納,map函數(shù)對(duì)應(yīng)分布式的可處理特性,reduce函數(shù)對(duì)應(yīng)分布式的可和并特性。
1)map()函數(shù)
map()函數(shù)的輸入數(shù)據(jù)是由任務(wù)節(jié)點(diǎn)分配的預(yù)先已分割成固定大小的數(shù)據(jù)片段(splits),Hadoop會(huì)對(duì)每一個(gè)splits創(chuàng)建map任務(wù),此任務(wù)是調(diào)用map()函數(shù)對(duì)源鍵值對(duì)的鍵和值根據(jù)定義的規(guī)則進(jìn)行處理,生成中間值鍵值對(duì)。若將源鍵值對(duì)抽象為
(2)reduce()函數(shù)
reduce()函數(shù)的輸入數(shù)據(jù)是由節(jié)任務(wù)點(diǎn)把不同的map任務(wù)輸出的中間數(shù)組整合起來(lái)并行排序而產(chǎn)生的,然后調(diào)用用戶自定義的reduce()函數(shù),對(duì)輸入的
3)運(yùn)行機(jī)制
MapReduce的map任務(wù)和reduce任務(wù)都是在JobTracker的統(tǒng)一調(diào)度下由TaskTracker來(lái)執(zhí)行的。而任務(wù)從發(fā)起到執(zhí)行返回,一切都是源于MapReduce提交作業(yè)的那一刻。在作業(yè)提交到JobTracker服務(wù)器的過(guò)程中,JobTracker提供給MR客戶端JobClient 的runjob做了大量的工作。整個(gè)MapReduce運(yùn)行時(shí)序關(guān)系圖如圖3所示。
圖3 MapReduce運(yùn)行時(shí)序關(guān)系圖
1)首先,用戶程序客戶端通過(guò)作業(yè)客戶端接口程序JobClient提交一個(gè)用戶程序。
2)JobClient向JobTracker提交作業(yè)執(zhí)行請(qǐng)求獲得一個(gè)JobID.
3)JobClient同時(shí)也會(huì)將用戶程序作業(yè)和待處理的數(shù)據(jù)文件信息準(zhǔn)備好并存儲(chǔ)在HDFS中。
4)JobClient正式向JobTracker提交和執(zhí)行該作業(yè)。
5)JobTracker接收并調(diào)動(dòng)該作業(yè),進(jìn)行作業(yè)的初始化準(zhǔn)備工作,根據(jù)待處理數(shù)據(jù)的實(shí)際分片情況,調(diào)度和分配一定的Map節(jié)點(diǎn)來(lái)完成作業(yè)。
6)JobTracker查詢作業(yè)中的數(shù)據(jù)分片信息,構(gòu)建并準(zhǔn)備相應(yīng)的任務(wù)。
7)JobTracker啟動(dòng)TaskTracker節(jié)點(diǎn)開(kāi)始執(zhí)行具體的任務(wù)。
8)TaskTracker根據(jù)所分配的具體任務(wù),獲取相應(yīng)的作業(yè)和數(shù)據(jù)。
9)TaskTracker節(jié)點(diǎn)創(chuàng)建Java虛擬機(jī),并啟動(dòng)相應(yīng)的Map任務(wù)(或者Reduce任務(wù))的執(zhí)行。
10)TaskTracker執(zhí)行所分配的任務(wù)之后,若是Map任務(wù),則把中間結(jié)果數(shù)據(jù)輸出到HDFS中;若是Reduce任務(wù),則輸出最終結(jié)果。
3 總結(jié)
在當(dāng)代,我們已經(jīng)被海量的數(shù)據(jù)包圍。要從這些數(shù)據(jù)中提取出有價(jià)值的信息,就需要提供底層細(xì)節(jié)透明的分布式基礎(chǔ)設(shè)施。HDFS的高容錯(cuò)性、高伸縮性等優(yōu)點(diǎn),允許將Hadoop部署到廉價(jià)的硬件上,構(gòu)建分布式系統(tǒng);MapReduce分布式計(jì)算框架可以再不了解分布式系統(tǒng)底層細(xì)節(jié)的情況下開(kāi)發(fā)并行、分布的應(yīng)用程序,重復(fù)利用大規(guī)模的計(jì)算資源。
參考文獻(xiàn):
[1] 陳如明.大數(shù)據(jù)時(shí)代的挑戰(zhàn)、價(jià)值與應(yīng)用對(duì)策[J].移動(dòng)通信,2012(17).
[2] 成靜靜,喻朝新.基于云計(jì)算的大數(shù)據(jù)同意分析平臺(tái)研究與設(shè)計(jì)[J].廣東通信技術(shù),2013(3).
[3] 鄭啟龍,房明,汪勝.基于MapReduce模型的并行科學(xué)計(jì)算[J].微電子與計(jì)算機(jī),2009(8).
[4] 高洪,楊慶平,黃震江.基于Hadoop平臺(tái)的大數(shù)據(jù)分析關(guān)鍵技術(shù)標(biāo)準(zhǔn)化探討[J].信息技術(shù)與標(biāo)準(zhǔn)化,2013(5).