Hadoop開源已經(jīng)實(shí)現(xiàn)
本節(jié)和大家一起學(xué)習(xí)一下Hadoop, 一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會(huì)開發(fā)的,在這里和大家分享一下它的開源實(shí)現(xiàn)以及Hadoop研究方面的內(nèi)容,希望通過本節(jié)的學(xué)習(xí)大家對(duì)Hadoop這一概念有清楚的認(rèn)識(shí)。
Hadoop概念
一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會(huì)開發(fā)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力高速運(yùn)算和存儲(chǔ)。
簡(jiǎn)單地說來,Hadoop是一個(gè)可以更容易開發(fā)和運(yùn)行處理大規(guī)模數(shù)據(jù)的軟件平臺(tái)。
Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(HadoopDistributedFileSystem),簡(jiǎn)稱HDFS。HDFS有著高容錯(cuò)性(fault-tolerent)的特點(diǎn),并且設(shè)計(jì)用來部署在低廉的(low-cost)硬件上。而且它提供高傳輸率(highthroughput)來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(largedataset)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求(requirements)這樣可以流的形式訪問(streamingaccess)文件系統(tǒng)中的數(shù)據(jù)。
開源實(shí)現(xiàn)
Hadoop是項(xiàng)目的總稱,起源于作者兒子的一只吃飽了的大象的名字。主要是由HDFS、MapReduce和Hbase組成。
HDFS是GoogleFileSystem(GFS)的開源實(shí)現(xiàn)。
MapReduce是GoogleMapReduce的開源實(shí)現(xiàn)。
HBase是GoogleBigTable的開源實(shí)現(xiàn)。
這個(gè)分布式框架很有創(chuàng)造性,而且有極大的擴(kuò)展性,使得Google在系統(tǒng)吞吐量上有很大的競(jìng)爭(zhēng)力。因此Apache基金會(huì)用Java實(shí)現(xiàn)了一個(gè)開源版本,支持Fedora、Ubuntu等Linux平臺(tái)。目前Hadoop受到Y(jié)ahoo的支持,有Yahoo員工長期工作在項(xiàng)目上,而且Yahoo內(nèi)部也準(zhǔn)備使用Hadoop代替原來的的分布式系統(tǒng)。
Hadoop實(shí)現(xiàn)了HDFS文件系統(tǒng)和MapRecue。用戶只要繼承MapReduceBase,提供分別實(shí)現(xiàn)Map和Reduce的兩個(gè)類,并注冊(cè)Job即可自動(dòng)分布式運(yùn)行。
目前Release版本是0.20.1。還不成熟,但是已經(jīng)集群規(guī)模已經(jīng)可以達(dá)到4000個(gè)節(jié)點(diǎn),是由Yahoo!實(shí)驗(yàn)室中構(gòu)建的。下面是此集群的相關(guān)數(shù)據(jù):
•4000節(jié)點(diǎn)
•2xquadcoreXeons@2.5ghzper節(jié)點(diǎn)
•4x1TBSATADiskper節(jié)點(diǎn)
•8GRAMper節(jié)點(diǎn)
•千兆帶寬per節(jié)點(diǎn)
•每機(jī)架有40個(gè)節(jié)點(diǎn)
•每個(gè)機(jī)架有4千兆以太網(wǎng)上行鏈路
•RedhatLinuxAS4(Nahantupdate5)
•SunJavaJDK1.6.0_05-b13
•所以整個(gè)集群有30000多個(gè)CPU,近16PB的磁盤空間!
HDFS把節(jié)點(diǎn)分成兩類:NameNode和DataNode。NameNode是唯一的,程序與之通信,然后從DataNode上存取文件。這些操作是透明的,與普通的文件系統(tǒng)API沒有區(qū)別。
MapReduce則是JobTracker節(jié)點(diǎn)為主,分配工作以及負(fù)責(zé)和用戶程序通信。
HDFS和MapReduce實(shí)現(xiàn)是完全分離的,并不是沒有HDFS就不能MapReduce運(yùn)算。
Hadoop也跟其他云計(jì)算項(xiàng)目有共同點(diǎn)和目標(biāo):實(shí)現(xiàn)海量數(shù)據(jù)的計(jì)算。而進(jìn)行海量計(jì)算需要一個(gè)穩(wěn)定的,安全的數(shù)據(jù)容器,才有了Hadoop分布式文件系統(tǒng)(HDFS,HadoopDistributedFileSystem)。
HDFS通信部分使用org.apache.hadoop.ipc,可以很快使用RPC.Server.start()構(gòu)造一個(gè)節(jié)點(diǎn),具體業(yè)務(wù)功能還需自己實(shí)現(xiàn)。針對(duì)HDFS的業(yè)務(wù)則為數(shù)據(jù)流的讀寫,NameNode/DataNode的通信等。
MapReduce主要在org.apache.hadoop.mapred,實(shí)現(xiàn)提供的接口類,并完成節(jié)點(diǎn)通信(可以不是hadoop通信接口),就能進(jìn)行MapReduce運(yùn)算。
目前這個(gè)項(xiàng)目還在進(jìn)行中,還沒有到達(dá)1.0版本,和Google系統(tǒng)的差距也非常大,但是進(jìn)步非???,值得關(guān)注。
另外,這是云計(jì)算(CloudComputing)的初級(jí)階段的實(shí)現(xiàn),是通向未來的橋梁。
Hadoop的發(fā)音音標(biāo)[hædu:p]
Hadoop研究
Hadoop是原Yahoo的DougCutting根據(jù)Google發(fā)布的學(xué)術(shù)論文研究而來。DougCutting給這個(gè)Project起了個(gè)名字,
就叫Hadoop。其實(shí)Hadoop也是DougCutting的孩子的玩具的名字,一個(gè)可愛的黃色小象。
現(xiàn)在,DougCutting在Cloudera公司。Cloudera的Hadoop是商用版。不同開Apache的開源版。
如果要研究Hadoop的話,在下載Apache的版本是一種不錯(cuò)的選擇。
只研究Apache版本的,不足以對(duì)Hadoop的理念理解。再對(duì)Cloudera版本的研究,會(huì)更上一層樓。
現(xiàn)在美國的AsterData,也是Hadoop的一個(gè)商用版,AsterData的MPP理念,ApplicationsWithin理念等等,
也都是值得研究。
Google的成功已經(jīng)說明了RDB的下一代就是Nosql(NotOnlySQl),比說說GFS,Hadoop等等。
Hadoop作為開源的版本來說,其魅力更是不可估量。
上文中說到Google的學(xué)術(shù)論文,其中包涵有
GoogleFileSystem(大規(guī)模分散文件系統(tǒng))
MapReduce(大規(guī)模分散FrameWork)
BigTable(大規(guī)模分散數(shù)據(jù)庫)
Chubby(分散鎖服務(wù))
這四大InfrastructureSoftware的陳述。
說起Google的GFS和Hadoop,不僅讓我想起了,Unix和Linux。
由Unix而來的開源Linux,現(xiàn)在更是家喻戶曉了。很多大型公司都起用Linux作為服務(wù)器。
相信不久的將來,Hadoop會(huì)像Linux一樣,席卷全球,惠而全球。
【編輯推薦】