HDFS及其各元件的機制

2022-09-17 04:03:13 字數 2686 閱讀 1134

一、hdfs執行機制

概述:使用者的檔案會被切塊後儲存在多台datanode節點中,並且每個檔案在整個集群中存放多個副本,副本的數量可以通過修改配置自己設定。

hdfs:hadoop distributed file system,分布式檔案系統。

hdfs的機制:

hdfs集群中,有兩種節點,分別為namenode,datanode;

namenode它的作用時記錄元資料資訊,記錄塊資訊和對節點進行統一管理。

比如使用者要儲存乙個很大的檔案,hdfs系統會對這個檔案進行切分,然後儲存在多台namenode節點當中,那麼每個切的大小,儲存的路徑資訊,檔案的副本數等元資料資訊會儲存在元資料當中,由namenode進行管理和記錄。

datanode節點的作用是儲存資料,namenode將資料切塊後的分配給多個datanode節點,datanode對資料塊進行儲存,datanode它預設的塊大小在hadoop1.x的版本中是64m,而hadoop2.x之後的版本預設塊大小為128m。

hdfs還有乙個副本機制,它會預設給存在datanode當中的每塊檔案進行備份,預設的副本數量(republication)為3,這樣保證了資料的安全性。

大致如圖:

二、hdfs寫資料流程

1.客戶端向namenode請求上傳檔案資料hunter.txt(大小:200m);

2.namenode響應可以上傳檔案;

3.客戶端向namenode請求上傳第乙個block(0~128m

),請求返回datanode節點;

4.namenode返回三個datanode節點(副本數預設為3),採用這三個節點儲存資料;

5.客戶端向datanode請求建立乙個block的傳輸通道;

6.datanode應答通道建立成功;

7.客戶端向datanode傳輸資料,資料寫入到hdfs檔案系統當中。

三、hdfs讀資料流程

2.namenode返回目標檔案的元資料資訊(block所在的datanode);

3.客戶端向datanode請求讀取資料檔案;

4.datanode以fsdatainputstream流的形式向客戶端傳輸資料;

5.客戶端生成hunter.txt檔案。

四、namenode執行機制

首先去到主節點namenode的元資料資訊dfs目錄中,可以看到很多種檔案,如下:

edits:存放hdfs系統所有的更新操作的日誌檔案

fsimage:hdfs元資料的永久性的檢查點,其中包含了hdfs系統所有的目錄和檔案

seen_txid:最有乙個edits檔案的數字,即edits檔案個數

version:記錄了很多的id,如下:

namespaceid:每個節點的id,每個節點都不同

clusterid:乙個集群統一的id,是唯一的,乙個集群中所有節點的clusterid都相同

ctime:namenode儲存系統的使用時間的時間戳

storagetype:節點型別

blockpoolid:跨集群的全域性唯一

layoutversion:版本號

namenode的執行機制:

1.首先啟動集群,會啟動namenode和secondarynamenode,兩個節點的記憶體會載入日誌檔案和映象檔案(edits、fsimage檔案);

2.當客戶端對hdfs集群進行增刪改查等操作時,日誌檔案會更新滾動;

3.當eidts檔案數量達到預設閾值,或checkpoint時間到達預設觸發時間時;

(dfs.namenode.checkpoint.period :多久checkpoint一次、

dfs.namenode.checkpoint.check.period:多久檢查一次操作的次數、

dfs.namenode.checkpoint.txns:多少次操作後chechpoint一次)

4.namenode將edits檔案拷貝到secondarnamenode;

5.secondarnamenode的記憶體會載入拷貝的edits檔案並合併;

6.secondarnamenode會生成新的映象檔案fsimage.checkpoint;

7.secondarnamenode將新生產的映象檔案拷貝到namenode;

8.namenode將收到的映象檔案重新命名為fsimage;

9.namenode將新的fsimage映象檔案傳送到secondarnamenode

這樣兩個節點的元資料資訊就相同了!!!

五、datanode執行機制

1.hdfs集群啟動後,datanode現象namenode傳送註冊資訊;

2.namenode返回註冊成功;

3.每隔一段時間datanode會上傳所有的塊資訊到namenode;

(塊資訊:資料、資料長度、校驗和、時間戳等)

4.預設如果超過10分鐘namenode沒有收到datanode的資訊資訊,則認為節點不可用

Spring Cloud 各元件之間的關係

每個元件都不是平白無故的產生的,是為了解決某一特定的問題而存在。eureka和ribbon,是最基礎的元件,乙個註冊服務,乙個消費服務。hystrix為了優化ribbon 防止整個微服務架構因為某個服務節點的問題導致崩潰,是個保險絲的作用。dashboard給hystrix統計和展示用的,而且監控服...

linux核心各元件的功能介紹

各元件的主要功能介紹如下 1.程序管理 負責建立,結束程序,管理核心的活動,如軟體中斷 tasklet等,管理程序通訊,如訊息 message 管道 pipe 等,實現程序排程 schedule 程序排程是程序管理的重要任務,它處理所有活動的 等待被執行的和被阻塞 blocking 的程序排程,使所...

Mybatis各元件的生命週期

sqlsessionfactorybuilder是構建sqlsessionfactory的,構建完成生命週期結束 只是乙個構造器,生命週期存在於方法內部.每次訪問資料庫都需要通過sqlsessionfactory建立sqlsession,它的唯一作用就是建立sqlsession.生命週期存在於myb...