hadoop的三大核心组件之HDFS和YARN
?
Hadoop的三大核心組件之HDFS和YARN
Hadoop集群具體來說包含兩個集群:HDFS集群和YARN集群,兩者邏輯上分離,但物理上常在一起。
(1)HDFS集群:負責海量數據的存儲,集群中的角色(看jps)主要有?NameNode?/?DataNode/SecondaryNameNode。
(2)YARN集群:負責海量數據運算時的資源調度,集群中的角色(看jps)主要有?ResourceManager?/NodeManager
(3)MapReduce:它其實是一個應用程序開發包。
一、HDFS
HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS采用master/slave架構。一個HDFS集群是由一個Namenode和一定數目的Datanodes組成。Namenode是一個中心服務器,負責管理文件系統的名字空間(namespace)以及客戶端對文件的訪問。集群中的Datanode一般是一個節點一個,負責管理它所在節點上的存儲。架構如下圖:
A、NameNode
NameNode管理著文件系統的命名空間,維護著文件系統樹,它不存儲真實數據,存儲元數據(MetaData)[元數據(FileName、副本數、每一個副本所在的位置...)],NameNode保存在內存中。
元數據信息通過以下文件和過程持久化到磁盤中。
a、fsimage--對元數據定期進行鏡像
b、edits--存放一定時間內對HDFS的操作記錄
c、checkpoint---檢查點
Namenode在內存中保存著整個文件系統的名字空間和文件數據塊映射(Blockmap)的映像。這個關鍵的元數據結構設計得很緊湊,因而一個有4G內存的Namenode足夠支撐大量的文件和目錄。當Namenode啟動時,它從硬盤中讀取Editlog和FsImage,將所有Editlog中的事務作用在內存中的FsImage上,并將這個新版本的FsImage從內存中保存到本地磁盤上,然后刪除舊的Editlog,因為這個舊的Editlog的事務都已經作用在FsImage上了。這個過程稱為一個檢查點(checkpoint)。在當前實現中,檢查點只發生在Namenode啟動時,在不久的將來將實現支持周期性的檢查點。
B、DataNode---存儲節點,真正存放數據的節點,用于保存數據,保存在磁盤上(在HDFS上保存的數據副本數默認是3個,這個副本數量是可以設置的)?;締挝皇菈K(block),默認128M。
Block塊的概念
先不看HDFS的Block,每臺機器都有磁盤,機器上的所有持久化數據都是存儲在磁盤上的。磁盤是通過塊來管理數據的,一個塊的數據是該磁盤一次能夠讀寫的最小單位,一般是512個字節,而建立在磁盤之上的文件系統也有塊的概念,通常是磁盤塊的整數倍,例如幾kb。
HDFS作為文件系統,一樣有塊的概念,對于分布式文件系統,使用文件塊將會帶來這些好處:
1.一個文件的大小不限制于集群中任意機器的磁盤大小?
2.因為塊的大小是固定的,相對比不確定大小的文件,塊更容易進行管理和計算?
3.塊同樣方便進行備份操作,以提高數據容錯性和系統的可靠性
為什么HDFS的塊大小會比文件系統的塊大那么多呢?
操作數據時,需要先從磁盤上找到指定的數據塊然后進行傳輸,而這就包含兩個動作:
1)數據塊尋址:找到該數據塊的起始位置
2)數據傳輸:讀取數據
也就是說,操作數據所花費的時間是由以上兩個步驟一起決定的,步驟1所花費的時間一般比步驟2要少很多,那么當操作的數據塊越多,尋址所花費的時間在總時間中就越小的可以忽略不計。所以塊設置的大,可以最小化磁盤的尋址開銷。但是HDFS的Block塊也不能設置的太大,會影響到map任務的啟動數,并行度降低,任務的執行數據將會變慢。
★名詞擴展:心跳機制、宕機、安全模式(zzy至理名言--“自己看網上都有”)
Datanode負責處理文件系統客戶端的讀寫請求。在Namenode的統一調度下進行數據塊的創建、刪除和復制。集群中單一Namenode的結構大大簡化了系統的架構。Namenode是所有HDFS元數據的仲裁者和管理者,這樣,用戶數據永遠不會流過Namenode。
C、SecondaryNameNode---輔助節點,用于同步元數據信息。輔助NameNode對fsimage和edits進行合并(冷備份),下面用SNN代替
NameNode?的元數據信息先往?edits?文件中寫,當?edits?文件達到一定的閾值(3600?秒或大小到?64M)的時候,會開啟合并的流程。合并流程如下:
①當開始合并的時候,SNN 會把?edits?和?fsimage?拷貝到自己服務器所在內存中,開始合并,合并生成一個名為?fsimage.ckpt?的文件。
②將?fsimage.ckpt?文件拷貝到?NameNode?上,成功后,再刪除原有的?fsimage,并將?fsimage.ckpt文件重命名為?fsimage。
????? ③當?SNN 將?edits?和?fsimage?拷貝走之后,NameNode?會立刻生成一個?edits.new?文件,用于記錄新來的元數據,當合并完成之后,原有的?edits?文件才會被刪除,并將?edits.new?文件重命名為?edits?文件,開啟下一輪流程。
?
二、YARN
A、ResourceManager
B、NodeManager
?
◆MapReduce?在?YARN?上的執行流程:
①client?提交?job,首先找?ResourceManager(ApplicationsManager)分配資源,同時將?jar?包默認拷貝10?份到?hdfs。
②ResourceManager?指?定?一?個?NodeManager?開?啟?一?個?container?,?在?Container?中?運?行?一?個ApplicationMaster?來管理這個應用程序。
③ApplicationMaster?會計算此個應用所需資源,向?ResourceManager(ResourceScheduler)申請資源。
④ResourceManager?會分配資源,在?NodeManager上開啟不同的?container,在container中來運行?map任務或者?reduce?任務
⑤當所有的?task?都執行完了,ApplicationMaster會將結果反饋給客戶端,所有工作執行完成之后,ApplicationMaster?就會自行關閉。
⑥如果某個?map?任務或者?reduce?任務失敗,ApplicationMaster會重新申請新的?container?來執行這個task。
總結
以上是生活随笔為你收集整理的hadoop的三大核心组件之HDFS和YARN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse 无法运行php文件怎么办
- 下一篇: 长白头发的原因 肾气不足:后脑勺长白发