這篇文章主要為大家展示了“怎么使用分層存儲讓HDFS變得更高效”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“怎么使用分層存儲讓HDFS變得更高效”這篇文章吧。
Hadoop 及其承諾
眾所周知,商用硬件可以組裝起來創建擁有大數據存儲和計算能力的Hadoop集群。將數據拆分成多個部分,分別存儲在每個單獨的機器上,數據處理邏輯也在同樣的機器上執行。

例如:一個1000個節點組成的Hadoop集群,單節點容量有20TB,最多可以存儲20PB的數據。因此,所有的這些機器擁有足夠的計算能力來履行Hadoop的口號:“take compute to data”。
數據的溫度
集群中通常存儲著各種不同類型的數據集,不同的團隊通過該集群可以共享地處理他們不同類型的工作任務。通過數據管道,每個數據集每時每刻都會得到增長。
數 據集有一個共同特點就是初始的使用量會很大。在此期間,數據集被認為是“熱(HOT)”的。我們通過分析發現,隨著時間的推移,使用率會有一定程度的下 降,存儲的數據每周僅僅就被訪問幾次,逐漸就變為“溫(WARM)”數據。在此后90天中,當數據使用率跌至一個月幾次時,它就被定義為“冷 (COLD)”數據。
因此數據在最初幾天被認為是“熱”的,此后***個月仍然保持為“溫”的。在這期間,任務或應用會使用幾次該數據。隨著 數據的使用率下降得更多,它就變“冷”了,在此后90天內或許只被使用寥寥幾次。最終,當數據一年只有一兩次使用頻率、極少用到時,它的“溫度”就是“冰 凍”的了。
Data Age | Usage Frequency | Temperature |
Age < 7 days | 20 times a day | HOT |
7 days > Age < 1 month | 5 times a week | WARM |
1 month < Age < 3 months | 5 times a month | COLD |
3 months < Age < 3 years | 2 times a year | FROZEN |

一般來講,溫度與每個數據集都緊密相關。在這個例子中,溫度是與數據的年齡成反比的。一個特定數據集的溫度也受其他因素影響的。你也可以通過算法決定數據集的溫度。
HDFS的分層存儲
HDFS從Hadoop2.3開始支持分層存儲
它是如何工作的呢?
正常情況下,一臺機器添加到集群后,將會有指定的本地文件系統目錄來存儲這塊副本。用來指定本地存儲目錄的參數是dfs.datanode.dir。另一層中,比如歸檔(ARCHIVE)層,可以使用名為StorageType的枚舉來添加。為了表明這個本地目錄屬于歸檔層,該本地目錄配置中會帶有[ARCHIVE]的前綴。理論上,hadoop集群管理員可以定義多個層級。
比 如說:如果在一個已有1000個節點,其總存儲容量為20PB的集群上,增加100個節點,其中每個節點有200TB的存儲容量。相比已有的1000個節 點,這些新增節點的計算能力就相對較差。接下來,我們在所有本地目錄的配置中增加ARCHIVE的前綴。那么現在位于歸檔層的這100個節點將會有 20PB的存儲量。***整個集群被劃分為兩層——磁盤(DISK)層和歸檔(ARCHIVE)層,每一層有20PB的容量,總容量為40PB。

基于溫度將數據映射到存儲層
在這個例子中,我們將在擁有更強計算能力節點的DISK層存儲高頻率使用的“熱(HOT)”數據。
至于“溫(WARM)”數據,我們將其大部分的副本存儲在磁盤層。對于復制因子(replication factor)為3的數據,我們將在磁盤層存儲其兩個副本,在歸檔層存儲一個副本。
如果數據已經變“冷(COLD)”,那么我們至少將在磁盤層存儲其每個塊的一個副本。余下的副本都放入歸檔層。

當 一個數據集為認為是“冰凍(FROZEN)”的,這就意味著它幾乎已經不被使用,將其存儲在具有大量CPU、能執行眾多任務節點或容器的節點上是不明智 的。我們會把它存儲到一個具有最小計算能力的節點上。因此,所有處于“冰凍(FROZEN)”狀態塊的全部副本都可以被移動到歸檔層。
跨層的數據流
當 數據***次添加到集群中,它將被存儲到默認的磁盤層?;跀祿臏囟?,它的一個或多個副本將被移動到歸檔層。移動器就是用來把數據從一個層移動到另一層 的。移動器的工作原理類似平衡器,除了它可以跨層地移動塊的副本。移動器可接受一條HDFS路徑,一個副本數目和目的地層信息。然后它將基于所述層的信息 識別將要被移動的副本,并調度數據在源數據節點到目的數據節點的移動。
Hadoop 2.6中支持分層存儲的變化
Hadoop 2.6中有許多的改進使其能夠進一步支持分層存儲。你可以附加一個存儲策略到某個目錄來指明它是“熱(HOT)”的,“溫(WARM)”的,“冷 (COLD)”的, 還是“冰凍(FROZEN)”的。存儲策略定義了每一層可存儲的副本數量。我可以改變目錄的存儲策略并啟動該目錄的移動器來使得策略生效。
使用數據的應用
基于數據的溫度,數據的部分或者全部副本可能存儲在任一層中。但對于通過HDFS來使用數據的應用而言,其位置是透明的。
雖 然“冰凍”數據的所有副本都在歸檔層,應用依然可以像訪問HDFS的任何數據一樣來訪問它。由于歸檔層中的節點并沒有計算能力,運行在磁盤層的映射 (map)任務將從歸檔層的節點上讀取數據,但這會導致增加應用的網絡流量消耗。如果這種情況頻繁地發生,你可以指定該數據為“溫/冷”,并讓移動器移回 一個或多個副本到磁盤層。
確定數據溫度以及完成指定的副本移動至預先定義的分層存儲可以全部自動化。
eBay的分層存儲
eBay 在其中一個具有非常大規模的集群上使用了分層存儲。該集群擁有40PB的數據。我們又額外增加了10PB計算能力受限的存儲容量。每一個新的機器都可以存 儲220TB。我們把增加的存儲標記為歸檔層,并把一些目錄標識為“溫”、“冷”或者“冰凍”。然后根據它們的溫度,移動所有或部分的副本到歸檔層。
每GB歸檔層的價格要比磁盤層價格低四倍。這種差異主要是由于在歸檔層的機器具有非常有限的計算能力,故降低了成本。
以上是“怎么使用分層存儲讓HDFS變得更高效”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。