1. 程式人生 > >大資料之(4)Hadoop生態系統體系架構彙總

大資料之(4)Hadoop生態系統體系架構彙總

一、基本概念

機架:HDFS叢集,由分佈在多個機架上的大量DataNode組成,不同機架之間節點通過交換機通訊,HDFS通過機架感知策略,使NameNode能夠確定每個DataNode所屬的機架ID,使用副本存放策略,來改進資料的可靠性、可用性和網路頻寬的利用率。

資料塊(block):HDFS最基本的儲存單元,預設為64M,使用者可以自行設定大小。

元資料:指HDFS檔案系統中,檔案和目錄的屬性資訊。HDFS實現時,採用了 映象檔案(Fsimage) + 日誌檔案(EditLog)的備份機制。檔案的映象檔案中內容包括:修改時間、訪問時間、資料塊大小、組成檔案的資料塊的儲存位置資訊。目錄的映象檔案內容包括:修改時間、訪問控制權限等資訊。日誌檔案記錄的是:HDFS的更新操作。

NameNode啟動的時候,會將映象檔案和日誌檔案的內容在記憶體中合併。把記憶體中的元資料更新到最新狀態。

使用者資料:HDFS儲存的大部分都是使用者資料,以資料塊的形式存放在DataNode上。

在HDFS中,NameNode 和 DataNode之間使用TCP協議進行通訊。DataNode每3s向NameNode傳送一個心跳。每10次心跳後,向NameNode傳送一個數據塊報告自己的資訊,通過這些資訊,NameNode能夠重建元資料,並確保每個資料塊有足夠的副本。

二、Hadoop2.x體系架構

在這裡插入圖片描述

  • 後臺程序:NameNode(名稱節點)

1,他是HDFS的守護程式,是HDFS的核心程式,它起到這個分散式檔案系統的總控的作用。

2,記錄資料是如何分割成資料塊的,以及這些資料塊被儲存在哪些節點上(分散式)。

3,對記憶體和IO進行集中的管理。當用戶跟整個hadoop的叢集打交道的時候,一般首先會訪問NameNode來獲得他要的檔案的分佈狀態的資訊,也就是說先找出需要的檔案是在哪些資料節點裡面,然後使用者再跟資料節點打交道,把資料拿到手。所以NameNode在整個Hadoop中起到一個核心的功能。

4,但是,Hadoop一直以來都是把NameNode作為一個單點,也就是整個hadoop中只有一個 NameNode伺服器,所以一旦NameNode節點發生故障,將使整個叢集崩潰。

  • 後臺程序:Secondary NameNode(輔助名稱節點)

主要作為NameNode的後備,它可以將NameNode中的元資料資訊再多儲存一份副本,也就是說NameNode會不斷跟Secondary NameNode通訊,不斷把它裡面的資料往輔助名稱節點這邊放。一旦NameNode崩潰了,我們可以用Secondary NameNode去代替它。保護叢集的執行。但是現在還不能實現二者之間的自動切換,也就是說,現在不能在NameNode倒下以後,自動將Secondary NameNode啟動起來,必須手工做。所以在hadoop中,NameNode還是一個事實上的單點。

1,監控HDFS狀態的輔助後臺程式。

2,每個叢集都有一個。

3,與NameNode進行通訊,定期儲存HDFS元資料快照。

4,當NameNode故障,可以作為備用NameNode使用。

  • 後臺程序:DataNode(資料節點)

執行在各個子節點裡面。一般放在從伺服器上,負責檔案系統的具體的資料塊的讀寫。

1,每個伺服器都執行一個。

2,負責把HDFS資料塊讀寫到本地檔案系統。

  • 總結
  1. 【Active Namenode】:主 Master(只有一個),管理 HDFS 的名稱空間,管理資料塊對映資訊;配置副本策略;處理客戶端讀寫請求

  2. 【Secondary NameNode】:NameNode 的熱備;定期合併 fsimage 和 fsedits,推送給 NameNode;當 Active NameNode 出現故障時,快速切換為新的 Active NameNode。

  3. 【Datanode】:Slave(有多個);儲存實際的資料塊;執行資料塊讀 / 寫

  4. 【Client】:與 NameNode 互動,獲取檔案位置資訊;與 DataNode 互動,讀取或者寫入資料;管理 HDFS、訪問 HDFS。

三、HDFS架構

在這裡插入圖片描述

四、MapReduce架構

在這裡插入圖片描述 在這裡插入圖片描述 Hadoop的核心是MapReduce,而MapReduce的核心又在於map和reduce函式。它們是交給使用者實現的,這兩個函式定義了任務本身。

map函式:接受一個鍵值對(key-value pair)(例如上圖中的Splitting結果),產生一組中間鍵值對(例如上圖中Mapping後的結果)。Map/Reduce框架會將map函式產生的中間鍵值對裡鍵相同的值傳遞給一個reduce函式。 reduce函式:接受一個鍵,以及相關的一組值(例如上圖中Shuffling後的結果),將這組值進行合併產生一組規模更小的值(通常只有一個或零個值)(例如上圖中Reduce後的結果)

但是,Map/Reduce並不是萬能的,適用於Map/Reduce計算有先提條件: (1)待處理的資料集可以分解成許多小的資料集; (2)而且每一個小資料集都可以完全並行地進行處理; 若不滿足以上兩條中的任意一條,則不適合適用Map/Reduce模式。

五、Yarn架構

在這裡插入圖片描述

六、大資料平臺架構

在這裡插入圖片描述

本文參考: