一、什么是糾錯碼
提起糾錯碼就有必要提起HDFS中多副本策略。在多副本策略下,HDFS中儲存文件,要存儲三份相同文件,如果當前文件出現丟失,可以通過其他副本進行復制,恢復回來。但是磁盤的利用率不高,僅為1/3。
在Hadoop3.x之后就引入了糾刪碼技術(Erasure Coding)
糾刪碼技術(Erasure coding)簡稱EC,是一種編碼容錯技術。最早用于通信行業,數據傳輸中的數據恢復。它通過對數據進行分塊,然后計算出校驗數據,使得各個部分的數據產生關聯性。當一部分數據塊丟失時,可以通過剩余的數據塊和校驗塊計算出丟失的數據塊。
二、糾錯碼優缺點
優點
1.客戶端緩存數據較少;
2.無論文件大小都適用;
缺點
1.網絡帶寬的消耗,因為數據恢復需要去讀其他的數據塊和校驗塊;
2.進行編碼,解碼計算需要消耗CPU資源;
三、糾刪碼策略
RS-3-2-1024k:每組數據包含3個數據塊和2個校驗塊,一共5個塊,存儲使用效率3/5=60%,一個集群最小datanode數量為5,可允許2個datanode同時離線不影響應用訪問數據;
RS-6-3-1024k:每組數據包含6個數據塊和3個校驗塊,一共9個塊,存儲使用效率6/9=67%,一個集群最小datanode數量為9,可允許3個datanode同時離線不影響應用訪問數據;
RS-10-4-1024k:每組數據包含10個數據塊和4個校驗塊,一共14個塊,存儲使用效率10/14=71%,一個集群最小datanode數量為14,可允許4個datanode同時離線不影響應用訪問數據;