Linux Hadoop運(yùn)行應(yīng)用程序開源實(shí)現(xiàn)
Linux Hadoop還是比較常用的,于是我研究了一下Linux Hadoop,在這里拿出來和大家分享一下,希望對(duì)大家有用。Linux Hadoop是什么.
Linux Hadoop是一個(gè)用于運(yùn)行應(yīng)用程序在大型集群的廉價(jià)硬件設(shè)備上的框架。Linux Hadoop為應(yīng)用程序透明的提供了一組穩(wěn)定/可靠的接口和數(shù)據(jù)運(yùn)動(dòng)。在Linux Hadoop中實(shí)現(xiàn)了Google的MapReduce算法,它能夠把應(yīng)用程序分割成許多很小的工作單元,每個(gè)單元可以在任何集群節(jié)點(diǎn)上執(zhí)行或重復(fù)執(zhí)行。
此外,Linux Hadoop還提供一個(gè)分布式文件系統(tǒng)用來在各個(gè)計(jì)算節(jié)點(diǎn)上存儲(chǔ)數(shù)據(jù),并提供了對(duì)數(shù)據(jù)讀寫的高吞吐率。由于應(yīng)用了map/reduce和分布式文件系統(tǒng)使得Linux Hadoop框架具有高容錯(cuò)性,它會(huì)自動(dòng)處理失敗節(jié)點(diǎn)。已經(jīng)在具有600個(gè)節(jié)點(diǎn)的集群測試過Linux Hadoop框架。
Google的數(shù)據(jù)中心使用廉價(jià)的Linux PC機(jī)組成集群,在上面運(yùn)行各種應(yīng)用。即使是分布式開發(fā)的新手也可以迅速使用Google的基礎(chǔ)設(shè)施。核心組件是3個(gè):
1、GFS(Google File System)。
一個(gè)分布式文件系統(tǒng),隱藏下層負(fù)載均衡,冗余復(fù)制等細(xì)節(jié),對(duì)上層程序提供一個(gè)統(tǒng)一的文件系統(tǒng)API接口。Google根據(jù)自己的需求對(duì)它進(jìn)行了特別優(yōu)化,包括:超大文件的訪問,讀操作比例遠(yuǎn)超過寫操作,PC機(jī)極易發(fā)生故障造成節(jié)點(diǎn)失效等。
GFS把文件分成64MB的塊,分布在集群的機(jī)器上,使用Linux的文件系統(tǒng)存放。同時(shí)每塊文件至少有3份以上的冗余。中心是一個(gè)Master節(jié)點(diǎn),根據(jù)文件索引,找尋文件塊。詳見Google的工程師發(fā)布的GFS論文。
2、MapReduce。
Google發(fā)現(xiàn)大多數(shù)分布式運(yùn)算可以抽象為MapReduce操作。Map是把輸入Input分解成中間的Key/Value對(duì),Reduce把Key/Value合成最終輸出Output。這兩個(gè)函數(shù)由程序員提供給系統(tǒng),下層設(shè)施把Map和Reduce操作分布在集群上運(yùn)行,并把結(jié)果存儲(chǔ)在GFS上。
3、BigTable。
一個(gè)大型的分布式數(shù)據(jù)庫,這個(gè)數(shù)據(jù)庫不是關(guān)系式的數(shù)據(jù)庫。像它的名字一樣,就是一個(gè)巨大的表格,用來存儲(chǔ)結(jié)構(gòu)化的數(shù)據(jù)。
開源實(shí)現(xiàn)
這個(gè)分布式框架很有創(chuàng)造性,而且有極大的擴(kuò)展性,使得Google在系統(tǒng)吞吐量上有很大的競爭力。因此Apache基金會(huì)用Java實(shí)現(xiàn)了一個(gè)開源版本,支持Fedora等Linux平臺(tái)。目前Linux Hadoop受到Y(jié)ahoo的支持,有Yahoo員工長期工作在項(xiàng)目上,而且Yahoo內(nèi)部也準(zhǔn)備使用Linux Hadoop代替原來的基于FreeBSD的系統(tǒng)。
Linux Hadoop實(shí)現(xiàn)了HDFS文件系統(tǒng)和MapRecue。目前版本是0.16。還不成熟,但是已經(jīng)可以在2000個(gè)節(jié)點(diǎn)上運(yùn)行。用戶只要繼承MapReduceBase,提供分別實(shí)現(xiàn)Map和Reduce的兩個(gè)類,并注冊(cè)Job即可自動(dòng)分布式運(yùn)行。
HDFS把節(jié)點(diǎn)分成兩類:NameNode和DataNode。NameNode是***的,程序與之通信,然后從DataNode上存取文件。這些操作是透明的,與普通的文件系統(tǒng)API沒有區(qū)別。MapReduce則是JobTracker節(jié)點(diǎn)為主,分配工作以及負(fù)責(zé)和用戶程序通信。
目前這個(gè)項(xiàng)目還在進(jìn)行中,還沒有到達(dá)1.0版本,和Google系統(tǒng)的差距也非常大,但是進(jìn)步非???,值得關(guān)注。另外,這是云計(jì)算(Cloud Computing)的初級(jí)階段的實(shí)現(xiàn),是通向未來的橋梁。
項(xiàng)目主頁:http://Linux Hadoop.apache.org一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會(huì)開發(fā)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力高速運(yùn)算和存儲(chǔ)。
Shenzhen Universiade - Shenzhen 2011 Summer Universiade
【編輯推薦】