李港 劉玉程
摘要 本文主要介紹分布式處理框架Hadoop的兩大核心技術(shù)HDFS和MapReduce,使讀者對Hadoop框架有一個基本的了解。
【關(guān)鍵詞】Hadoop HDFS MapReduce 分布式數(shù)據(jù)存儲 分布式數(shù)據(jù)處理
2008年9月4日《自然》(Nature)雜志刊登了一個名為“Big Data”的專輯,大數(shù)據(jù)這個詞匯開始逐漸進(jìn)入大眾的視野,云計算、大數(shù)據(jù)、物聯(lián)網(wǎng)技術(shù)的普及人類社會迎來了第三次信息化的浪潮,數(shù)據(jù)信息也在各行各業(yè)中呈現(xiàn)爆炸式的增長。根據(jù)全球互聯(lián)網(wǎng)中心數(shù)據(jù),到2020年底,全球的數(shù)據(jù)量將達(dá)到35ZB,大數(shù)據(jù)時代正式到來了,大數(shù)據(jù)的4V特性:多樣化( Variety)、快速化(Velocity)、大量化( Volume)、價值密度低(Value)使得對大數(shù)據(jù)的存儲和處理顯得格外重要,Google、Microsoft包括國內(nèi)的阿里巴巴、百度、騰訊等多家互聯(lián)網(wǎng)企業(yè)的巨頭都在使用分布式處理軟件框架--Hadoop平臺。
1 Hadoop平臺簡述
Hadoop是Apache基金會旗下的開源分布式計算平臺,為用戶提供了系統(tǒng)底層透明的分布式基礎(chǔ)架構(gòu)。隨著大數(shù)據(jù)相關(guān)技術(shù)的發(fā)展,Hadoop已發(fā)展成為眾多子項目的集合,包括MapReduce. HDFS. HBase. ZooKeeper.Pig、Hive、Sqoop等子項目。
HDFS是Hadoop集群中最基礎(chǔ)的部分,提供了大規(guī)模的數(shù)據(jù)存儲能力;MapReduce將對數(shù)據(jù)的處理封裝為Map和Reduce兩個函數(shù),實(shí)現(xiàn)了對大規(guī)模數(shù)據(jù)的處理;HBase (HadoopDatabase)是一個分布式的、面向列數(shù)據(jù)的開源數(shù)據(jù)庫,適合于大規(guī)模非結(jié)構(gòu)化數(shù)據(jù)的存儲
Zookeeper提供協(xié)同服務(wù),實(shí)現(xiàn)穩(wěn)定服務(wù)和錯誤恢復(fù);Hive作為Hadoop上的數(shù)據(jù)倉庫;Pig是基于Hadoop的大規(guī)模數(shù)據(jù)分析平臺,提供類似SQL的查詢語言Pig Latin; Sqoop主要用來在Hadoop和關(guān)系數(shù)據(jù)庫之間交換數(shù)據(jù)。其中最重要的兩大核心技術(shù)為:HDFS和MapReduce,下文將對這兩大核心技術(shù)做重點(diǎn)介紹。
2 HDFS技術(shù)
HDFS (Hadoop Disrributed File System)是Hadoop中的分布式文件系統(tǒng),是對Google的GFS (Google File System)的開源實(shí)現(xiàn)。HDFS的一個最重要的設(shè)計思想是“一次寫入,多次讀取”訪問方式,將大規(guī)模數(shù)據(jù)切分成Block數(shù)據(jù)塊進(jìn)行存儲,簡單的系統(tǒng)設(shè)計使得HDFS只能完成數(shù)據(jù)的寫入和讀取,不能對數(shù)據(jù)進(jìn)行修改,利用大量的廉價硬件設(shè)備實(shí)現(xiàn)并行讀寫和大規(guī)模數(shù)據(jù)存儲。
HDFS采用主從設(shè)計結(jié)構(gòu),通常一個HDFS集群中包含一個名稱節(jié)點(diǎn)(NameNode)和若干個數(shù)據(jù)節(jié)點(diǎn)( DaraNode)。名稱節(jié)點(diǎn)負(fù)責(zé)管理文件系統(tǒng)的命名空間,它保存了Fslmage和EditLog兩個核心的數(shù)據(jù)結(jié)構(gòu)如圖1所示。
Fslmage記錄了所有數(shù)據(jù)節(jié)點(diǎn)中文件的元數(shù)據(jù)信息,EditLog作為系統(tǒng)日志文件保存了所有針對文件的各種操作信息。名稱節(jié)點(diǎn)記錄了每個數(shù)據(jù)塊所存儲的數(shù)據(jù)節(jié)點(diǎn)的位置信息,但是每次系統(tǒng)重啟時會重新加載這些信息動態(tài)更改和保存這些信息。Fslmage中的信息會在名稱節(jié)點(diǎn)啟動時將其加載到內(nèi)存中,然后執(zhí)行EditLog中所保存的操作信息使得內(nèi)存中的元數(shù)據(jù)信息一直保持最新狀態(tài)。
數(shù)據(jù)節(jié)點(diǎn)主要負(fù)責(zé)對數(shù)據(jù)的存儲和讀取,根據(jù)客戶端或名稱節(jié)點(diǎn)的調(diào)度完成對數(shù)據(jù)的存儲和查詢,并定期將自己所保存的數(shù)據(jù)塊的信息發(fā)送給名稱節(jié)點(diǎn)。每個數(shù)據(jù)節(jié)點(diǎn)中的數(shù)據(jù)會被保存在各自節(jié)點(diǎn)的本地Linux文件系統(tǒng)中。
3 MapReduce技術(shù)
MapReduce是谷歌公司的核心計算模型,Hadoop框架中的MapReduce是對谷歌公司的MapReduce的開源實(shí)現(xiàn),是為了解決大規(guī)模數(shù)據(jù)的高效處理問題,將運(yùn)行在大規(guī)模集群上的并行計算過程高度地抽象成兩個函數(shù):Map和Reduce。MapReduce將存儲在分布式文件系統(tǒng)中的大規(guī)模數(shù)據(jù)集切分成許多獨(dú)立的分片( split),這些分片可以被多個Map任務(wù)并行處理。MapReduce設(shè)計的一個理念就是“計算向數(shù)據(jù)靠攏”,而不是“數(shù)據(jù)向計算靠攏”,大大減少了網(wǎng)絡(luò)傳輸開銷。
MapReduce分布式并行編程使程序員只關(guān)注Map和Reduce函數(shù)的實(shí)現(xiàn),而不需要處理分布式存儲、工作調(diào)度、負(fù)載均衡等問題,這些問題均由MapReduce框架進(jìn)行處理,Map和Reduce函數(shù)都是以鍵值對的形式作為輸入,按照一定的映射規(guī)則再通過鍵值對進(jìn)行輸出。
Map函數(shù)的輸入來自分布式文件系統(tǒng)的文件塊,可以是二進(jìn)制文件也可以是文檔文件,Map函數(shù)將其輸入按照規(guī)則轉(zhuǎn)換為鍵值對,鍵和值的類型是任意的,鍵并不能作為唯一標(biāo)識,一個Map任務(wù)也可以生成多個相同鍵的鍵值對。
Reduce函數(shù)就是將輸入的具有多個相同鍵的鍵值對以某種方式組合起來,輸出處理后的鍵值對,將輸入結(jié)果合并成一個文件。
4 結(jié)束語
大數(shù)據(jù)作為繼云計算、物聯(lián)網(wǎng)之后IT行業(yè)又一顛覆性的技術(shù),備受人們關(guān)注,Hadoop作為存儲處理大規(guī)模分布式系統(tǒng)框架提供了分布式存儲的HDFS和分布式處理的MapReduce,也包括其他的子項目,Hadoop的生態(tài)國會越來越完善,大數(shù)據(jù)技術(shù)必將引領(lǐng)IT行業(yè)走向新的巔峰。
參考文獻(xiàn)
[1]林子雨,大數(shù)據(jù)技術(shù)原理與應(yīng)用 概念、存儲、處理、分析與應(yīng)用[M].北京:人民郵電出版社,2016.
[2]夏靖波,云計算中Hadoop技術(shù)研究與應(yīng)用綜述[J].計算機(jī)科學(xué),2016 (11):43.