HADOOP的學習筆記

Hadoop的學習筆記

Hadoop的下載地址:
http://www.apache.org/dyn/closer.cgi/hadoop/core/
1. Hadoop的應用場合:
適合海量數據的分析,其實Google最早提出MapReduce也就是爲了海量數據分析。同時HDFS最早是爲了搜索引擎實現而開發的,後來才被用於分佈式計算框架中。海量數據被分割於多個節點,然後由每一個節點並行計算,將得出的結果歸併到輸出。同時第一階段的輸出又可以作爲下一階段計算的輸入,因此可以想象到一個樹狀結構的分佈式計算圖,在不同階段都有不同產出,同時並行和串行結合的計算也可以很好地在分佈式集羣的資源下得以高效的處理。

2. Hadoop框架中最核心的設計
就是:MapReduce和HDFS,MapReduce的思想是由Google的一篇論文所提及而被廣爲流傳的,簡單的一句話解釋MapReduce就是“任務的分解與結果的彙總”。HDFS是Hadoop分佈式文件系統(Hadoop Distributed File System)的縮寫,爲分佈式計算存儲提供了底層支持。
[img]http://limimgjie.iteye.com/upload/picture/pic/21333/4f2535ac-738b-33a6-9c2e-6b5d755d6cfa.gif[/img]

MapReduce:
名字上來看就大致可以看出個緣由,兩個動詞Map和Reduce,“Map(展開)”就是將一個任務分解成爲多個任務,“Reduce”就是將分解後多任務處理的結果彙總起來,得出最後的分析結果。這不是什麼新思想,其實在前面提到的多線程,多任務的設計就可以找到這種思想的影子。不論是現實社會,還是在程序設計中,一項工作往往可以被拆分成爲多個任務,任務之間的關係可以分爲兩種:一種是不相關的任務,可以並行執行;另一種是任務之間有相互的依賴,先後順序不能夠顛倒,這類任務是無法並行處理的。

上圖就是MapReduce大致的結構圖,在Map前還可能會對輸入的數據有Split(分割)的過程,保證任務並行效率,在Map之後還會有Shuffle(混合)的過程,對於提高Reduce的效率以及減小數據傳輸的壓力有很大的幫助。後面會具體提及這些部分的細節。
HDFS的工作流程圖:
[img]http://limimgjie.iteye.com/upload/picture/pic/21337/aa28201a-71d1-3922-9e8d-3556431dbbdc.gif[/img]

整個三個重要角色:NameNode、DataNode和Client。NameNode可以看作是分佈式文件系統中的管理者,主要負責管理文件系統的命名空間、集羣配置信息和存儲塊的複製等。NameNode會將文件系統的Meta-data存儲在內存中,這些信息主要包括了文件信息、每一個文件對應的文件塊的信息和每一個文件塊在DataNode的信息等。DataNode是文件存儲的基本單元,它將Block存儲在本地文件系統中,保存了Block的Meta-data,同時週期性地將所有存在的Block信息發送給NameNode。Client就是需要獲取分佈式文件系統文件的應用程序。這裏通過三個操作來說明他們之間的交互關係。
 文件寫入:
1. Client向NameNode發起文件寫入的請求。
2. NameNode根據文件大小和文件塊配置情況,返回給Client它所管理部分DataNode的信息。
3. Client將文件劃分爲多個Block,根據DataNode的地址信息,按順序寫入到每一個DataNode塊中。
 文件讀取:
1. Client向NameNode發起文件讀取的請求。
2. NameNode返回文件存儲的DataNode的信息。
3. Client讀取文件信息。
 文件Block複製:
1. NameNode發現部分文件的Block不符合最小複製數或者部分DataNode失效。
2. 通知DataNode相互複製Block。
3. DataNode開始直接相互複製。
3. MapReduce和HDFS來看Hadoop的結構:
Hadoop結構示意圖
[img]http://limimgjie.iteye.com/upload/picture/pic/21339/233cfc27-ba67-3555-b055-e9807f0459b2.gif[/img]

在Hadoop的系統中,會有一臺Master,主要負責NameNode的工作以及JobTracker的工作。JobTracker的主要職責就是啓動、跟蹤和調度各個Slave的任務執行。還會有多臺Slave,每一臺Slave通常具有DataNode的功能並負責TaskTracker的工作。TaskTracker根據應用要求來結合本地數據執行Map任務以及Reduce任務。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章