Hadoop容錯恢復之糾刪碼

2021-09-02 02:38:46 字數 1204 閱讀 3908

在hdfs中常見的容錯恢復是副本機制,它會在部分檔案丟失之後通過心跳機制發資料給namenode然後尋找未丟失的副本,按照replication進行備份。這樣的話會保證資料在絕大多數情況下不丟失。但是造成的問題就是這種機制使得hadoop的空間利用率會很低。比如說在乙個備份數量為3的情況下空間利用率僅為1/3,而從空間利用率這個維度來看的話用於容錯恢復的糾刪碼機制表現的不錯。

在這裡我斗膽說一句糾刪碼基於資訊理論中的互資訊,就是乙個不知道的資訊可以由其它和它相關的資訊所推算出來。以下是葉老師(葉尚青)的例子:

在①丟失的情況下能夠通過④⑤⑥推導出來(或者是②③④亦或是②③⑤⑥)。但是關鍵的資訊都丟掉了的話比如說丟失其中的兩個方程與兩個值這時候就無法挽救了但是這種概率是非常低的。實務上糾刪碼是非常厲害的。

實務上里索碼是糾刪碼思想的一種實現,在hdfs中會用主要的硬碟資源儲存實際的資料,而使用少數的機器去儲存資料之間的依賴關係如下圖所示:

整個糾刪碼的使用包括編碼和解碼:

編碼階段讓n個不同的資料塊與m個資料校驗塊組成乙個(n + m) * n的矩陣,然後再乘以原始資料組成的乙個矩陣進而得到乙個新的矩陣。這個過程稱為編碼如下圖所示:

如果資料丟失了一些這時就需要通過已有的資訊去解碼,進而推算出丟失的資訊也就是下圖書中d矩陣的資訊。我們首先得到出當前資料單位矩陣與校驗塊組成的矩陣b。然後計算這個矩陣的逆矩陣b-1 。然後通過b-1 * b * d = b-1 * survivors 得到矩陣d(左邊就只剩下單位矩陣與d矩陣的乘積)。計算的過程如下圖所示:

這樣就順利的解出丟失的資料了。

在資料量較大狀態下糾刪碼機制可以將磁碟的利用率收斂於100%,但是它的容錯恢復會帶來大量的計算這樣會使得讀寫資料的效率低下。

Hadoop系列之HDFS 糾刪碼 18

hadoop hdfs 糾刪碼已經克服了之前使用的資料塊多副本策略的限制,它具有和多副本策略相同的容錯效果,但需要的儲存空間卻少很多。使用糾刪碼技術可以減少 50 的儲存空間。hdfs 為了資料容錯,在儲存的時候回,每個資料塊會被複製3次。為了防止由於 datanode 發生故障帶來資料丟失,這是一...

糾刪碼簡介

背景 在資料儲存領域,hadoop採用三副本策略有效的解決了儲存的容錯問題,但是三副本策略中磁碟的利用效率比較低,僅有33 而且副本帶來的成本壓力實在太高,後來適時的出現了糾刪碼的概念。當冗餘級別為n m時,將這些資料塊分別存放在n m個硬碟上,這樣就能容忍m個 假設初始資料有n個 硬碟發生故障。當...

Hadoop糾刪碼演算法啟用ISA L加速庫

啟用isa l步驟如下 安裝yasm和nasm 在hadoop集群所有節點上安裝yasm和nasm。1 configure 2.make make install 或者直接用yum安裝 yum install y yasm yum install y nasm 注意 isa l 2.28.0對nas...