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