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