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