溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HDFS3.x新特性EC是什么

發(fā)布時間:2021-12-13 10:59:33 來源:億速云 閱讀:272 作者:小新 欄目:大數(shù)據(jù)

小編給大家分享一下HDFS3.x新特性EC是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

EC介紹

Erasure Coding 簡稱EC,中文名:糾刪碼

EC(糾刪碼)是一種編碼技術(shù),在HDFS之前,這種編碼技術(shù)在廉價磁盤冗余陣列(RAID)中應用最廣泛(RAID介紹:大數(shù)據(jù)預備知識-存儲磁盤、磁盤冗余陣列RAID介紹),RAID通過條帶化技術(shù)實現(xiàn)EC,條帶化技術(shù)就是一種自動將 I/O 的負載均衡到多個物理磁盤上的技術(shù),原理就是將一塊連續(xù)的數(shù)據(jù)分成很多小部分并把他們分別存儲到不同磁盤上去,這就能使多個進程同時訪問數(shù)據(jù)的多個不同部分而不會造成磁盤沖突(當多個進程同時訪問一個磁盤時,可能會出現(xiàn)磁盤沖突),而且在需要對這種數(shù)據(jù)進行順序訪問的時候可以獲得最大程度上的 I/O 并行能力,從而獲得非常好的性能。在HDFS中,把連續(xù)的數(shù)據(jù)分成很多的小部分稱為條帶化單元,對于原始數(shù)據(jù)單元的每個條帶單元,都會計算并存儲一定數(shù)量的奇偶檢驗單元,計算的過程稱為編碼,可以通過基于剩余數(shù)據(jù)和奇偶校驗單元的解碼計算來恢復任何條帶化單元上的錯誤。

HDFS數(shù)據(jù)冗余存儲策略

HDFS的存儲策略是副本機制,這種存儲方式使得數(shù)據(jù)存儲的安全性得到提高,但同時也帶來了額外的開銷,HDFS默認的3副本方案在存儲空間和其他資源(如網(wǎng)絡帶寬)上有200%的額外開銷,但是對于I/O活動相對較低的數(shù)據(jù),在正常期間很少訪問其他塊副本,但是仍然消耗與第一個副本相同的資源量。因此,HDFS 3.x版本一個重大改進就是使用糾刪碼(EC)代替副本機制,糾刪碼技術(shù)提供了與副本機制相同的容錯能力,而存儲空間卻少得多。在典型的糾刪碼(EC)設置中,存儲開銷不超過50%。

EC算法實現(xiàn)原理

EC的實現(xiàn)算法有很多種,較為常見的一種算法是Reed-Solomon(RS),它有兩個參數(shù),記為RS(k,m),k表示數(shù)據(jù)塊,m表示校驗塊,有多少個校驗塊就最多可容忍多少個塊(包括數(shù)據(jù)塊和校驗塊)丟失,具體原理通過如下例子解釋:

我們使用RS(3,2),表示使用3個原始數(shù)據(jù)塊,2個校驗塊
例:有 7、8、9 三個原始數(shù)據(jù),通過矩陣乘法,計算出來兩個校驗數(shù)據(jù) 50、122。這時原始數(shù)據(jù)加上校驗數(shù)據(jù),一共五個數(shù)據(jù):7、8、9、50、122,可以任意丟兩個,然后通過算法進行恢復

HDFS3.x新特性EC是什么

矩陣乘法

GT是生成矩陣,RS(k,m)的生成矩陣就是m行k列的矩陣
Data代表原始數(shù)據(jù),7,8,9代表原始數(shù)據(jù)塊
Parity代表校驗數(shù)據(jù),50,122代表校驗數(shù)據(jù)塊

所以3個原始數(shù)據(jù)塊,如果使用2個校驗塊,EC編碼總共占用5個數(shù)據(jù)塊的磁盤空間,與2副本機制占用6個數(shù)據(jù)塊的磁盤空間容錯能力相當。

EC的應用場景

將EC技術(shù)集成進HDFS可以提高存儲效率,同時仍提供與傳統(tǒng)的基于副本的HDFS部署類似的數(shù)據(jù)持久性。例如,一個具有6個塊的3副本文件將消耗 6 * 3 = 18 個磁盤空間。但是,使用EC(6個數(shù)據(jù),3個校驗)部署時,它將僅消耗9個磁盤空間塊。

但是EC在編碼過程及數(shù)據(jù)重建期間會大量的使用CPU資源,并且數(shù)據(jù)大部分是執(zhí)行遠程讀取,所以還會有大量的網(wǎng)絡開銷。

所以,對于CPU資源緊張且存儲成本較低的情況下,可以采用副本機制存儲數(shù)據(jù),對于CPU資源有剩余且存儲成本較高的情況下,可以采用EC機制存儲數(shù)據(jù)。

EC在HDFS的架構(gòu)

HDFS是直接使用Online EC(以EC格式寫入數(shù)據(jù)),避免了轉(zhuǎn)換階段并節(jié)省了存儲空間。Online EC還通過并行利用多個磁盤主軸來增強順序I / O性能。在具有高端網(wǎng)絡的群集中,這尤其理想。其次,它自然地將一個小文件分發(fā)到多個DataNode,而無需將多個文件捆綁到一個編碼組中。這極大地簡化了文件操作,例如刪除,磁盤配額以及namespaces之間的遷移。

