Hadoop簡介:Hadoop的應用場合及其核心設計
本節向大家描述一下Hadoop簡介,主要包括Hadoop應用場合和Hadoop框架中最核心的設計等內容,相信通過本節的學習大家對Hadoop有全面的認識,讓我們一起來了解一下Hadoop吧。
Hadoop簡介
1.Hadoop的應用場合:
適合海量數據的分析,其實Google最早提出MapReduce也就是為了海量數據分析。同時HDFS最早是為了搜索引擎實現而開發的,后來才被用于分布式計算框架中。海量數據被分割于多個節點,然后由每一個節點并行計算,將得出的結果歸并到輸出。同時***階段的輸出又可以作為下一階段計算的輸入,因此可以想象到一個樹狀結構的分布式計算圖,在不同階段都有不同產出,同時并行和串行結合的計算也可以很好地在分布式集群的資源下得以高效的處理。
2.Hadoop框架中最核心的設計
Hadoop簡介中Hadoop框架中最核心的設計就是:MapReduce和HDFS,MapReduce的思想是由Google的一篇論文所提及而被廣為流傳的,簡單的一句話解釋MapReduce就是“任務的分解與結果的匯總”。HDFS是Hadoop分布式文件系統(HadoopDistributedFileSystem)的縮寫,為分布式計算存儲提供了底層支持。
MapReduce:
名字上來看就大致可以看出個緣由,兩個動詞Map和Reduce,“Map(展開)”就是將一個任務分解成為多個任務,“Reduce”就是將分解后多任務處理的結果匯總起來,得出***的分析結果。這不是什么新思想,其實在前面提到的多線程,多任務的設計就可以找到這種思想的影子。不論是現實社會,還是在程序設計中,一項工作往往可以被拆分成為多個任務,任務之間的關系可以分為兩種:一種是不相關的任務,可以并行執行;另一種是任務之間有相互的依賴,先后順序不能夠顛倒,這類任務是無法并行處理的。
上圖就是MapReduce大致的結構圖,在Map前還可能會對輸入的數據有Split(分割)的過程,保證任務并行效率,在Map之后還會有Shuffle(混合)的過程,對于提高Reduce的效率以及減小數據傳輸的壓力有很大的幫助。后面會具體提及這些部分的細節。
Hadoop簡介中的HDFS的工作流程圖:
整個流程圖中有三個重要角色: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結構示意圖
在Hadoop的系統中,會有一臺Master,主要負責NameNode的工作以及JobTracker的工作。JobTracker的主要職責就是啟動、跟蹤和調度各個Slave的任務執行。還會有多臺Slave,每一臺Slave通常具有DataNode的功能并負責TaskTracker的工作。TaskTracker根據應用要求來結合本地數據執行Map任務以及Reduce任務。本節關于Hadoop簡介描述完畢,請關注本節其他相關報道。
【編輯推薦】