hdfs合併塊 HADOOP知識梳理之HDFS

2021-10-13 23:59:11 字數 2786 閱讀 6849

hdfs是乙個分布式檔案系統(管理服務:提供檔案的讀取服務、寫入服務、檢視目錄資訊服務)

hdfs是一套分布式軟體系統,裡面有很多服務角色:namenode、datanode、secondary namenode、客戶端;

檔案在hdfs中分塊儲存的,乙個檔案會被分成多個塊(按照128m分塊),每個塊「隨機」儲存在集群中的某些datanode上;

每個塊都有乙個唯一的塊id;

每個塊在hdfs中可以儲存多個副本!(預設3個副本);

namenode負責管理元資料(hdfs系統的目錄樹,每個檔案的具體路徑、塊資訊、物理儲存位置、副本數量),並為客戶端提供查詢服務;

datanode負責管理檔案塊(幫客戶端儲存塊,幫客戶端取塊)

問題:(1) 傳輸block_0資料傳完以後,在傳輸block_1的嗎?

答:不是的,它是佇列一起傳送的。

(2) 第4步的hdp1、hdp2、hdp3是怎麼選擇的?

答:是根據client選擇的,hdp1是離client最近的,hdp2和hdp3是根據hdp1選擇的。

(3) 在請求建立通道和應答成功的步驟失敗,還會進行下一步上傳資料嗎?

答:不會的,建立通道和應答成功的步驟失敗,就會丟擲異常,連線不上。

(4) 在傳輸資料失敗的時候,就會丟擲異常,不能進行傳輸嗎?

答:不一定,客戶端往hdp01傳輸資料的時候,如果失敗,就會掛掉丟擲異常;但是hdp01往hdp02(hdp02往hdp03)上傳輸資料失敗的話,還是會hdp02還是會給hdp01傳送已經收到的訊息,如果副本數量不夠的情況下,會觸發自動備份。

問題:(1) namenode給client返回儲存資料的節點,client是怎麼選擇從哪台節點上選擇建立通道拉取資料的?

答:就近原則,client會選擇離它最近的一台節點上建立通道拉取資料。

(2) 如果在client在hdp1建立通道的過程中,沒用應答,client會怎麼做?

答:client會在接著去hdp2建立通道,如果還是不成功,會接著向hdp3建立通道,還是不成功的話才會丟擲異常,有一台節點成功,就會進行拉取資料。

(1) 概述

首先明確namenode的職責:響應客戶端請求,管理元資料。

namenode對元資料有三種儲存方式:

a. 記憶體元資料

b. 磁碟元資料映象檔案

c. 資料操作日誌檔案(可通過日誌運算出元資料)

細節:hdfs不適合儲存小檔案的原因,每個檔案都會產生元資訊,當小檔案多了,元資訊也就會多了,對namenode會產生壓力。

(2) 對三種儲存機制的進一步解釋

記憶體元資料:

就是當前namenode正在使用的元資料,是儲存在記憶體當中的。

磁碟元資料映象檔案:

是記憶體元資料的映象,儲存在namenode工作目錄中,它是乙個準元資料,作用是在namenode宕機時能夠快速的恢復元資料。稱為fsimage。

資料操作日誌檔案:

是用來記錄元資料操作的,在每次改動元資料時都會追加日記記錄,如果有完整的日誌就可以還原完整的元資料。主要作用是用來完善fsimage,減少fsimage和記憶體元資料的差距。稱為editslog。

因為namenode本身的任務就非常重,為了不再給namenode壓力,日誌合併到fsimage就引入了另乙個角色secondarynamenode。secondarynamenode負責定期把editslog合併到fsimage,「定期」是namenode向secondarynamenode傳送rpc請求的,是按時間或者日誌記錄條數為「間隔」的,這樣即不會浪費合併操作又不會造成fsimage和記憶體元資料有很大的差距。因為元資料的改變頻率是不固定的。

1)namenode向secondarynamenode傳送rpc請求,請求checkpoint操作,將editslog合併到fsimage。

2)secondarynamenode收到請求後從namenode上讀取(通過http服務)editslog(多個,滾動日誌檔案)和fsimage檔案。

3)secondarynamenode會根據拿到的editslog合併到fsimage。形成最新的fsimage檔案。(中間有很多步驟,把檔案載入到記憶體,還原成元資料結構,合併,再生成檔案,新生成的檔名為fsimage.checkpoint)。

4)secondarynamenode通過http服務把fsimage.checkpoint檔案上傳到namenode,並且通過rpc呼叫把檔案改名為fsimage。

namenode和secondary namenode的工作目錄儲存結構完全相同,所以,當namenode故障退出需要重新恢復時,可以從secondary namenode的工作目錄中將fsimage拷貝到namenode的工作目錄,以恢復namenode的元資料。

優點:高容錯性:

資料自動儲存多個副本:副本丟失後,自動恢復

合適批處理:移動計算而非資料

適合大資料處理:gb、tb、pb級資料,百萬以上的檔案數量規模,10k+節點規模

缺點:不適合低延遲訪問:多輪rpc呼叫

小檔案:

元資料資訊儲存在namenode記憶體中

乙個block meta data大約150byte記憶體,儲存1億block大約需要20gb

如果乙個檔案10k,1億個檔案大小僅為1tb

乙個namenode節點的記憶體是有限的

爭取大量小檔案消耗大量的尋道時間

拷貝大量小檔案vs拷貝乙個大檔案

Hadoop系列之HDFS 資料塊 12

要把大檔案儲存在 hdfs上,hdfs 會把大檔案分割成小塊,即我們通常說的資料塊 block 它是 hadoop 分布式檔案系統最小的儲存單元,而且我們沒辦法決定指定塊的儲存節點位址,這些 namenode 會替我們決定。資料塊預設大小是 128mb,比作業系統裡面的塊概念要大很多 作業系統塊大小...

hadoop修改HDFS預設塊大小的配置

首先敘述一下 1.hadoop1.x的hdfs預設塊大小為64mb hadoop2.x的預設塊大小為128mb。如果進行資料塊的自定義需要修改hdfs site.xml檔案,例如 property name dfs.blocksize name value 30 mvalue property pr...

hadoop之HDFS 資料塊恢復與檔案上傳測試

當某台機器上的乙個datanode程序down掉,hdfs為了保證檔案的副本滿足設定的副本數,會進行資料塊的恢復操作。塊恢復操作主要受兩個引數影響 a dfs.namenode.replication.work.multiplier.per.iteration namenode計算集群每個週期每個d...