做者介紹java
@Super超python
空間計算與城市大數據面試
塑造將來的科幻迷shell
持續更新大數據與數據科學系列json
上篇講了大數據治理的背景、目標、核心,本篇進入實踐環節,聊聊具體如何實施大數據治理、大數據治理的步驟及效果驗證。分佈式
數據膨脹是大數據治理最早要解決的問題,它直接關係到成本問題,解法是進行存儲優化,也就是設計規範化的存儲策略,提升數據的共享程度。ide
從空間方面思考:函數
第一個關鍵詞是合併,即合併冗餘表。一方面是掃描數據表的依賴關係,上游表類似,表字段也類似,判斷多是冗餘表,只留一個。另外一方面把高度重合的表合併,從小表變大表。工具
第二個關鍵詞是捨棄,即捨棄冗餘字段。有些字段並無多大存儲意義,或者能夠從其餘來源處獲取,能夠從數據表中剔除。性能
第三個關鍵詞是拆分,即內容壓縮。例如經過一個數據壓縮節點把大json字段拆分紅幾個內容字段,把格式相關的部分捨棄,須要還原的時候再經過數據解壓縮節點逆向還原回來。平都可帶來30%的存儲空間釋放。
從時間方面思考
第一個關鍵詞是生命週期。合理規劃數據的生命週期,不一樣層的數據保留時間不同。有的須要永久保存,有的不須要永久保存。
第二個關鍵詞是冷熱。對於那些暫時沒有業務調用的冷數據,壓縮歸檔。
除了通用化的策略外,不一樣行業,不一樣類型的數據還有自身特性化的治理策略。例如設備在某一個位置停留時間太久,回傳了大量的重複座標。
計算優化的目的一是節省運算資源,二是提升數據加工處理的速度,縮短數據生產週期。
第一個優化點是避免在異常數據上浪費算力。有些數據雖然格式上沒有問題,但實際上根據業務場景的定義是異常的,能夠忽略。還例如某個設備是故障的,將它識別出來後它所產生的數據都再也不參與計算。
第二個優化點是識別並應對數據傾斜。所謂數據傾斜有兩種狀況,一種是某一塊區域的數據大於其餘區域,另外一種是某一些數據的大小要遠遠大於平均值。對存在數據傾斜的部分進一步分割,能夠加速計算。
第三個優化點是提高核心UDF的性能。UDF 的性能很大程度上決定了處理流程的時間長短。經過代碼審查,找出性能能夠優化的節點進行代碼優化。另外,將Python的UDF改爲Java的UDF也能夠提高一部分性能。
第四個優化點是引擎配置調優,例如開啓數據壓縮傳輸、合理設置map/reduce數、合理應用Hash/Range Cluster索引機制等。
第五個優化點是將MR streaming節點改寫爲SELECT TRANSFORM方式。SELECT TRANSFORM的性能很好,並且也更靈活,可以提升計算節點的可擴展性。
【拓展】SELECT TRANSFORM介紹
不少時候咱們面對的是這麼一種場景,SQL內置的函數不能支持把數據A變成數據B的功能,因此咱們用一個腳原本實現,而咱們又想讓它分佈式的執行。這樣的場景能夠用使用SELECT TRANSFORM來實現。
SELECT TRANSFORM功能容許SQL用戶指定啓動一個子進程,將輸入數據按照必定的格式經過stdin輸入子進程,而且經過解析子進程的stdout輸出來獲取輸出數據。SELECT TRANSFORM很是靈活,不只支持java和python,還支持shell,perl等其它腳本和工具。
大數據治理須要牽扯到大量的表和節點上線、下線、測試、添加監控等,若是每一個環節都須要人工操做,都要耗費不少人力,所以使用一些自動化和半自動工具能夠顯著提升效率,減小人工成本。
主要涉及到了數據比對工具、節點批量下線工具、自動化測試工具等。
大數據治理與業務的正常發展是同步進行的,這就須要一個平滑的過渡過程。
業務的遷移按照灰度原則,先遷業務輕體量小的,後遷業務重體量大的。分批次遷移以後持續跟蹤、分析數據波動狀況,一旦發現問題及早修復,以保障數據質量的可靠性。
在增量數據上驗證經過後,下一步就是遷移存量數據了。這一步須要關注的是存儲空間的問題,一次性增長太多的新數據存儲,舊數據來不及釋放,會使得存儲壓力大增。
大數據治理的效果體如今數據存儲成本是否下降、數據產出週期是否縮短、數據質量是否提升、數據量增加勢頭是否減緩等方面。
總結
大數據治理的過程是一個很好的梳理現有業務的機會。一次成功的數據治理不只給企業帶來成本、效能上的改善,還鍛鍊了數據團隊,爲數據價值體系建設奠基了基礎。
一個數據人的自留地是一個助力數據人成長的你們庭,幫助對數據感興趣的夥伴們明確學習方向、精準提高技能。關注我,帶你探索數據的神奇奧祕
一、回「數據產品」,獲取<大廠數據產品面試題>
二、回「數據中臺」,獲取<大廠數據中臺資料>
三、回「商業分析」,獲取<大廠商業分析面試題>;
四、回「交個朋友」,進交流羣,認識更多的數據小夥伴。