自從云計(jì)算的概念被提出,不斷地有IT廠商推出自己的云計(jì)算平臺(tái)。Amazon的AWS、微軟的Azure和IBM的藍(lán)云等都是云計(jì)算的典型代表,但它們都是商業(yè)性平臺(tái),對(duì)于想要繼續(xù)研究和發(fā)展云計(jì)算技術(shù)的個(gè)人和科研團(tuán)體說,無法獲得更多的了解,Hadoop的出現(xiàn)給研究者帶來了希望。本章將重點(diǎn)介紹Hadoop的HDFS、MapReduce和 jHBase,以及Hadoop的具體應(yīng)用。
Hadoop簡(jiǎn)介
Hadoop是Apache開源組織的一個(gè)分布式計(jì)算框架,可以在大量廉價(jià)的硬件設(shè)備組成的集群上運(yùn)行應(yīng)用程序,為應(yīng)用程序提供了一組穩(wěn)定可靠的接口,旨在構(gòu)建一個(gè)具有高靠性和良好擴(kuò)展性的分布式系統(tǒng)。隨著云計(jì)算的逐漸流行,這一項(xiàng)目被越來越多的個(gè)人和企業(yè)所運(yùn)用。Hadoop的核心是HDFS、MapReduce和HBase,它分別是Google云計(jì)算最核心技術(shù)GFS、MapReduce和Bigtable的開源實(shí)現(xiàn)(表6-1 )。
Hadoop源于另外兩個(gè)開源項(xiàng)目Lucene和Nutch,它們是一脈相承的關(guān)系。Lucene是一個(gè)用Java開發(fā)的開源高性能全文檢索工具包,可以很方便地嵌入到各種實(shí)際應(yīng)用中,實(shí)現(xiàn)搜索/索引功能;Nutch是第一個(gè)開源的Web搜索引擎,它在Lucene的基礎(chǔ)上增加了網(wǎng)絡(luò)爬蟲、Web相關(guān)的一些功能及一些解析各類文檔格式的插件等,還包含一個(gè)分布式文件系統(tǒng)用于存儲(chǔ)數(shù)據(jù)。從Nutch 0.8.0開始,將其中實(shí)現(xiàn)分布式文件系統(tǒng)和MapReduce算法的代碼獨(dú)立出來,形成了一個(gè)新的開源項(xiàng)目,這就是HadooP。
Hadoop豐要由以下幾個(gè)子項(xiàng)目組成。
(1)Hadoop Common:即原來的Hadoop Core。這是整個(gè)Hadoop項(xiàng)目的核心,其他Hadoop子項(xiàng)目都是在Hadoop Common的基礎(chǔ)上發(fā)展的。
(2)Avro: Hadoop的RPC(遠(yuǎn)程過程調(diào)用)方案。
(3)Chukwa:—個(gè)用來管理大型分布式系統(tǒng)的數(shù)據(jù)采集系統(tǒng)。
(4)HBase:支持結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的分布式數(shù)據(jù)庫,是Bigtable的開源實(shí)現(xiàn)。
(5)HDFS(Hadoop Distributed File System):提供髙吞吐量的分布式文件系統(tǒng),是GFS的開源實(shí)現(xiàn)。
(6)Hive:提供數(shù)據(jù)摘要和查詢功能的數(shù)據(jù)倉庫。
(7)MapReduce:大型數(shù)據(jù)的分布式處理模型,是Google的MapReduce的開源實(shí)現(xiàn)。
(8)Pig:是在MapReduce上構(gòu)建的一種高級(jí)的數(shù)據(jù)流語言,它是Sawzall的開源實(shí)現(xiàn)。Sawzall是一種建立在MapReduce基礎(chǔ)上的領(lǐng)域語言,它的程序控制結(jié)構(gòu)(如if、 while等)與C語言無異,但它的領(lǐng)域語言語義使它完成相同功能的代碼比MapReduce的C++代碼簡(jiǎn)潔得多。
(9)ZooKeeper:用于解決分布式系統(tǒng)中一致性問題,是Chubby的開源實(shí)現(xiàn)。
在這些子項(xiàng)目中,Pig最初是由Yahoo的網(wǎng)格部門開發(fā)的,后來捐獻(xiàn)給了Apache基金會(huì)。Awo和Chukwa剛加入不久,目前還不是很成熟。從實(shí)現(xiàn)的功能來看,Hadoop幾乎就是Google的一個(gè)“翻版”,幾乎每個(gè)子項(xiàng)目都是Google某項(xiàng)技術(shù)的開源實(shí)現(xiàn)。
除了是開源的之外,Hadoop還有很多優(yōu)點(diǎn)。
(1)可擴(kuò)展。不論是存儲(chǔ)的可擴(kuò)展還是計(jì)算的可擴(kuò)展都是Hadoop的設(shè)計(jì)根本。
(2)經(jīng)濟(jì)。Hadoop可以運(yùn)行在廉價(jià)的PC上。
(3)可靠。HDFS的備份恢復(fù)機(jī)制及MapReduce的任務(wù)監(jiān)控機(jī)制保證了分布式處理的可靠性。
(4)高效。分布式文件系統(tǒng)的高效數(shù)據(jù)交互實(shí)現(xiàn)及MapReduce結(jié)合Local Data處理的模式,為高效處理海量的信息做了基礎(chǔ)準(zhǔn)備。
目前此項(xiàng)目正在進(jìn)行中,雖然現(xiàn)在還沒有到達(dá)1.0版本,和Google系統(tǒng)還有很大差距,但是前景非常好,值得我們關(guān)注。