Hadoop原來(lái)是Apache Lucene下的一個(gè)子項(xiàng)目,它最初是從Nutch項(xiàng)目中分離出來(lái)的專(zhuān)門(mén)負(fù)責(zé)分布式存儲(chǔ)以及分布式運(yùn)算的項(xiàng)目。簡(jiǎn)單地說(shuō)來(lái),Hadoop是一個(gè)可以更容易開(kāi)發(fā)和運(yùn)行處理大規(guī)模數(shù)據(jù)的軟件平臺(tái)。下面列舉hadoop主要的一些特點(diǎn):
1 擴(kuò)容能力(Scalable):能可靠地(reliably)存儲(chǔ)和處理千兆字節(jié)(PB)數(shù)據(jù)。
2 成本低(Economical):可以通過(guò)普通機(jī)器組成的服務(wù)器群來(lái)分發(fā)以及處理數(shù)據(jù)。這些服務(wù)器群總計(jì)可達(dá)數(shù)千個(gè)節(jié)點(diǎn)。
3 高效率(Efficient):通過(guò)分發(fā)數(shù)據(jù),hadoop可以在數(shù)據(jù)所在的節(jié)點(diǎn)上并行地(parallel)處理它們,這使得處理非常的快速。
4 可靠性(Reliable):hadoop能自動(dòng)地維護(hù)數(shù)據(jù)的多份復(fù)制,并且在任務(wù)失敗后能自動(dòng)地重新部署(redeploy)計(jì)算任務(wù)。
Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(Hadoop Distributed File System),簡(jiǎn)稱(chēng)HDFS。HDFS有著高容錯(cuò)性(fault-tolerent)的特點(diǎn),并且設(shè)計(jì)用來(lái)部署在低廉的(low-cost)硬件上。而且它提供高傳輸率(high throughput)來(lái)訪(fǎng)問(wèn)應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求(requirements)這樣可以流的形式訪(fǎng)問(wèn)(streaming access)文件系統(tǒng)中的數(shù)據(jù)。
Hadoop還實(shí)現(xiàn)了MapReduce分布式計(jì)算模型。MapReduce將應(yīng)用程序的工作分解成很多小的工作小塊(small blocks of work)。HDFS為了做到可靠性(reliability)創(chuàng)建了多份數(shù)據(jù)塊(data blocks)的復(fù)制(replicas),并將它們放置在服務(wù)器群的計(jì)算節(jié)點(diǎn)中(compute nodes),MapReduce就可以在它們所在的節(jié)點(diǎn)上處理這些數(shù)據(jù)了。
如下圖所示:
Hadoop API被分成(divide into)如下幾種主要的包(package)
org.apache.hadoop.conf 定義了系統(tǒng)參數(shù)的配置文件處理API。
org.apache.hadoop.fs 定義了抽象的文件系統(tǒng)API。
org.apache.hadoop.dfs Hadoop分布式文件系統(tǒng)(HDFS)模塊的實(shí)現(xiàn)。
org.apache.hadoop.io 定義了通用的I/O API,用于針對(duì)網(wǎng)絡(luò),數(shù)據(jù)庫(kù),文件等數(shù)據(jù)對(duì)象做讀寫(xiě)操作。
org.apache.hadoop.ipc 用于網(wǎng)絡(luò)服務(wù)端和客戶(hù)端的工具,封裝了網(wǎng)絡(luò)異步I/O的基礎(chǔ)模塊。
org.apache.hadoop.mapred Hadoop分布式計(jì)算系統(tǒng)(MapReduce)模塊的實(shí)現(xiàn),包括任務(wù)的分發(fā)調(diào)度等。
org.apache.hadoop.metrics 定義了用于性能統(tǒng)計(jì)信息的API,主要用于mapred和dfs模塊。
org.apache.hadoop.record 定義了針對(duì)記錄的I/O API類(lèi)以及一個(gè)記錄描述語(yǔ)言翻譯器,用于簡(jiǎn)化將記錄序列化成語(yǔ)言中性的格式(language-neutral manner)。
org.apache.hadoop.tools 定義了一些通用的工具。
org.apache.hadoop.util 定義了一些公用的API。
下面逐個(gè)從源代碼中剖析這幾個(gè)主要模塊的框架以及運(yùn)作原理
作者:naven 2008-02-21