向柯宇,蔣廣,曹杰,凌笑
(1.國網(wǎng)湖南電力有限公司信息通信分公司,湖南 長沙 410029;2.電力物聯(lián)網(wǎng)湖南省重點(diǎn)實(shí)驗(yàn)室,湖南 長沙 410029)
為優(yōu)化電力企業(yè)信息化建設(shè)過程中各業(yè)務(wù)專業(yè)構(gòu)建“煙囪式”系統(tǒng)產(chǎn)生的數(shù)據(jù)孤島體系架構(gòu)[1],解決該模式建設(shè)成本高、周期長、數(shù)據(jù)不共享、質(zhì)量低等問題[2],加快企業(yè)數(shù)字化轉(zhuǎn)型步伐,關(guān)鍵是構(gòu)建數(shù)據(jù)中臺,實(shí)現(xiàn)企業(yè)數(shù)據(jù)業(yè)務(wù)化[3],數(shù)字中臺的定位是企業(yè)數(shù)字能力共享平臺,以統(tǒng)一的標(biāo)準(zhǔn)和流程規(guī)范,幫助企業(yè)實(shí)現(xiàn)業(yè)務(wù)互聯(lián)互通[4]。
數(shù)據(jù)中臺是企業(yè)中臺的一個重要組成部分,傳統(tǒng)企業(yè)相較于互聯(lián)網(wǎng)企業(yè),其特點(diǎn)是中臺能有效連接傳統(tǒng)業(yè)務(wù)系統(tǒng)(后臺)和新的業(yè)務(wù)應(yīng)用(前臺)。數(shù)據(jù)中臺包含的一個核心架構(gòu)部分是公共數(shù)據(jù)層,主要是將中臺匯聚的源端業(yè)務(wù)系統(tǒng)數(shù)據(jù),構(gòu)建成統(tǒng)一公共數(shù)據(jù)模型,存儲在數(shù)據(jù)倉庫中[5]。
數(shù)據(jù)中臺運(yùn)營過程中,需要重視數(shù)據(jù)的生命周期[6],及時(shí)評估數(shù)據(jù)存儲資源占用,采取降低存量、控制增量等措施進(jìn)行成本控制,同時(shí)也是確保數(shù)據(jù)中臺健康穩(wěn)定運(yùn)行的必要條件[7]。中臺數(shù)據(jù)存儲壓力主要來自業(yè)務(wù)數(shù)據(jù)量逐年高速增長,遠(yuǎn)高于企業(yè)每年的存儲預(yù)算增加量;因此需通過存儲優(yōu)化降低成本,首先需要對數(shù)倉中的數(shù)據(jù)進(jìn)行分析,按照數(shù)據(jù)使用頻率將其分類為冷數(shù)據(jù)和熱數(shù)據(jù)。冷數(shù)據(jù)定義為很少被用戶使用,調(diào)用頻率非常低,中臺需采用較低的存儲成本解決方案優(yōu)化冷數(shù)據(jù)保存問題[8]。
電網(wǎng)數(shù)據(jù)中臺數(shù)倉模型表多為按日期分區(qū)存儲的全量表,針對做冷數(shù)據(jù)存儲優(yōu)化,可采用拉鏈表和歷史數(shù)據(jù)歸檔等技術(shù),拉鏈表在不影響搜索效率的前提下,可以大幅節(jié)約存儲空間[9],歷史數(shù)據(jù)歸檔則是將不活躍的數(shù)據(jù)存儲到離線歸檔平臺中,可實(shí)現(xiàn)中臺數(shù)倉瘦身,并在業(yè)務(wù)有歷史數(shù)據(jù)查詢需求時(shí),完成已歸檔數(shù)據(jù)恢復(fù)操作[10]。
在總部統(tǒng)推阿里數(shù)據(jù)中臺的使用過程中,湖南公司積極推廣數(shù)據(jù)中臺并支撐業(yè)務(wù)部門及地市公司400余個大數(shù)據(jù)應(yīng)用,按照數(shù)據(jù)匯集中臺的工作要求,在貼源層和共享層存儲了公司絕大多數(shù)業(yè)務(wù)系統(tǒng)數(shù)據(jù)、公共模型數(shù)據(jù)。
國網(wǎng)湖南省電力有限公司數(shù)據(jù)中臺通過對全域海量數(shù)據(jù)進(jìn)行采集、計(jì)算、存儲、加工,形成統(tǒng)一數(shù)據(jù)標(biāo)準(zhǔn)和口徑,并對外提供統(tǒng)一的數(shù)據(jù)服務(wù),支撐公司各部門各單位大數(shù)據(jù)應(yīng)用開發(fā)和使用。
中臺數(shù)據(jù)存儲計(jì)算方面,包括ODPS、Blink、TSDB、RDS、OTS、ADB、ES、OSS等組件,其中ODPS組件提供分布式數(shù)據(jù)倉庫和離線計(jì)算服務(wù);Blink組件用于流式數(shù)據(jù)實(shí)時(shí)計(jì)算;TSDB組件用于時(shí)序數(shù)據(jù)存儲及查詢;RDS組件提供關(guān)系數(shù)據(jù)庫服務(wù);OTS組件用于海量結(jié)構(gòu)化數(shù)據(jù)存儲;ADB組件用于大數(shù)據(jù)量關(guān)聯(lián)分析;ES組件用于大數(shù)據(jù)量點(diǎn)查及固定報(bào)表分析;OSS組件可用于存儲非結(jié)構(gòu)數(shù)據(jù)。
其中ODPS組件主要作為數(shù)據(jù)倉庫支撐中臺離線數(shù)據(jù)分析場景,該類場景重點(diǎn)基于結(jié)構(gòu)化數(shù)據(jù)、量測數(shù)據(jù),經(jīng)過數(shù)據(jù)接入、數(shù)據(jù)整合(量測數(shù)據(jù)關(guān)聯(lián)計(jì)算或清洗轉(zhuǎn)換)、(寬表)邏輯處理或分析模型運(yùn)算、服務(wù)封裝發(fā)布等環(huán)節(jié)后,滿足應(yīng)用T-1數(shù)據(jù)分析需求。
然而,隨著公司業(yè)數(shù)融合及相關(guān)大數(shù)據(jù)分析應(yīng)用的工作持續(xù)推進(jìn),在管理部門對資源精益管理的要求下,對數(shù)據(jù)中臺的穩(wěn)定支撐和資源有效利用提出了更高的要求;目前,ODPS組件存儲使用率已超過70%,按照往年中臺存儲數(shù)據(jù)增長速度評估,已無法支撐明年的相關(guān)中臺數(shù)據(jù)匯聚和加工存儲需求,因此亟待對數(shù)據(jù)中臺存儲資源開展探索優(yōu)化。在關(guān)于電網(wǎng)中臺數(shù)據(jù)的儲存方面,對冷熱數(shù)據(jù)劃分、數(shù)據(jù)分類清理、數(shù)據(jù)存儲結(jié)構(gòu)優(yōu)化這些相關(guān)技術(shù)缺少了技術(shù)探索和驗(yàn)證,因此在中臺存儲優(yōu)化領(lǐng)域里還有很大的探索空間,以支持資源更為有效使用。
為有效、充分利用好數(shù)據(jù)中臺ODPS存儲資源,湖南公司組織技術(shù)骨干進(jìn)行研討探索,制定了存儲優(yōu)化策略,在為應(yīng)用程序和用戶提供所需的存儲容量的基礎(chǔ)上,通過劃分冷熱數(shù)據(jù)并對冷數(shù)據(jù)進(jìn)行拉鏈或歸檔,從而避免未使用或過度配置的存儲問題;經(jīng)實(shí)際使用驗(yàn)證,該存儲優(yōu)化策略能更好地利用中臺ODPS存儲資源,降低管理不必要的存儲所帶來的成本和復(fù)雜性。
2020-2021年,按照國網(wǎng)統(tǒng)推阿里數(shù)據(jù)中臺技術(shù)架構(gòu),完成自建開源大數(shù)據(jù)平臺全量數(shù)據(jù)鏈路遷移工作,初步構(gòu)建以Dataworks、Datahub、Blink、RDS等云上組件為支撐的湖南阿里數(shù)據(jù)中臺,探索完成離線大數(shù)據(jù)加工和實(shí)時(shí)數(shù)據(jù)分析技術(shù)路線,形成典型場景,對外提供數(shù)據(jù)服務(wù)API及自動報(bào)表支撐全省各單位大數(shù)據(jù)應(yīng)用。但是,遷移過程中產(chǎn)生的各類無效數(shù)據(jù)存在部分未清理的情況。
同時(shí)在阿里數(shù)據(jù)中臺建設(shè)過程中,業(yè)務(wù)方大量數(shù)據(jù)分析應(yīng)用也產(chǎn)生了較多導(dǎo)致ODPS存儲使用率低的問題。經(jīng)核查分析,主要分為表使用頻率低、表存儲設(shè)計(jì)不合理以及表數(shù)據(jù)重復(fù)無用等情況。具體內(nèi)容見表1。
圍繞電網(wǎng)中臺存儲資源優(yōu)化這一目標(biāo),針對目前湖南數(shù)據(jù)中臺存在的多種導(dǎo)致存儲使用率低的問題,從問題產(chǎn)生原因展開分析,確定合理有效的解決方法。
一是表使用頻率低問題,針對表數(shù)據(jù)的申請使用頻率高低排名及劃分閾值,可將中臺表數(shù)據(jù)作冷熱劃分,定時(shí)將冷表的數(shù)據(jù)歸檔或同步至對象存儲OSS組件。
表1 中臺儲存資源不合理情況
二是表存儲設(shè)計(jì)不合理問題,針對此類按天分區(qū)的全量快照表,相鄰分區(qū)間的數(shù)據(jù)重復(fù)度非常高的情況,采用拉鏈存儲設(shè)計(jì),通過提高壓縮率,更高效利用中臺ODPS數(shù)倉存儲資源。
三是表數(shù)據(jù)重復(fù)無用問題,定期整理各空間中由于測試產(chǎn)生的各種臨時(shí)表,并檢查名稱相近表是否存在業(yè)務(wù)數(shù)據(jù)重復(fù)存儲,對于疑似數(shù)據(jù)開展分析,刪除多余表只保留其中一張即可。
3.1.1 冷熱數(shù)據(jù)劃分
通過阿里數(shù)據(jù)中臺自帶的數(shù)據(jù)地圖等組件,結(jié)合中臺元倉的表調(diào)用頻率情況等數(shù)據(jù),按照自定義閾值,開展中臺冷熱數(shù)據(jù)表劃分,并將排查出的冷數(shù)據(jù)表整理匯總成清單。
3.1.2 執(zhí)行歸檔
對照梳理的中臺冷數(shù)據(jù)表清單,對占用存儲較高的表按分區(qū)進(jìn)行歸檔操作。
-------------------------------------------
——對該表分區(qū)日期20220320至20220325進(jìn)行了歸檔
Alter table prj_hn_ods_dev.test_ydcj_hncxeic_t_org_timely_rate partition(ds='20220325') archive;
-------------------------------------------
歸檔后,該表對應(yīng)的阿里云平臺底座盤古系統(tǒng)文件數(shù)少了 4/5,歸檔前物理文件大小與歸檔后物理文件大小之比為10∶1,對比見圖1。
圖1 中臺冷數(shù)據(jù)表歸檔前后物理文件對比
3.1.3 歸檔數(shù)據(jù)同步至OSS
對于表不適合做拉鏈存儲等優(yōu)化,又不能直接將數(shù)據(jù)刪除掉,可以選擇將數(shù)據(jù)歸檔至OSS,若需要在ODPS中使用,則將數(shù)據(jù)同步回來或者創(chuàng)建外部表讀取即可。具體分為兩步:
一是配置數(shù)據(jù)雙向同步,操作見圖2。
二是創(chuàng)建OSS外部表,包括:授予Dataworks操作賬號與OSS中bucket的權(quán)限、創(chuàng)建分區(qū)表或者非分區(qū)表,操作見圖3。
圖2 配置歸檔數(shù)據(jù)雙向同步
圖3 創(chuàng)建分區(qū)表
3.2.1 拉鏈處理
首先,創(chuàng)建拉鏈表并初始化數(shù)據(jù),通過計(jì)算MD5值,比對T日、T-1日切片數(shù)據(jù),生成增量表,獲取T日新增和修改的數(shù)據(jù)、T日已不存在且需要打標(biāo)D的數(shù)據(jù)。
其次,刪除分區(qū)日期為大于等于跑批日期的,把修改和刪除的記錄作為打標(biāo)為D的插入歸檔結(jié)束日期為跑批日期分區(qū)數(shù)據(jù)。
再次,把新增和修改的比對結(jié)果記錄打標(biāo)為新增插入中間表,且開始?xì)w檔日期為跑批日期;把拉鏈表中除去當(dāng)天跑批日期的最新有效數(shù)據(jù)且不在增量表的數(shù)據(jù)插入中間表。
最后,刪除拉鏈表中最新數(shù)據(jù),把中間數(shù)據(jù)插入拉鏈表最新分區(qū)數(shù)據(jù)。
-------------------------------------------
——刪除拉鏈表中最新數(shù)據(jù)
——把中間數(shù)據(jù)插入拉鏈表最新分區(qū)數(shù)據(jù)
alter table prj_hn_dwd_dev.un11_02_pms_t_pwyx_pbrjzb_all_d_cur drop if exists partition(arch_end_date='99991231');
insert into prj_hn_dwd_dev.un11_02_pms_t_pwyx_pbrjzb_all_d_cur partition (arch_end_date='99991231')
(xxx,xxx )
select xxx,xxx from prj_hn_dwd_dev.un11_02_pms_t_pwyx_pbrjzb_all_d_mid;
-------------------------------------------
3.2.2 數(shù)據(jù)驗(yàn)證
對比查詢原表某一分區(qū)數(shù)據(jù)和拉鏈表對應(yīng)分區(qū)的全量歷史快照數(shù)據(jù),驗(yàn)證拉鏈技術(shù)優(yōu)化存儲后相關(guān)數(shù)據(jù)的完整性。驗(yàn)證結(jié)果見圖4。
圖4 拉鏈操作數(shù)據(jù)完整性驗(yàn)證
3.3.1 無效和臨時(shí)數(shù)據(jù)清理
定期根據(jù)數(shù)據(jù)的訪問、引用熱度等信息來篩選出臨時(shí)表/無效表清單,經(jīng)人工審核確認(rèn)后做刪除處理。臨時(shí)表可以通過命名規(guī)則來篩選,無效表需要通過多種維度來篩選,如讀取次數(shù),最后訪問時(shí)間等,這些數(shù)據(jù)主要通過元倉表來統(tǒng)計(jì)。
統(tǒng)計(jì)操作主要包括:
(1)統(tǒng)計(jì)所有表的讀取次數(shù)排名,獲取讀取次數(shù)為0的表。
(2)通過臨時(shí)表命名規(guī)則篩選臨時(shí)表。
(3)統(tǒng)計(jì)最后訪問時(shí)間,獲取長時(shí)間未訪問的表。
圖5 臨時(shí)表/無效表統(tǒng)計(jì)操作
3.3.2 重復(fù)數(shù)據(jù)清理
查找表名相近和相似表清單,首先人工粗粒度或腳本對字段名做相似度分析并篩選是否存在表字段內(nèi)容一致情況較高的現(xiàn)象,若存在,使用腳本進(jìn)一步判斷數(shù)據(jù)是否在內(nèi)容上一致,再結(jié)合業(yè)務(wù)需要,人工審核。
借助對冷數(shù)據(jù)表歸檔、全量快照表拉鏈、無效數(shù)據(jù)清理等存儲優(yōu)化手段,湖南公司中臺ODPS數(shù)倉存儲使用效率有了很大的提升。
具體成果如下:
針對冷數(shù)據(jù)表,歸檔操作會將數(shù)據(jù)存為raid file,采用bzip2算法,保存6份數(shù)據(jù)+3份校驗(yàn)塊的方式,存儲比從1∶3提高到1∶1.5,降低了數(shù)據(jù)被刪除的風(fēng)險(xiǎn),提升中臺ODPS數(shù)倉存儲資源使用效率;轉(zhuǎn)存OSS后可通過數(shù)據(jù)存儲工具的交互靈活處理和查詢歸檔數(shù)據(jù)。
對數(shù)據(jù)重復(fù)度高的按天分區(qū)全量快照表,進(jìn)行拉鏈表處理;使用快照表存儲數(shù)據(jù),每個ODPS的數(shù)據(jù)分區(qū)都會存儲一份數(shù)據(jù),而拉鏈表只存儲了一份數(shù)據(jù)。因此拉鏈表相比原快照表具有更低和更合理的存儲量,在合適的場景下,約能壓縮為原始數(shù)據(jù)的1/30,壓縮比見表2。
表2 快照表和拉鏈表一個月數(shù)據(jù)存儲對比
清理重復(fù)無效數(shù)據(jù)表,優(yōu)化數(shù)據(jù)中臺的存儲占用,同時(shí)提升中臺用戶和運(yùn)維人員數(shù)據(jù)檢索效率,優(yōu)化中臺數(shù)倉使用體驗(yàn)。
針對電網(wǎng)數(shù)據(jù)中臺進(jìn)行存儲策略優(yōu)化,借助冷數(shù)據(jù)表歸檔、全量快照表拉鏈、無效數(shù)據(jù)清理等手段,降低成本,使運(yùn)營效率更高,存儲資源得到更好的利用。同時(shí)給中臺數(shù)倉表帶來更好的讀寫性能、可用性和可靠性,從而提高工作人員的生產(chǎn)率和客戶滿意度。還提供了更好的數(shù)據(jù)可見性,可以更輕松地從數(shù)據(jù)中提取分析,助力業(yè)務(wù)方基于中臺數(shù)據(jù)簡便、快速完成小而美的大數(shù)據(jù)應(yīng)用開發(fā)。