在一般HDFS集群中,小文件可占總存儲消耗的3/4以上,為了更好的支持小文件,HDFS在第一階段支持條形布局(Striping Layout)的EC方案,目前HDFS連續(xù)布局(Contiguous Layout)方案也在進行中

  • 條形布局:

優(yōu)點:

  • 客戶端緩存數(shù)據(jù)較少

  • 無論文件大小都適用

缺點:

  • 會影響一些位置敏感任務的性能,因為原先在一個節(jié)點上的塊被分散到了多個不同的節(jié)點上

  • 和多副本存儲策略轉(zhuǎn)換比較麻煩

  • 連續(xù)布局:
    HDFS3.x新特性EC是什么

    連續(xù)布局

優(yōu)點:

  • 容易實現(xiàn)

  • 方便和多副本存儲策略進行轉(zhuǎn)換

缺點:

  • 需要客戶端緩存足夠的數(shù)據(jù)塊

  • 不適合存儲小文件

傳統(tǒng)模式下HDFS中文件的基本構(gòu)成單位是block,而EC模式下文件的基本構(gòu)成單位是block group。以RS(3,2)為例,每個block group包含3個數(shù)據(jù)塊,2個校驗塊。

HDFS對于引入EC模式所做的主要擴展如下

  • NameNode:HDFS文件在邏輯上由block group組成,每個block group包含一定數(shù)量的內(nèi)部塊,為了減少這些內(nèi)部塊對NameNode內(nèi)存消耗,HDFS引入了新的分層塊命名協(xié)議??梢詮钠淙魏蝺?nèi)部塊的ID推斷出block group的ID。這允許在塊組而不是塊的級別進行管理

  • Client:客戶端讀取和寫入路徑得到了增強,可以并行處理block group中的多個內(nèi)部塊

  • DataNode:DataNode運行額外ErasureCodingWorker(ECWorker)任務,用于對失敗的糾刪編碼塊進行后臺恢復。NameNode檢測到失敗的EC塊, 會選擇一個DataNode進行恢復工作。此過程類似于失敗時如何重新恢復副本的塊。重建執(zhí)行三個關鍵的任務節(jié)點:

    1. 從源節(jié)點讀取數(shù)據(jù):使用專用線程池從源節(jié)點并行讀取輸入數(shù)據(jù)?;贓C策略,對所有源目標的發(fā)起讀取請求,并僅讀取最少數(shù)量的輸入塊進行重建。

    2. 解碼數(shù)據(jù)并生成輸出數(shù)據(jù):從輸入數(shù)據(jù)解碼新數(shù)據(jù)和奇偶校驗塊。所有丟失的數(shù)據(jù)和奇偶校驗塊一起解碼。

    3. 將生成的數(shù)據(jù)塊傳輸?shù)侥繕斯?jié)點:解碼完成后,恢復的塊將傳輸?shù)侥繕薉ataNodes。

  • 糾刪碼策略:為了適應異構(gòu)的工作負載,HDFS群集中的文件和目錄允許具有不同的復制和糾刪碼策略。糾刪碼策略封裝了如何對文件進行編碼/解碼。每個策略由以下信息定義:

    1. EC模式:這包括EC組(例如6 + 3)中的數(shù)據(jù)和奇偶校驗塊的數(shù)量,以及編解碼器算法(例如Reed-Solomon,XOR)。

    2. 條帶化單元的大小。這確定了條帶讀取和寫入的粒度,包括緩沖區(qū)大小和編碼工作。

我們可以通過XML文件定義自己的EC策略,該文件必須包含以下三個部分:

  1. layoutversion:這表示EC策略XML文件格式的版本。

  2. schemas:這包括所有用戶定義的EC模式。

  3. policies:這包括所有用戶定義的EC策略,每個策略均由schema id和條帶化單元的大?。╟ellsize)組成。

Hadoop conf目錄中有一個配置EC策略的XML示例文件,配置時可以參考該文件,文件名稱為user_ec_policies.xml.template。

集群的硬件配置

糾刪碼對群集在CPU和網(wǎng)絡方面提出了其他要求:

  1. 編碼和解碼工作會消耗HDFS客戶端和DataNode上的額外CPU。

  2. 糾刪碼文件也分布在整個機架上,以實現(xiàn)機架容錯。這意味著在讀寫條帶化文件時,大多數(shù)操作都是在機架上進行的。因此,網(wǎng)絡二等分帶寬非常重要。

  3. 對于機架容錯,擁有至少與配置的EC條帶寬度一樣多的機架也很重要。對于EC策略RS(6,3),這意味著最少要有9個機架,理想情況下是10或11個機架,以處理計劃內(nèi)和計劃外的中斷。對于機架少于條帶寬度的群集,HDFS無法保持機架容錯,但仍將嘗試在多個節(jié)點之間分布條帶化文件以保留節(jié)點級容錯。

最后

在HDFS默認情況下,所有的EC策略是被禁止的,我們可以根據(jù)群集的大小和所需的容錯屬性,通過hdfs ec [-enablePolicy -policy]命令啟用EC策略。例如,對于具有9個機架的群集,像RS-10-4-1024k這樣的策略將不會保留機架級的容錯能力,而RS-6-3-1024k或RS-3-2-1024k可能更合適。

在副本機制下,我們可以設置副本因子,指定副本的數(shù)量,但是在EC策略下,指定副本因子是沒有意義的,因為它始終為1,無法通過相關命令進行更改。

以上是“HDFS3.x新特性EC是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI