Hadoop學習(一)——總體學習

Hadoop學習(一)——總體學習

參考文獻:

[1]Jure Leskovec,Anand Rajaraman,Jeffrey David Ullman.大數據互聯網大規模數據挖掘與分佈式處理(第2版) [M]北京:人民郵電出版社,2015.7;

目錄:

1、分佈式文件系統:

2Hadoop基本架構:

3、HDFS分佈式文件系統的體系:

4、MapReduce體系的兩個後臺進程:

5、Master和Slave:


1、分佈式文件系統:

(1)使用場景:

①文件非常大,比如TB級的文件。

②文件極少更新,而只是作爲某些計算的數據讀入,並且不時有額外的數據追加到文件尾部。

(2)在DFS中,文件被分成文件塊(chunk),文件塊的大小通常爲64MB。文件塊會被複制多個副本放在多個不同的計算節點上。另外,存放同一文件塊不同副本的節點應分佈在不同機架上,這樣在某個機架發生故障時就不至於丟失所有副本。通常來講,文件塊的大小和複製的次數可以由用戶指定。

(3)主節點(master node)和名稱節點(name node):

爲尋找某個文件的文件塊,使用主節點或名稱節點爲該文件所用。主節點本身可以有多個副本,文件系統的總目錄可以用於尋找主節點的副本,總目錄本身也可以有多個副本,所有使用DFS的用戶都知道這些目錄副本所在的位置。

參考文獻:《大數據互聯網大規模數據挖掘與分佈式處理(第2版)》 P18

 

2、Hadoop基本架構:

 

圖2.1 Hadoop基本架構1

(1)Hadoop Common:

Hadoop體系最底層模塊,爲Hadoop各子項目提供各種工具,如配置文件和日誌操作等。

(2)MapReduce:

依賴磁盤IO的批處理計算模型,通過一個JobTracker主節點和多個TaskTracker從節點,分Map階段和Reduce階段執行任務。

(3)HDFS:

①Hadoop Distributed File System,分佈式文件系統,提供高吞吐量的應用程序數據訪問,負責數據的分佈式存儲。

②HDFS結構是基於一組特定的節點構建的,包括一個在HDFS內部提供元數據服務的NameNode主節點和多個提供存儲塊的DataNode從節點。

附註:

分佈式存儲:數據分散在很多的機器上進行存儲。

分佈式計算:數據分散在很多的機器上進行計算。

(4)Yarn:

①資源管理平臺,負責作業調度與集羣的管理,只有一個ResourceManager主節點和多個NodeManager從節點。

②ResourceManager負責集羣資源的分配與調度,MapReduce、Storm、Spark等應用,必須實現ApplicationMaster接口,才能被RM管理。

③NodeManager負責單節點資源的管理。

(5)Pig:

Pig是一個並行計算的高級的數據流語言和執行框架,是在MapReduce上構建的一種高級查詢語言,輕量級腳本語言,使用shell命令方式來輸入數據處理、數據分析的命令,然後系統會自動將這些命令轉換爲Map和Reduce的形式,進行MapReduce的工作,然後把結果返回給用戶。相當於用戶和MapReduce之間的轉換器。

(6)Hive:

相當於Sql語言到MapReduce的映射器。將Sql轉換爲MapReduce分佈式任務,在各節點運行,再將結果返回給用戶。

(7)Hbase:

面向數據分析,基於列式存儲模型,支持大量結構化數據存儲的數據庫,提高響應速度,減少IO量。

(8)ZooKeeper:

負責服務器節點以及進程之間的通訊,通訊的協調工具。提供配置維護、名字服務、分佈式同步、組服務等功能。

(9)Chukwa:

管理大型分佈式系統的數據採集系統。

(10)Mahout:

可擴展的機器學習和數據挖掘的library庫。

 

圖2.2 Hadoop基本架構2

 

3、HDFS分佈式文件系統的體系:

(1)NameNode:名稱節點

①接收用戶請求,是用戶操作的入口;

②是HDFS的守護程序,是它的核心程序,起到分佈式系統的總控的作用;

③維護文件系統的目錄結構,記錄所有的元數據,記錄文件是如何分割成數據塊的,以及這些數據塊被存儲到哪些節點上;

④對內存和I/O進行集中管理

⑤是個單點,發生故障將使集羣崩潰。

(2)Secondary NameNode:輔助名稱節點

①監控HDFS狀態的輔助後臺程序;

②每個集羣都有一個;

③作爲NameNode的後備,可以把NameNode裏面的元數據信息再重新保存多一份副本,NameNode會自動跟名稱輔助節點通訊,不斷把名稱輔助節點中的元數據往裏面放;

④當NameNode故障可以作爲備用NameNode使用;

⑤也是個單點。

(3)DataNode:數據節點

①每臺從服務器都運行一個;

②負責把HDFS數據塊讀寫到本地文件系統,用於存儲文件。

 

圖3.1 分佈式文件系統體系

如圖所示,Hadoop集羣是部署在真正的服務器上的,服務器是放在機架(Rack)上面的,每一個機架都有一個交換機(Switch),然後這些交換機通過一個大的交換機連接起來,用戶是直接通過交換機來進行請求的。

 

4、MapReduce體系的兩個後臺進程:


圖4.1 MapReduce體系的兩個後臺進程

(1)JobTracker:作業跟蹤器

運行在主節點上的後臺進程,起到對MapReduce體系的總調度作用。

①用於處理用戶提交後的作業;

②決定有哪些文件參與作業處理,然後把Job切割爲一個個小Task,並把這些Task分配到數據節點中,Hadoop的原則是就近運行,就是程序要和數據在同一個物理節點裏面;

③監控Task,重啓失敗的Task,釋放它所佔用的資源;

④每個集羣只有唯一一個JobTracker,和NameNode一樣,是個單點,位於Master節點。

(2)TaskTracker:任務跟蹤器

①位於Slave節點上,與DataNode結合(代碼與數據一起的原則);

②管理各自節點上的Task(由JobTracker分配);

③每個節點只有一個TaskTracker,但一個TaskTracker可以啓動多個JVM,用於並行執行Map或Reduce任務;

④與JobTracker交互。

 

5、Master和Slave:

(1)Master:NameNode、Secondary NameNode、JobTracker的節點的機器。

(2)Slave:TaskTracker、DataNode的機器

(3)Master不是唯一的。通常把NameNode和JobTracker放在同一臺機器,把Secondary NameNode放在另一臺機器。

 

發佈了144 篇原創文章 · 獲贊 540 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章