Hadoop學習筆記和總結(八)

2021-10-02 07:49:21 字數 3288 閱讀 4368

目錄

第八章 hdfs中元資料的管理

8.1 元資料

8.1.1 什麼是元資料?

8.1.2 元資料儲存在**?

8.2 元資料的寫入機制

8.3 合併(checkpoint)

8.3.1 元資料合併前

8.3.2 元資料合併(checkpoint)

8.4 總結集群中各節點的作用

8.4.1 namenode的作用

8.4.2 secondarynamenode的作用

8.4.3 datanode的作用

元資料:抽象目錄樹、資料和資料塊的對映、資料塊的儲存節點。儲存在記憶體和磁碟中的元資料有所不同。

記憶體中儲存:抽象目錄樹、資料和資料塊的對映、資料塊的儲存節點

磁碟中儲存:抽象目錄樹、資料和資料塊的對映

首先進入hadoopdata目錄,hadoopdata目錄下有三個目錄:dfsnm-local-dir;dsf目錄下包括:datanamenamesecondary

(1)data:資料的真實儲存目錄,datanode儲存資料的儲存目錄

(2)name:namenode儲存元資料的目錄

(3)nm-local-dir:hdfs的本地快取

對於name目錄,該目錄中包含4類檔案:

(1)歷史日誌檔案

日誌檔案,記錄的是客戶端對元資料操作,並且只記錄操作。比如某乙個使用者對某乙個目錄執行某一種操作。

例如:edits_0000000000000000001-0000000000000000002等

(2)正在編輯的日誌檔案

例如:edits_inprogress_0000000000000000398

(3)映象檔案

映象檔案就是真實的元資料;但是,是真實的元資料資訊經過序列化之後的檔案;集群啟動時會載入這個檔案,在載入的時候反序列化。(為了減少儲存的容量)

例如:序列化後的檔案:fsimage_0000000000000000396 

序列化後的加密檔案: fsimage_0000000000000000396.md5

序列化目的:減小檔案的大小

(4)seen_txid檔案

使用者上傳檔案或其他操作,會改變元資料,但元資料不會直接寫入fsimage檔案中,而是在集群空閒時,通過日誌檔案修改fsimage檔案;這種通過日誌檔案修改映象檔案的操作,就叫合併;

合併點記錄的就是下一次需要合併檔案的起始偏移量,本例中是398,即正在編輯的檔案。

ps:無論什麼時候,記憶體中儲存的元資料永遠是最新最完整的元資料。

當使用者輸入hadoop fs -mkdir/put/rename等修改元資料的命令時,元資料的寫入步驟如下:

(1)首先,將操作寫入磁碟日誌檔案中(edites檔案)

(2)然後,將操作寫入記憶體中,修改記憶體中的元資料;修改記憶體中元資料目錄結構;

為了減小fsimage和記憶體元資料之間的差別,hdfs被設計為:fsimage與日誌檔案(edit_***x)定期合併。但合併是由誰來做呢?

解釋分析:

合併操作由secondarynamenode來做,由於namenode的職責是儲存元資料,處理客戶端的請求;如果再進行檔案合併,會導致壓力過大,所以操作由secondarynamenode執行。

將fsimage與正在編輯的日誌合併的過程,也叫checkpoint過程。

在開始合併之前,secondnamenode時刻與namenode保持通訊,目的是監督是否達到合併條件;觸發合併的條件在hdfs-default.xml中配置。

(1)時間節點:預設時間間隔3600s,即1h;

(2)元資料條數:100w條

以上兩條觸發條件是或的關係,滿足其中乙個就會觸發checkpoint過程。

根據操作日誌(edit檔案)改變fsimage的元資料資訊。checkpoint步驟如下:

(1)secondnamenode不間斷的向namenode傳送請求,請求checkpoint

(2)一旦滿足響應條件,namenode則向secondnamenode傳送checkpoint響應;

(3)再次請求checkpoint

(4)namenode將日誌檔案的狀態,由正在編輯轉變為編輯完成;即,edit_inprogress變為edit_***xx,該操作也被稱為回滾;於此同時,為了記錄合併期間客戶端對hdfs的操作,重新生成乙個正在編輯的日誌檔案(edit_inprogress)

(5)secondnamenode將edits檔案和fsimage拉取到secondnamenode上。其中,日誌檔案是上一次checkpoint至現在的

(6)secondnamenode將edits檔案和fsimage檔案載入到記憶體中,進行合併;合併完成的檔案叫:fsimage.checkpoint

(7)secondnamenode將fsimage.checkpoint傳送給namenode;同時會固化到磁碟,永久儲存乙份,可在namenode宕機時提供恢復幫助;

(8)namenode將fsimage.checkpoint重新命名為fsimage,並替換掉原來的fsimage檔案

以上就是checkpoint的全過程

(p.s :如果沒有達到checkpoint過程的這段時間,集群正常關閉,在關閉之前記憶體中的元資料會固化到磁碟中乙份。

保證secondarynamenode磁碟上的元資料和記憶體中的一致。)

(1)儲存元資料

(2)處理客戶端的請求

(3)負責分配資料塊的儲存節點

(4)進行負載均衡

(1)幫助namenode做元資料備份, 幫助namenode恢復元資料

(2)進行checkppoint,幫助namenode進行元資料合併,減輕namenode壓力

(1)用來儲存資料塊

(2)處理真正的磁碟讀寫

(3)定期的向namenode傳送心跳報告(狀態資訊和資料塊的位置資訊)

對資料塊的位置資訊的補充:

(1)資料塊儲存在datanode節點上;

(2)每個datanode只知道自己節點上儲存了哪些塊,但並不知道這些資料塊分別屬於哪個檔案。

(namenode知道資料塊屬於哪個檔案,即檔案與塊的對應關係)

例如:test.txt:blk_1:;blk_2:(在namenode中)

資料塊的儲存資訊會先存為乙個空的列表,在datanode向namenode傳送塊報告的時候,namenode會把對應塊的儲存節點新增到列表中。

Hadoop學習筆記和總結(一)

大資料 即海量資料,資料量特別大的資料。大資料的特點 1 資料量大 能達到tb pb級別。1tb 1024gb,1pb 1024tb 2 資料增長的速度快 4 資料的價值密度低 整體的價值高 1 公司自己的業務資料 如電商的訂單資料 日誌資料等。2 通過網路爬蟲爬取獲得的資料 由於獲取的資料質量不同...

Hadoop學習筆記和總結(五)

目錄 第五章 hadoop的設計思想 5.1 hdfs和hdfs設計思想 5.1.1 分而治之 5.1.2 備份機制 5.2 hdfs的整體架構 5.2.1 主節點 namenode 5.2.2 從節點 datanode 5.2.3 冷備份節點 secondarynamenode 5.3 hdfs的...

Hadoop學習筆記(八)(SparkSQL概述)

hive 類似於sql的hive ql語言,sql 換 mapreduce spark hive on spark shark hive on spark shark翻譯成rdd元件 shark 僅僅只是把物理執行計畫從mr作業替換成spark作業 shark終止以後,產生了2個分支 hive社群,...