1. 程式人生 > >Hadoop原始碼學習(完整版)

Hadoop原始碼學習(完整版)

經濟不行啦,只好潛心研究技術。 
Google的核心競爭技術是它的計算平臺。Google的大牛們用了下面5篇文章,介紹了它們的計算設施。 
GoogleCluster: http://research.google.com/archive/googlecluster.html 
Chubby:http://labs.google.com/papers/chubby.html 
GFS:http://labs.google.com/papers/gfs.html 
BigTable:http://labs.google.com/papers/bigtable.html 
MapReduce:http://labs.google.com/papers/mapreduce.html 
很快,Apache上就出現了一個類似的解決方案,目前它們都屬於Apache的Hadoop專案,對應的分別是: 
Chubby-->ZooKeeper 
GFS-->HDFS 
BigTable-->HBase 
MapReduce-->Hadoop 
目前,基於類似思想的Open Source專案還很多,如Facebook用於使用者分析的Hive。 
HDFS作為一個分散式檔案系統,是所有這些專案的基礎。分析好HDFS,有利於瞭解其他系統。由於Hadoop的HDFS和MapReduce是同一個專案,我們就把他們放在一塊,進行分析。

下圖是MapReduce整個專案的頂層包圖和他們的依賴關係。Hadoop包之間的依賴關係比較複雜,原因是HDFS提供了一個分散式檔案系統,該系統提供API,可以遮蔽本地檔案系統和分散式檔案系統,甚至象Amazon S3這樣的線上儲存系統。這就造成了分散式檔案系統的實現,或者是分散式檔案系統的底層的實現,依賴於某些貌似高層的功能。功能的相互引用,造成了蜘蛛網型的依賴關係。一個典型的例子就是包conf,conf用於讀取系統配置,它依賴於fs,主要是讀取配置檔案的時候,需要使用檔案系統,而部分的檔案系統的功能,在包fs中被抽象了。

Hadoop的關鍵部分集中於圖中藍色部分,這也是我們考察的重點。