Hadoop也需要有數據生命周期管理
在數據倉庫中肯定是要實施數據生命周期管理的,因為我們在實際使用中發現對于數據倉庫中的數據訪問存在典型的二八原則,即通常80%的訪問集中在20%的數據上,這個結論是我們抽查了幾個省的數據倉庫后確認的,甚至有的省由于數據倉庫設計的不一樣(比如日表、月表)等顯現得更加明顯。基于這樣的情況,為了讓數據倉庫運行得更加高效,同時能低成本的存儲長期的數據,約一半以上的省公司數據倉庫實現了按照數據生命周期的分庫。
但是當我們將目光轉向Hadoop的時候,發現同樣的問題依然存在。我們希望讓Hadoop來承載海量結構化數據和非結構化數據的存儲,以及部分的數據加工,也許以后還會通過HIVE或者PIG的方式承載一些高端的即席查詢任務。這種混合而不是單一的任務注定了也需要實施生命周期管理,因為數據加工通常是對近段時間的數據進行,而數據存儲和數據查詢則需要對歷史數據進行。
根據訪問頻次和響應時間以及吞吐率的需求不同,我們可以通過幾種方式來進行數據生命周期管理。
一、在一個Hadoop系統中,通過不同的壓縮率、塊大小和副本數量來控制。對于歸檔的數據,可以使用較高的壓縮率,較大的塊和較少的副本來保存。因為較高的壓縮率需要較長的解壓時間、較大的塊可以節約NameNode的空間,較少的副本(但仍需要保證數據安全)雖然會減少Map任務的本地調度幾率,但是由于頻率較少所以影響不大。
二、組成兩個HDFS系統。一個是專門為高性能計算設計的,有較多的高性能磁盤(SAS盤)、CPU和內存,系統存儲容量不用太大。另外一個專門為歷史數據存儲和查詢設計,用較多的高容量磁盤(SATA盤)、較少比例的CPU和內存。兩個系統中的數據對象通過一個第三方組件來進行透明的管理,兩個系統中的數據通過Hadoop中一個專門用來在兩個HDFS中導數據的組件,通過MapReduce來進行高效的數據同步。在數據處理方面,兩個系統可以配置在一套JobTrack上,也可以僅讓第二套系統承擔HDFS的任務,所有的MapReduce任務都放在第一套高性能系統上去實現,讓它再去訪問第二套系統的HDFS。
個人感覺兩個也許可以混合起來用,當然這加大了系統的復雜度,需要同步加強管控。