如何從0到1開始做大數(shù)據(jù)治理(下)
編輯導(dǎo)語:大數(shù)據(jù)治理的過程對于業(yè)務(wù)梳理可以起到很大的作用,上篇講了大數(shù)據(jù)治理的背景、目標(biāo)、核心,如何從0開始做大數(shù)據(jù)治理(上);本篇進(jìn)入實(shí)踐環(huán)節(jié),聊聊具體如何實(shí)施大數(shù)據(jù)治理、大數(shù)據(jù)治理的步驟及效果驗(yàn)證。
04?數(shù)據(jù)治理的實(shí)施
1. 存儲優(yōu)化
數(shù)據(jù)膨脹是大數(shù)據(jù)治理最先要解決的問題,它直接關(guān)系到成本問題,解法是進(jìn)行存儲優(yōu)化,也就是設(shè)計規(guī)范化的存儲策略,提高數(shù)據(jù)的共享程度。
從空間方面思考:
- 第一個關(guān)鍵詞是合并,即合并冗余表;一方面是掃描數(shù)據(jù)表的依賴關(guān)系,上游表相似,表字段也相似,判斷可能是冗余表,只留一個;另一方面把高度重合的表合并,從小表變大表。
- 第二個關(guān)鍵詞是舍棄,即舍棄冗余字段;有些字段并沒有多大存儲意義,或者可以從其他來源處獲取,可以從數(shù)據(jù)表中剔除。
- 第三個關(guān)鍵詞是拆分,即內(nèi)容壓縮;例如通過一個數(shù)據(jù)壓縮節(jié)點(diǎn)把大json字段拆分成幾個內(nèi)容字段,把格式相關(guān)的部分舍棄,需要還原的時候再通過數(shù)據(jù)解壓縮節(jié)點(diǎn)逆向還原回來,平均可帶來30%的存儲空間釋放。
從時間方面思考:
- 第一個關(guān)鍵詞是生命周期:合理規(guī)劃數(shù)據(jù)的生命周期,不同層的數(shù)據(jù)保留時間不一樣。有的需要永久保存,有的不需要永久保存。
- 第二個關(guān)鍵詞是冷熱:對于那些暫時沒有業(yè)務(wù)調(diào)用的冷數(shù)據(jù),壓縮歸檔。
除了通用化的策略外,不同行業(yè),不同類型的數(shù)據(jù)還有自身特性化的治理策略。例如設(shè)備在某一個位置停留時間過久,回傳了大量的重復(fù)坐標(biāo)。
2. 計算優(yōu)化
計算優(yōu)化的目的,一是節(jié)省運(yùn)算資源,二是提高數(shù)據(jù)加工處理的速度,縮短數(shù)據(jù)生產(chǎn)周期。
第一個優(yōu)化點(diǎn)是避免在異常數(shù)據(jù)上浪費(fèi)算力。有些數(shù)據(jù)雖然格式上沒有問題,但實(shí)際上根據(jù)業(yè)務(wù)場景的定義是異常的,可以忽略;還例如某個設(shè)備是故障的,將它識別出來后它所產(chǎn)生的數(shù)據(jù)都不再參與計算。
第二個優(yōu)化點(diǎn)是識別并應(yīng)對數(shù)據(jù)傾斜。所謂數(shù)據(jù)傾斜有兩種情況,一種是某一塊區(qū)域的數(shù)據(jù)大于其他區(qū)域,另一種是某一些數(shù)據(jù)的大小要遠(yuǎn)遠(yuǎn)大于平均值;對存在數(shù)據(jù)傾斜的部分進(jìn)一步分割,可以加速計算。
第三個優(yōu)化點(diǎn)是提升核心UDF的性能。UDF 的性能很大程度上決定了處理流程的時間長短。通過代碼審查,找出性能可以優(yōu)化的節(jié)點(diǎn)進(jìn)行代碼優(yōu)化;另外,將Python的UDF改成Java的UDF也可以提升一部分性能。
第四個優(yōu)化點(diǎn)是引擎配置調(diào)優(yōu),例如開啟數(shù)據(jù)壓縮傳輸、合理設(shè)置map/reduce數(shù)、合理應(yīng)用Hash/Range Cluster索引機(jī)制等。
第五個優(yōu)化點(diǎn)是將MR streaming節(jié)點(diǎn)改寫為SELECT TRANSFORM方式,SELECT TRANSFORM的性能很好,而且也更靈活,能夠提高計算節(jié)點(diǎn)的可擴(kuò)展性。
【拓展】SELECT TRANSFORM介紹:
很多時候我們面對的是這么一種場景,SQL內(nèi)置的函數(shù)不能支持把數(shù)據(jù)A變成數(shù)據(jù)B的功能,所以我們用一個腳本來實(shí)現(xiàn),而我們又想讓它分布式的執(zhí)行,這樣的場景可以用使用SELECT TRANSFORM來實(shí)現(xiàn)。
SELECT TRANSFORM功能允許SQL用戶指定啟動一個子進(jìn)程,將輸入數(shù)據(jù)按照一定的格式通過stdin輸入子進(jìn)程,并且通過解析子進(jìn)程的stdout輸出來獲取輸出數(shù)據(jù);SELECT TRANSFORM非常靈活,不僅支持java和python,還支持shell,perl等其它腳本和工具。
3. 工具提效
大數(shù)據(jù)治理需要牽扯到大量的表和節(jié)點(diǎn)上線、下線、測試、添加監(jiān)控等,如果每個環(huán)節(jié)都需要人工操作,都要耗費(fèi)很多人力;因此使用一些自動化和半自動工具可以顯著提高效率,減少人工成本。
主要涉及到了數(shù)據(jù)比對工具、節(jié)點(diǎn)批量下線工具、自動化測試工具等。
05?數(shù)據(jù)治理的步驟
大數(shù)據(jù)治理與業(yè)務(wù)的正常發(fā)展是同步進(jìn)行的,這就需要一個平滑的過渡過程。
1. 增量數(shù)據(jù)灰度平遷
這一步的作用是驗(yàn)證經(jīng)過治理后的數(shù)據(jù)是下游數(shù)據(jù)應(yīng)用方可以正常使用的,可以滿足業(yè)務(wù)方使用數(shù)據(jù)的需求;主要需要解決好新舊數(shù)據(jù)表字段映射、字段擴(kuò)展后數(shù)據(jù)補(bǔ)錄等問題。
業(yè)務(wù)的遷移按照灰度原則,先遷業(yè)務(wù)輕體量小的,后遷業(yè)務(wù)重體量大的;分批次遷移之后持續(xù)跟蹤、分析數(shù)據(jù)波動情況,一旦發(fā)現(xiàn)問題及早修復(fù),以保障數(shù)據(jù)質(zhì)量的可靠性。
2. 存量數(shù)據(jù)遷移
在增量數(shù)據(jù)上驗(yàn)證通過后,下一步就是遷移存量數(shù)據(jù)了;這一步需要關(guān)注的是存儲空間的問題,一次性增加太多的新數(shù)據(jù)存儲,舊數(shù)據(jù)來不及釋放,會使得存儲壓力大增。
06?數(shù)據(jù)治理的效果驗(yàn)證
大數(shù)據(jù)治理的效果體現(xiàn)在數(shù)據(jù)存儲成本是否降低、數(shù)據(jù)產(chǎn)出周期是否縮短、數(shù)據(jù)質(zhì)量是否提高、數(shù)據(jù)量增長勢頭是否減緩等方面。
07 總結(jié)
大數(shù)據(jù)治理的過程是一個很好的梳理現(xiàn)有業(yè)務(wù)的機(jī)會;一次成功的數(shù)據(jù)治理不僅給企業(yè)帶來成本、效能上的改善,還鍛煉了數(shù)據(jù)團(tuán)隊(duì),為數(shù)據(jù)價值體系建設(shè)奠定了基礎(chǔ)。
#專欄作家#
大鵬,公眾號:一個數(shù)據(jù)人的自留地。人人都是產(chǎn)品經(jīng)理專欄作家,《數(shù)據(jù)產(chǎn)品經(jīng)理修煉手冊》作者。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議。
作者:明明
本文由@一個數(shù)據(jù)人的自留地 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。
寫的有點(diǎn)簡單