数据治理之数据生命周期管理
大數據業務系統,在運行過程中會產生大量歷史數據,這些歷史數據日積月累下來,除了增加集群的存儲成本,也會影響大數據集群之上的應用系統的運行效率(因為整個大數據集群的hdfs, hive, hbase等存儲引擎隨著負擔越來越大,其響應效率會有所降低)。
所以數據治理會強調對數據進行全生命周期的管理,既要考慮數據的采集獲取,也要考慮數據的備份歸檔。我們不能因為大數據集群本身具有可橫向擴展,容量大,單位存儲成本低這些特點,就對數據 “只進不出”。因為缺少了治理的數據集合,再多也不能稱為“數據湖泊”,而是“數據沼澤”,是不利于數據價值的分析挖掘的。
在大數據業界,對于數據的生命周期管理,普遍的做法是,根據業務特點,分析數據使用狀況,將數據分為冷數據與熱數據(更細致的還有溫數據),然后對冷熱數據采取不同的管理策略。常見的數據管理策略有:
利用云對象存儲的力量:將熱數據保存在當前大數據集群中支撐當前的業務系統,而將冷數據備份到云對象存儲如oss, s3上;
冷熱數據分集群存儲:將熱數據保存在當前大數據集群中支撐當前的業務系統,并搭建專門的冷數據集群,將冷數據轉存到冷集群中;(冷集群更側重存儲能力,熱集群更側重計算能力,在集群底層服務器選型上各有側重,從而均衡成本);
利用hdfs本身提供的分級存儲的策略:hdfs新版本本身(其實也不新了,從3.0開始就逐步完善這塊了,詳情見jira hdfs-2832,)也是支持tiered storage即分級存儲的,可以對不同的目錄,根據其數據冷熱程度不同,動態配置不同的存儲策略,從而存儲到不同的底層存儲介質上??梢允褂玫拇鎯︻愋?storage types 有 archive, disk, ssd 和 ram_disk,可以配置的存儲策略 storage policies 有 hot, warm, cold, All_SSD, One_SSD, Lazy_Persist and Provided。
直接刪除冷數據:當前的大數據集群只保存業務需要的數據,而將業務不需要的歷史數據,定期通過腳本進行刪除。這種方式,因為需要刪除數據,所有只有在業務方確認數據確實不需要了,而且公司真個成本又有限的情況下,才會使用。
在某大數據系統的案例中,在跟客戶充分溝通后,出于成本的考量,他們采用了第四條,即直接刪除冷數據的方案(當然還有部分易操作性的考量)。
該方案的實現其實只是幾條ddl語句,其調用方式和核心內容如下:
beeline -u jdbc:hive2://ip:10000 -hivevar hs_cic_db=${hs_cic} -hivevar clear_date=${clear_date} -f xxx.sql
xxx.sql 腳本內容如下:use ${hs_cic_db}; alter table xx drop if exists partition(part_date < ${clear_date});
注意:hql中使用的變量,建議在命令行使用hivevar來聲明, 而不是hiveconf,后者一般只用來指定hive自身的通用配置參數,如 mapred.reduce.tasks。
進一步技術細節,可以參考:
issues.apache.org/jira/
hadoop.apache.org/docs/
總結
以上是生活随笔為你收集整理的数据治理之数据生命周期管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 风雨小记:成长
- 下一篇: 戳进来,带你走近飞凌嵌入式旗舰级AIoT