1. 程式人生 > >hadoop 的組建概述

hadoop 的組建概述

大數據 hadoop

  • 一:hdfs 的相關概念
  • 二:yarn 的相關概念

一:hdfs 的相關概念:

1.1 hdfs 的來源:

HDFS 的來源

源自於Google的GFS論文
發表於2003年10月

HDFS是GFS克隆版

Hadoop Distributed File System

易於擴展的分布式文件系統

運行在大量普通廉價機器上,提供容錯機制

為大量用戶×××能不錯的文件存取服務

###1.2 hdfs 的架構:

技術分享圖片

1. menode 是一個中心服務器,單一節點(簡化系統的設計和實現),負
責管理文件系統的名字空間(namespace)以及客戶端對文件的訪問。

2.操作,NameNode 負責文件元數據的操作,DataNode負責處理文件
內容的讀寫請求,跟文件內容相關的數據流不經過NameNode,只會詢問它
跟那個DataNode聯系,否則NameNode會成為系統的瓶頸。

3.本存放在哪些DataNode上由 NameNode來控制,根據全局情況做出塊
放置決定,讀取文件時NameNode盡量讓用戶先讀取最近的副本,降低帶塊
消耗和讀取時延

4.Namenode 全權管理數據塊的復制,它周期性地從集群中的每個
Datanode接收心跳信號和塊狀態報告(Blockreport)。接收到心跳信號意味
著該Datanode節點工作正常。塊狀態報告包含了一個該Datanode上所有數
據塊的列表。

技術分享圖片

NameNode

主節點,存儲文件的元數據如文件名,文件目錄結構,文件屬性(生成時間,副本數,文件權限),以及每個文件的塊列表和塊所在DataNode等。

DataNode

在本地文件系統存儲文件塊數據,以及塊數據的校驗和。

Secondary NameNode

用來監控HDFS狀態的輔助後臺程序,每隔一段時間獲取HDFS元數據的快照

1.3 namenode 的啟動過程

技術分享圖片

1、Name啟動的時候首先將fsimage(鏡像)載入內存,並執行(replay)編輯日誌editlog的的各項操作;

2、一旦在內存中建立文件系統元數據映射,則創建一個新的fsimage文件(這個過程不需SecondaryNameNode)和一個空的editlog;

3、在安全模式下,各個datanode會向namenode發送塊列表的最新情況;

4、此刻namenode運行在安全模式。即NameNode的文件系統對於客服端來說是只讀的。(顯示目錄,顯示文件內容等。寫、刪除、重命名都會失敗);

5、NameNode開始監聽RPC和HTTP請求

解釋RPC:RPC(Remote Procedure Call Protocol)——遠程過程通過協議,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議;

6、系統中數據塊的位置並不是由namenode維護的,而是以塊列表形式存儲在datanode中;

7、在系統的正常操作期間,namenode會在內存中保留所有塊信息的映射信息。

1.4 DataNode 的作用

1.個數據塊在DataNode以文件存儲在磁盤上,包括兩個文件,
一個是數據本身,一個是元數據包括數據塊的長度,塊數據的
校驗和,以及時間戳

2.DataNode啟動後向NameNode註冊,通過後,周期性(1小
時)的向NameNode上報所有的塊信息。

3.心跳是每3秒一次,心跳返回結果帶有NameNode給該
DataNode的命令如復制塊數據到另一臺機器,或刪除某個數據
塊。如果超過10分鐘沒有收到某個DataNode 的心跳,則認為該
節點不可用。

4.集群運行中可以安全加入和退出一些機器

1.5 hdfs 的存儲活機制

技術分享圖片

文件

1.文件切分成塊(默認大小128M),以塊為單位,每個塊有多個副本存儲
在不同的機器上,副本數可在文件生成時指定(默認3)

2.NameNode 是主節點,存儲文件的元數據如文件名,文件目錄結構,文
件屬性(生成時間,副本數,文件權限),以及每個文件的塊列表以及塊所在
的DataNode等等

3.DataNode 在本地文件系統存儲文件塊數據,以及塊數據的校驗和。

4.可以創建、刪除、移動或重命名文件,當文件創建、寫入和關閉之後不能
修改文件內容。
數據損壞(corruption)處理

1.當DataNode讀取block的時候,它會計算checksum

2.如果計算後的checksum,與block創建時值不一樣,說明
該block已經損壞。

3.Client讀取其它DN上的block。

4.NameNode標記該塊已經損壞,然後復制block達到預期設
置的文件備份數

5.DataNode 在其文件創建後三周驗證其checksum
SafeMode 相關說明

