千億級數據整合方案架構

說明

本文着重於針對數據整合案例進行總結描述,選取部分數據ETL及平臺應用中面臨的問題及經驗進行介紹,未對完整平臺功能及流程進行展開描述。以下總結均來源於自身過往經驗。特別的,融合數據安全模塊及DaaS服務建議進行簡要描述。

需求分析

  1. 數據量:每天千億級別
  2. 數據格式:以RDBMS數據及log數據爲例
  3. 數據來源:sybase,服務器
  4. 傳輸要求:以離線爲例
  5. 存儲平臺:基於Hadoop技術棧部署
  6. 數據安全:按公司內部標準構建

方案架構

方案架構圖

如圖爲融入數據安全管理及DaaS服務的整合架構圖(南北向架構),其中黑色實線部分爲大數據平臺範圍。

針對海量日誌數據部署建議:

  • 構建全流程統一數據模型
  • 採用邊緣SDK或者節點服務器進行計算
  • 先經過實時數據緩存區,HBASE/SNAPPYDATA
  • 歷史數據通過dumper沉澱,建立索引
  • 使用dremio、Presto、Impala、Clickhouse等統一建立查詢
  • 通過Edge computing技術,在邊緣端有更多的交互可以做,可以通過在Realtime Data去設定規則來對Edge SDK端進行控制,例如,數據上傳的頻次降低,某些條件和規則的觸發等等

整體思路是設定標準數據模型,通過邊緣計算技術把所有的計算過程分散在數據產生、計算和查詢過程當中,以統一的數據模型貫穿始終,從而提高整體的預算效率,同時滿足即時計算的需要,可以使用各種Ad-hoc Query來查詢底層數據。

經驗總結:

  1. 數據ETL:
    • 數據編碼統一:涉及源庫數據編碼,系統編碼,ETL工具編碼,目標庫數據編碼等。
      • 通過kettle進行ETL涉及源庫/文件系統連接,編碼設置,數據轉化腳本支持sql編寫。
      • 針對億級數據可直接應用sparkSQL進行處理。
    • 數據傾斜處理:在數據計算過程中,計算邏輯根據業務邏輯編寫,可能涉及大量聚合關聯等操作。由於數據key計算時默認hash分配不均往往容易造成數據傾斜。解決方法嘗試:
      • 修改原計算邏輯或數據分片邏輯,如判斷不同規模的表,儘量按數據大小和key分佈進行歸類聚合,保持聚合字段均勻分配。
      • 儘量轉化reduce任務避免shuffle。
      • 使用hive on MR需設置參數:hive.map.aggr,hive.groupby.skewindata。
      • 添加隨機字段或key前後綴。
    • 數據標準化:針對不同來源的數據,需要在統一標準下進行數據標準化處理。
      • 缺失值處理:中心度量值/自定義數據進行填補或者丟棄。
      • 時空對齊:不同來源數據在統一時間或空間下表示方式不同,採用統一標準轉化對齊。
      • 離羣點分析:EDA分析即可判斷。
      • 數據解析:針對日誌數據,可通過logastsh,scala腳本,python腳本進行數據分詞解析等操作,其中logstash能方便的配置分詞策略,並完美的對接ES,但是速率較慢。
  2. 數據存儲平臺:
    • 歷史數據建倉基於HIVE,整合後數據按照不同主題構建內部表,結構化數據可直接構建外部表。
    • 針對大量數據快速查詢需求,計算後得到的結果數據存入HBASE,通過HIVE外部表或Phoenix訪問,且HBASE能很好的適應數據稀疏問題。
    • 針對大量日誌數據,使用ES作爲存儲平臺,在無實時要求情況下,logstash(同場景下比flume慢)能配置不同的分詞策略進行數據抽取和處理,並存入ES,同時,利用kibana進行可視化分析和操作。

數據安全

針對已部署平臺所提供的安全能力進行介紹。

安全要求

針對內部平臺安全要求,按照六大核心功能提供安全保障。

  1. 集羣安全管理
    需要提供用戶友好的統一安全管理界面。
  2. 身份認證
    需要滿足不同角色用戶認證。
  3. 授權管理
    需要支持安全策略配置。
  4. 邊界安全
    需要支持不同身份認證、不同程度授權的單點訪問隔離。
  5. 數據治理與審計
    需要支持元數據管理,數據控制管理,數據生命週期管理,數據血緣操作,集中式審計等。
  6. 數據保護
    需要提供數據加密功能

安全模塊

  • 基於ranger統一管理控制檯提供可視化配置操作。結合ambari界面,實現各安全模塊的基本配置。
  • 基於Kerberos提供身份認證功能,通過KDC構建身份認證服務器。
  • 基於ranger提供數據庫,表,列和文件級別定義安全策略能力,還可以管理基於LDAP的特定組或單個用戶的權限。也可以將基於時間或地理位置等動態條件的規則添加到現有策略規則中。
  • 基於knox提供邊界網關服務。
  • 基於atlas提供數據治理和審計服務,包括:
    • 數據集檢索和血緣操作;
    • 元數據驅動的數據接入控制;
    • 可索引的及可搜索的集中式審計;
    • 從抽取到處理的整個過程的數據生命週期管理;
    • 與其他工具的元數據交換
  • 基於wire加密提供數據保護服務。其中RPC加密需要設置hadoop.rpc.protection=privacy,dfs.encryt.data.transfer=true,加密算法可通過dfs.encrypt.data.transfer.algorithm指定爲“3des”(默認)或“rc4”,前者更安全,後者更快。
  • HTTPS加密:用戶通常使用瀏覽器或組件CLI與Hadoop交互,而應用程序使用REST api或Thrift。HTTP協議上的加密是通過跨Hadoop集羣和對單個組件(如Ambari)的SSL支持實現的。
  • JDBC:HiveServer2使用Java SASL協議的質量保護(QOP)設置實現加密。通過這種方式,可以對通過JDBC在HiveServer2和JDBC客戶端之間移動的數據進行加密。

數據應用

針對大量數據,建議採用DaaS模式進行數據應用模式構建,爲不同業務部門或數據使用者提供各自所需數據視圖,且針對數據使用人員、管理或維護人員,提供統一數據接口,並支持多種數據存儲介質的連接,使用戶僅需要關注數據本身,減少配置和清洗整合數據的任務量,較好的滿足用戶友好需求。
目前已經引入到自主搭建的大數據平臺,使用技術爲dremio,實現根據不同用戶需求返回各自權限內所需數據。目前存在配置較爲複雜的問題待改進。

dremio部署(Hadoop on yarn模式)

  • dremio Coordinator應該部署於邊緣節點
  • 部署後通過dremio UI配置executors數量以及yarn資源分配
  • 爲了避免資源衝突,單獨爲dremio executor 分配一個yarn隊列
  • 使用hdfs捲來進行dremio coordinators和executors的緩存和分區目錄配置
  • yarn health檢查用於監控dremio進程和kill沒關乾淨的進程。

個人博客

個人博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章