hdfs的高可用

2021-08-19 07:25:41 字數 1895 閱讀 7945

hdfs的架構體系

hdfs採用了主從模式(集中式管理)

主: 1. namenode 只有乙個,它存在乙個缺陷(單點故障).

2. 它是記錄集群情況和集群檔案儲存的元資料

3. 解決缺陷方式: 

a. 高可用方式,製作乙個副namenode ,這個副namenode可不是secondnamenode,

b. 倆個namenode的功能一樣在高可用中沒有secondnamenode.只有倆個namenode

c. 當乙個namenode掛掉後另乙個namenode上位

從:1. datanode 有n個

2. 它儲存的是資料塊(真實資料)

若名稱節點(namenode)發生磁碟故障,如何挽救集群以及資料?

/home/centos/namemeta

2 如何實現hdfs高可用

hdfs的高可用指的是hdfs持續對各類客戶端提供讀、寫服務的能力,因為客戶端對hdfs的讀、寫操作之前都要訪問name node伺服器,客戶端只有從name node獲取元資料之後才能繼續進行讀、寫。所以hdfs的高可用的關鍵在於name node上的元資料持續可用。

前面說過2nn的功能是checkpoint,把nn的fsimage和edit log做定期融合,融合後傳給nn, 以確保備份到的元資料是最新的,這一點類似於做了乙個元資料的快照。hadoop官方提供了一種quorum journal manager來實現高可用,那麼就沒必要配置2nn了

在高可用配置下,edit log不再存放在名稱節點,而是存放在乙個共享儲存的地方,這個共享儲存由奇數個journal node組成,一般是3個節點(jn小集群), 每個jn專門用於存放來自nn的編輯日誌,編輯日誌由活躍狀態的名稱節點寫入jn小集群。

那麼要有2個nn,而且二者之中只能有乙個nn處於活躍狀態(active),另乙個是待命狀態(standby),只有active的nn節點才能對外提供讀寫hdfs服務,也只有active態的nn才能向jn寫入編輯日誌;standby狀態的nn負責從jn小集群中拷貝資料到本地。另外,各個data node也要同時向兩個名稱節點報告狀態(心跳資訊、塊資訊)。

2個nn與3個jn構成的組保持通訊,活躍的名稱節點負責往jn集群寫入編輯日誌,待命的名稱節點負責觀察jn集群中的編輯日誌,並且把日誌拉取到待命節點,再加上兩個nn各自的fsimage映象檔案,這樣一來就能確保兩個nn的元資料保持同步。一旦active nn不可用,提前配置的zookeeper會把standby節點自動變為active狀態,繼續對外提供讀寫服務。詳見下文的2.2如何通過自動容災而不是手動容災?

2.1手動實現高可用的大概流程:

2.1.1 準備3臺伺服器分別用於執行journalnode程序(也可部署在date node上),準備2臺name node用於執行namenode程序,data node數量不限

2.1.2 分別啟動3臺jn伺服器上的journalnode程序,分別在date node伺服器啟動datanode程序

2.1.3 需要同步2臺name node之間的元資料。具體做法:從第一台nn拷貝元資料到另一台nn,然後啟動第一台的namenode程序,再到另一台名稱節點上做standby引導啟動

2.1.4 把第一台名節點的edit log初始化到jn節點,以供standby狀態的nn到jn拉取資料

2.1.5啟動standby狀態的名稱節點,這樣就能同步fsimage檔案

2.1.6 模擬故障,檢驗是否成功實現:手動把active狀態的nn弄死,正常的話會自動把standby狀態的nn轉變成active.

HDFS的HA 高可用

問題 namenode是單節點的,容易發生單點故障。在hadoop2.x之後,可以部署兩個namenode,乙個active 活躍的 另外乙個是standby 備份的 如果要實現這種高可用,需要解決兩個問題 1.資料的同步 資料的同步包括兩部分 靜態資料和動態資料,靜態資料是指元資料資訊 塊名稱,大...

《高可用的HDFS》 元資料解析

元資料有三類資訊 1 檔案和目錄自身的屬性資訊 2 記錄檔案內容儲存相關資訊 3 記錄hdfs中所有datanode的資訊 inode 檔案和目錄是檔案系統的基本元素,hdfs將其抽象為inode,每乙個檔案或目錄都對應乙個唯一的inode,其儲存了名字資訊 建立時間 修改時間 父目錄等資訊。ino...

HDFS使用QJM實現高可用(一)

qjm的基本原理就是用2n 1臺journalnode儲存editlog,每次寫資料操作有大多數 n 1 返回成功時即認為該次寫成功,資料不會丟失了。當然這個演算法所能容忍的是最多有n臺機器掛掉,如果多於n臺掛掉,這個演算法就失效了。第一部分 1.使用qjm來實現ha已經成為開源版的預設ha方案,那...