• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Hadoop平臺的研究及其改進(jìn)

    2014-04-29 00:00:00蔡靜

    摘 要:本文論述了Hadoop的起源與發(fā)展,Hadoop是一個在集群上運(yùn)行大型數(shù)據(jù)庫處理應(yīng)用程序的開放式源代碼框架。它主要包括HDFS和MapReduce兩大套件,支持通過編程范例來創(chuàng)建并執(zhí)行的應(yīng)用程序,在很多大型網(wǎng)站上都已經(jīng)得到了應(yīng)用,可以說是目前最為廣泛應(yīng)用的開源云計(jì)算軟件平臺。但其發(fā)展時間較短,研究還不夠深入,還有較多值得改進(jìn)的地方。

    關(guān)鍵詞:Hapdoop;HDFS;MapReduce;云計(jì)算

    中圖分類號:TP311.13

    1 Hadoop的起源與發(fā)展

    隨著互聯(lián)網(wǎng)以及帶有各類傳感器的移動設(shè)備的普及,世界上的數(shù)字信息總量呈現(xiàn)爆炸性增長的態(tài)勢,人類已經(jīng)進(jìn)入大數(shù)據(jù)時代。海量數(shù)據(jù)的處理任務(wù)對現(xiàn)有的硬件系統(tǒng)提出了更高的要求。為增強(qiáng)系統(tǒng)處理數(shù)據(jù)的能力,可通過兩種途徑,一是“向上擴(kuò)展”,即增強(qiáng)單臺計(jì)算機(jī)的硬件配置以提升計(jì)算能力;二是“向外擴(kuò)展”,即用多臺計(jì)算機(jī)構(gòu)建集群,將數(shù)據(jù)處理任務(wù)按照某種調(diào)度方式分配給集群中的計(jì)算機(jī)。

    向上擴(kuò)展方案具有明顯的局限性:高性能的多核心CPU級及大容量的高速存儲器價格昂貴;當(dāng)CPU核心到達(dá)一定數(shù)量時,協(xié)調(diào)各處理器的負(fù)載,以及維持?jǐn)?shù)據(jù)的一致性都十分困難,系統(tǒng)的穩(wěn)定性下降;磁盤的讀寫速度慢,若將數(shù)據(jù)放入單臺機(jī)器處理,CPU的計(jì)算能力將得不到充分發(fā)揮。于是,向外擴(kuò)展方案成為大數(shù)據(jù)處理的主流方式。

    相比向上擴(kuò)展方案,向外擴(kuò)展方案的復(fù)雜度體現(xiàn)在軟件系統(tǒng)的設(shè)計(jì)上,Google在2003年和2004年先后發(fā)布了兩項(xiàng)關(guān)鍵技術(shù)—Google File System(GFS)與Mapreduce,GFS為分布式系統(tǒng)的文件管理提供了統(tǒng)一的用戶接口,使得用戶能夠像操作單臺電腦上的數(shù)據(jù)一樣操作分布在集群中的數(shù)據(jù);Mapreduce是一種計(jì)算模型,用戶只需將計(jì)算問題分解為映射(map)與歸約(reduce)兩個階段,mapreduce系統(tǒng)就能夠自動地將計(jì)算任務(wù)分派到集群中,實(shí)現(xiàn)高效的計(jì)算。GFS與Mapreduce的綜合使用能夠?qū)崿F(xiàn)一個高性能的大數(shù)據(jù)的平臺。

    與此同時,工程師Doug把這兩項(xiàng)技術(shù)能夠應(yīng)用在他正在開發(fā)搜索引擎的項(xiàng)目,用Java語言實(shí)現(xiàn)了一個基于GFS和Mapreduce的開源平臺,即Hadoop的雛形。Hadoop出現(xiàn)后受到很大的關(guān)注,它也從Lucene的一個子項(xiàng)目迅速成為Apache開源基金的頂級項(xiàng)目。

    2006年Yahoo雇傭了Doug并成為Hadoop項(xiàng)目最主要的支持者之一。Yahoo從建立Hadoop研究集群起便不斷的刷新著Hadoop的最大節(jié)點(diǎn)數(shù),直到超過上萬個節(jié)點(diǎn)。Hadoop處理數(shù)據(jù)的能力也在飛速的增加,2009年Yahoo已能在1400個節(jié)點(diǎn)的Hadoop集群上于59秒內(nèi)完成了500GB數(shù)據(jù)的排序。

    2011年12月,Hadoop正式推出1.0.0版本,標(biāo)志著其已經(jīng)初具生產(chǎn)規(guī)模。Hadoop的用戶包括Facebook、Amazon、淘寶、百度在內(nèi)的許多大型互聯(lián)網(wǎng)公司。

    2 Hadoop的組成

    Hadoop發(fā)展至今已經(jīng)擁有了眾多的組件,其中最主要的兩個是Hadoop Distributed File System(HDFS)和Mapreduce。它們是Google的GFS和Mapreduce的直接實(shí)現(xiàn),是一對互補(bǔ)而截然不同的技術(shù)。

    2.1 HDFS。HDFS是一個通過集群擴(kuò)展來存儲超大數(shù)據(jù)集的分布式文件系統(tǒng),集群中的每臺計(jì)算機(jī)都是一個節(jié)點(diǎn),HDFS該將數(shù)據(jù)存儲在不同的節(jié)點(diǎn)上,并為用戶提供統(tǒng)一的文件操作接口,其特征如下:(1)HDFS以64MB為最小存儲單位存儲數(shù)據(jù)。這比常用的許多文件系統(tǒng)要大得多。(2)HDFS針對吞吐量而不是延遲進(jìn)行優(yōu)化。(3)HDFS針對一次寫多次讀的情況進(jìn)行優(yōu)化。(4)每個存儲節(jié)點(diǎn)運(yùn)行著一個DataNode進(jìn)程來管理該節(jié)點(diǎn)上的數(shù)據(jù)塊,而這些進(jìn)程被集群中唯一的名為NameNode的進(jìn)程調(diào)度。(5)HDFS通過復(fù)制而不是物理冗余來應(yīng)對磁盤故障。每個組成文件的數(shù)據(jù)塊被存放在集群中不同的節(jié)點(diǎn)上。NameNode監(jiān)視著每一個DataNode的報(bào)告確保磁盤故障不會導(dǎo)致數(shù)據(jù)塊丟失。如果磁盤故障導(dǎo)致某個數(shù)據(jù)塊無法讀取,它會調(diào)度另一個存有該數(shù)據(jù)塊的節(jié)點(diǎn)來提供數(shù)據(jù)塊。

    HDFS的基本工作方式:用戶(client)通過TCP/IP網(wǎng)絡(luò)訪問并操作HDFS,而底層Datanode中數(shù)據(jù)塊的存儲與交換,由Namenode自動管理。

    2.2 Mapreduce。Mapreduce是一種大數(shù)據(jù)處理的解決方案,該方案借用了函數(shù)式編程(functional programming)中的map和reduce的思想,將它們組合成一個簡約而高效的并行編程范式。Mapreduce處理“鍵值”數(shù)據(jù),即每條數(shù)據(jù)由一個鍵(key)和一個值(value)組成,若輸入數(shù)據(jù)本身不具有這種結(jié)構(gòu),則通過某些方式將其轉(zhuǎn)換為鍵值結(jié)構(gòu),例如對于一個文本文件,鍵可以是某行的編號,值則是該行的內(nèi)容,這也是Hadoop默認(rèn)的文件格式轉(zhuǎn)換方式。

    Mapreduce為兩個步驟:映射(map)與歸約(reduce)。實(shí)現(xiàn)map的函數(shù)稱為mapper,它將輸入的鍵值數(shù)據(jù)進(jìn)行某種變換,并輸出一組新的鍵值數(shù)據(jù)。實(shí)現(xiàn)reduce的函數(shù)稱為reducer,它將mapper的輸出中具有相同鍵的數(shù)據(jù)聚合在一起處理,并生成Mapreduce的最終輸出,輸出的格式同樣也是鍵值形式的,因?yàn)橐粋€完整的數(shù)據(jù)處理流程往往包含多次的map和reduce,一次reduce的輸出可能作為下一次map的輸入。

    使用Mapreduce系統(tǒng)時,用戶只需提供算法的核心處理邏輯,主要包含:將輸入文件轉(zhuǎn)換為鍵值數(shù)據(jù)的函數(shù),對一條鍵值數(shù)據(jù)進(jìn)行轉(zhuǎn)換的mapper函數(shù),以及對一個鍵和它對應(yīng)的所有值進(jìn)行歸約的reducer函數(shù)等。用戶以Java語言的形式編寫這些函數(shù),并將其編譯,打包,最后上傳給Mapreduce系統(tǒng)自動處理。

    Mapreduce系統(tǒng)由TaskTracker和JobTracker兩個部分組成。所有處理數(shù)據(jù)的節(jié)點(diǎn)都包含一個TaskTracker,每個TaskTracker都負(fù)責(zé)處理一部分的map或reduce任務(wù)。JobTracker負(fù)責(zé)管理并監(jiān)控所有TaskTracker的運(yùn)行情況,并在它們出錯時將未完成的任務(wù)發(fā)送給新的TaskTracker執(zhí)行。

    Mapreduce的工作流程可以用一個例子說明,如圖1展示了一個簡單的單詞計(jì)數(shù)功能在Mapreduce上的執(zhí)行過程:

    圖1 單詞計(jì)數(shù)功能在Mapreduce上的執(zhí)行過程

    圖中,原始的鍵值數(shù)據(jù)是“行號-行內(nèi)容”,通過mapper處理,它被轉(zhuǎn)換為“單詞-1”,中間的shuffling過程將鍵相同的所有條目聚合在一起,送入同一個reducer處理,在reduce步驟中,所有鍵(單詞)相同的條目被累加在一起,形成最終的輸出。

    2.3 其它擴(kuò)展功能。除了HDFS和Mapreduce這兩個核心套件之外,Hadoop平臺還包括其它的擴(kuò)展擴(kuò)展套件,它們共同組成了一個Hadoop生態(tài)系統(tǒng)。其中,最重要的擴(kuò)展套件包括容納PB數(shù)據(jù)量的分布式數(shù)據(jù)庫HBase、數(shù)據(jù)存儲套件Hive和機(jī)器學(xué)習(xí)與智能推薦系統(tǒng)套件Mahout。

    3 Hadoop的不足和改進(jìn)

    Hadoop的架構(gòu)設(shè)計(jì)使其具有非常好的靈活性。然而,Hadoop并非在任何情況下都是最優(yōu)選擇,原因如下:1.Hadoop是一個批處理系統(tǒng),當(dāng)一個任務(wù)由Hadoop執(zhí)行時,必須等到所有結(jié)果都計(jì)算出來才能停止,因此Hadoop不能勝任一些需要低延遲的任務(wù),如實(shí)時系統(tǒng)。2.Hadoop在配置任務(wù)時的花銷非常大,如果數(shù)據(jù)集很小,任務(wù)配置的時間甚至?xí)^運(yùn)行時間。所以Hadoop不適合小數(shù)據(jù)集的數(shù)據(jù)分析。3.Hadoop處理大量小文件的能力弱。小文件指的是大小比HDFS數(shù)據(jù)塊大小(默認(rèn)64M)小得多的文件。如果在HDFS中存儲大量的小文件,每一個文件都會對應(yīng)一個數(shù)據(jù)塊,系統(tǒng)要消耗Namenode大量的內(nèi)存來保存這些數(shù)據(jù)塊信息。4.Hadoop的開源性是一把雙刃劍,技術(shù)保密和技術(shù)支持都是需要考慮的因素。

    參考文獻(xiàn):

    [1]Tom White.Hadoop權(quán)威指南(第二版)[M].北京:清華大學(xué)出版社,2011.

    [2]張密密.MapReduce模型在Hadoop實(shí)現(xiàn)中的性能分析及改進(jìn)優(yōu)化[D].成都:電子科技大學(xué),2010.

    [3]徐文強(qiáng).基于HDFS的云存儲系統(tǒng)研究[D].上海:上海交通大學(xué),2011.

    作者簡介:蔡靜(1982.05-),女,碩士,研究方向:計(jì)算機(jī)應(yīng)用、模式識別。

    作者單位:武昌工學(xué)院 信息工程系,武漢 430065

    邳州市| 乌鲁木齐县| 文成县| 长丰县| 磐安县| 乡城县| 平安县| 宁远县| 肇源县| 屯门区| 桓仁| 嘉鱼县| 塔城市| 五河县| 翼城县| 长汀县| 白玉县| 九台市| 紫金县| 独山县| 平泉县| 汕头市| 澄江县| 上饶县| 扶沟县| 乐山市| 上林县| 普安县| 河东区| 正镶白旗| 台江县| 利津县| 奉贤区| 沁阳市| 珲春市| 垣曲县| 庄浪县| 郑州市| 吉林省| 屯留县| 古蔺县|