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