1.安全模式下,集群屬於只讀狀態。但是嚴格來說,只是保證HDFS
元數據信息的訪問,而不保證文件的訪問,因為文件的組成Block信
息此時NameNode還不一定已經知道了。所以只有NameNode已了解
了Block信息的文件才能獨到。而安全模式下任何對HDFS有更新的操
作都會失敗.

2.對於全新創建的HDFS集群,NameNode啟動後不會進入安全模式,
因為沒有Block信息。

二:yarn 的相關概念

2.1 hadoop 1.x 與 hadoop 2.x 的 比較

技術分享圖片

2.2 yarn 的架構圖

技術分享圖片

YARN服務組件

1.YARN 總體上仍然是Master/Slave 結構,在整個資源管理框架中,
ResourceManager 為Master,NodeManager 為Slave。

2.ResourceManager 負責對各個NodeManager 上的資源進行統一
管理和調度

3.當用戶提交一個應用程序時,需要提供一個用以跟蹤和管理這個
程序的。
ApplicationMaster,它負責向ResourceManager 申請資源,並要
求NodeManger 啟動可以占用一定資源的任務。

4.由於不同的ApplicationMaster 被分布到不同的節點上,因此它們
之間不會相互影響
ResourceManager 的作用

1.全局的資源管理器,整個集群只有一個,負責集群資
源的統一管理和調度分配。

  功能
1.1 處理客戶端請求

1.2 啟動/監控ApplicationMaster

1.3 監控NodeManager

1.4 資源分配與調度
NodeManager 的作用

1. 整個集群有多個,負責單節點資源管理和使用

 功能:

1.1 單個節點上的資源管理和任務管理

1.2 處理來自ResourceManager的命令

1.3 處理來自ApplicationMaster的命令

1.4 NodeManager管理抽象容器,這些容器代表著可供一個特定
應用程序使用的針對每個節點的資源。

1.5 定時地向RM匯報本節點上的資源使用情況和各個Container的
運行狀態

Application Master 的作用:

1.1 管理一個在YARN 內運行的應用程序的每個實例

  功能:

1.2 數據切分

1.3 為應用程序申請資源,並進一步分配給內部任務

1.4 任務監控與容錯

1.5 負責協調來自ResourceManager的資源,幵通過
NodeManager監視容器的執行和資源使用(CPU、內存等的資
源分配)。

Container 的作用

1. YARN中的資源抽象,封裝某個節點上多維度資源,如內存、CPU、磁盤、網絡
等,當AM向RM申請資源時,RM向AM返回的資源便是用Container表示的。

2. YARN 會為每個任務分配一個Container,且該任務只能使用該Container中描述
的資源。

 功能

 2.1 對任務運行環境的抽象

 2.2 描述一系列信息

 2.3 任務運行資源(節點、內存、CPU)

 2.4 任務啟動命令

 2.5 任務運行環境

YARN 資源管理

1. 資源調度和資源隔離是YARN作為一個資源管理系統,最重要和最基礎的兩個功能。
資源調度由ResourceManager完成,而資源隔離由各個NM實現。

2. ResourceManager將某個NodeManager上資源分配給任務(這就是所謂的“資源調
度”)後,NodeManager需按照要求為任務提供相應的資源,甚至保證這些資源應具
有獨占性,為任務運行提供基礎的保證,這就是所謂的資源隔離。

3. 當談及到資源時,我們通常指內存,CPU和IO三種資源。Hadoop YARN同時支持
內存和CPU兩種資源的調度。

4.內存資源的多少會會決定任務的生死,如果內存不夠,任務可能會運行失敗;相比之
下,CPU資源則不同,它只會決定任務運行的快慢,不會對生死產生影響。

5. YARN允許用戶配置每個節點上可用的物理內存資源,註意,這裏是“可用的”,因為一個節點
上的內存會被若幹個服務共享,比如一部分給YARN,一部分給HDFS,一部分給HBase等,YARN
配置的只是自己可以使用的,配置參數如下:

技術分享圖片


6. 目前的CPU被劃分成虛擬CPU(CPU virtual Core),這裏的虛擬CPU是YARN自己引入的概念,
初衷是,考慮到不同節點的CPU性能可能不同,每個CPU具有的計算能力也是不一樣的,比如某
個物理CPU的計算能力可能是另外一個物理CPU的2倍,這時候,你可以通過為第一個物理CPU
多配置幾個虛擬CPU彌補這種差異。用戶提交作業時,可以指定每個任務需要的虛擬CPU個數。
在YARN中,CPU相關配置參數如下:

技術分享圖片

hadoop 的組建概述