Hadoop - HDFS分布式存儲(chǔ)、HA架構(gòu)原理、YARN調(diào)度原理

Hadoop 的組成

  1. HDFS
    管理者:namenode
    工作者:DataNode
    輔助管理者:secondaryNameNode
  2. MapReduce
  3. YARN
    管理者:ResourceManage
    工作者:NodeManage

HDFS 分布式存儲(chǔ)工作機(jī)制

HDFS是一個(gè)文件存存儲(chǔ)系統(tǒng),他的meta信息以及目錄結(jié)構(gòu)是存儲(chǔ)在NameNode中的,文件是以block的形式存儲(chǔ)在DataNode中,通過(guò)與NameNode交互,可以實(shí)現(xiàn)讀寫(xiě)的操作

讀操作

  1. 客戶端會(huì)先帶著讀取路徑向NameNode發(fā)送讀取請(qǐng)求
  2. NameNode接收到請(qǐng)求后,會(huì)先判斷是否有權(quán)限,讀取文件是否存在等等,如果都無(wú)誤則將文件所在的DataNode的節(jié)點(diǎn)位置,發(fā)送給客戶端部分或者全部的DataNode的節(jié)點(diǎn)位置
  3. 客戶端得到文件塊存儲(chǔ)的位置后,會(huì)調(diào)用read()方法,去讀取數(shù)據(jù)
  4. 在讀取之前會(huì)先進(jìn)行一個(gè)checksum的操作,去判斷一下校驗(yàn)和是否正確,正確則讀,不正確則去下一個(gè)存放該block塊的DataNode節(jié)點(diǎn)上讀取
  5. 讀取完NameNode這次發(fā)送過(guò)來(lái)的所有的block塊后,會(huì)再去詢問(wèn)是否還有block塊,如果有則接著讀取,如果沒(méi)有則調(diào)用close方法,將讀取到的文件合并成一個(gè)大文件

寫(xiě)操作

  1. 客戶端會(huì)帶著文件路徑向NameNode發(fā)送寫(xiě)入請(qǐng)求
  2. NameNode會(huì)去判斷是否有權(quán)限,寫(xiě)入路徑的父級(jí)目錄是否存在,如都無(wú)誤則發(fā)送可以寫(xiě)入的請(qǐng)求返回給客戶端
  3. 客戶端會(huì)將文件進(jìn)行切分,然后上傳block
  4. NameNode會(huì)根據(jù)DataNode的存儲(chǔ)空間還有機(jī)架感知原理等返回該block塊將要存儲(chǔ)的DataNode的位置 ABC
  5. 客戶端會(huì)去ABC三個(gè)DataNode節(jié)點(diǎn)上建立pipeline A-B B-C然后C建立完成后會(huì)將結(jié)果返回給B B返回給A A返回給客戶端
  6. 開(kāi)始往A寫(xiě)入 依次進(jìn)行流水線的復(fù)制
  7. 寫(xiě)入完后再去依次寫(xiě)入其他block塊
  8. 都寫(xiě)入完成后會(huì)將寫(xiě)入完成的信息返回給NameNode
  9. NameNode存儲(chǔ)該文件的各個(gè)block塊的元數(shù)據(jù)信息

Hadoop HA的架構(gòu)原理

  1. 在兩個(gè)節(jié)點(diǎn)上都安裝一個(gè)NameNode
  2. 每個(gè)NameNode所在的節(jié)點(diǎn)中都有一個(gè)監(jiān)控器
  3. 監(jiān)控器會(huì)監(jiān)控NameNode的狀態(tài),并在zk中注冊(cè)節(jié)點(diǎn)
  4. 兩個(gè)NameNode誰(shuí)先在zk中注冊(cè)成功則誰(shuí)就是active狀態(tài),剩下的那個(gè)則是standby
  5. 如果active節(jié)點(diǎn)掛掉了,監(jiān)控器則將zk中注冊(cè)的節(jié)點(diǎn)注銷(xiāo)掉
  6. standby中的監(jiān)控器一旦檢測(cè)到zk中的節(jié)點(diǎn)消失,則立即注冊(cè)并通知standby狀態(tài)的NameNode開(kāi)始工作,standby會(huì)先去遠(yuǎn)程執(zhí)行kill -9 activeNameNode節(jié)點(diǎn)的端口 殺死他后 開(kāi)始切換到active狀態(tài)開(kāi)始工作
  7. activeNameNode和standbyNameNode是使用JN進(jìn)行做主從復(fù)制的

YARN的資源調(diào)度工作機(jī)制

  1. 客戶端向RM提交作業(yè)
  2. RM會(huì)去NM中開(kāi)啟一個(gè)container容器用來(lái)運(yùn)行AM
  3. AM會(huì)向RM注冊(cè)自己
  4. AM向RM申請(qǐng)響應(yīng)數(shù)量的Container用來(lái)運(yùn)行task任務(wù)
  5. Container會(huì)先進(jìn)行一個(gè)初始化的工作,初始化完成AM會(huì)通知對(duì)應(yīng)的NM開(kāi)啟container
  6. NM開(kāi)啟container
  7. container在運(yùn)行期間會(huì)向AM匯報(bào)自己的進(jìn)度,狀態(tài)等信息,并與AM保持心跳
  8. 等待應(yīng)用執(zhí)行完畢,AM向RM注銷(xiāo)自己,并允許RM收回資源
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容