1. 程式人生 > 其它 >Hive中的ODS、 DWD、 DWS、 ADS 數倉分層

Hive中的ODS、 DWD、 DWS、 ADS 數倉分層

1、資料倉庫

  我們常提的數倉(DataWarehouse),就是在我們已有的資料庫(他是對資料的儲存)的基礎之上,增加了對資料的OLAP(On-Line Analytical Processing),支援複雜的資料分析操作,更側重決策支援,提供直觀易懂的查詢結果,而資料庫更著重的是事務處理。換句話講,就是在資料庫已經大量存在的情況下,進一步挖掘資料資源,它包括了一整套的ETL、排程、建模在內的完整理論體系。

  一句話概括:  

    資料庫面向事務處理任務;資料倉庫中的資料是按照一定的主題域進行組織主題。

2、資料庫和數倉區別:

DW 資料庫
用途 專門為資料分析設計的,涉及讀取大量資料以瞭解資料之間的關係和趨勢 用於捕獲和儲存資料
特性 資料倉庫 事務資料庫
適合的工作負載 分析、報告、大資料 事務處理
資料來源 從多個來源收集和標準化的資料 從單個來源(例如事務系統)捕獲的資料
資料捕獲 批量寫入操作通過按照預定的批處理計劃執行 針對連續寫入操作進行了優化,因為新資料能夠最大程度地提高事務吞吐量
資料標準化 非標準化schema,例如星型Schema或雪花型schema 高度標準化的靜態schema
資料儲存 使用列式儲存進行了優化,可實現輕鬆訪問和高速查詢效能 針對在單行型物理塊中執行高吞吐量寫入操作進行了優化
資料訪問 為最小化I/O並最大化資料吞吐量進行了優化 大量小型讀取操作

3、Hive中的資料分層

  理論上一般分為三個層:ODS資料運營層、DW資料倉庫層、ADS資料服務層。基於這個基礎分層之上,再提交資訊的層次,來滿足不同的業務需求。

  3.1資料運營層(ODS):原始資料

  ODS:Operation Data Store 資料準備區,也稱為貼源層。資料倉庫源頭系統的資料表通常會原封不動的儲存一份,這稱為ODS層,是後續資料倉庫加工資料的來源。
  ODS層資料的來源方式:
    1.業務庫 :經常會使用sqoop來抽取,例如每天定時抽取一次。
      實時方面,可以考慮用canal監聽mysql的binlog,實時接入即可。
    2.埋點日誌 :日誌一般以檔案的形式儲存,可以選擇用flume定時同步
      可以用spark streaming或者Flink來實時接入
    3.kafka也OK
      訊息佇列:即來自ActiveMQ、Kafka的資料等.

  3.2資料倉庫層(DW):資料清洗

  DW資料分層,由下到上為DWD,DWB,DWS。

  1> DWD:data warehouse details 細節資料層,是業務層與資料倉庫的隔離層。主要對ODS資料層做一些資料清洗和規範化的操作。
資料清洗:去除空值、髒資料、超過極限範圍的
  2> DWB:data warehouse base 資料基礎層,儲存的是客觀資料,一般用作中間層,可以認為是大量指標的資料層。
  3> DWS:data warehouse service 資料服務層,基於DWB上的基礎資料,整合彙總成分析某一個主題域的服務資料層,一般是寬表。用於提供後續的業務查詢,OLAP分析,資料分發等。
使用者行為,輕度聚合
主要對ODS/DWD層資料做一些輕度的彙總。

  3.3資料服務層/應用層(ADS):出報表

  ADS:applicationData Service應用資料服務,該層主要是提供資料產品和資料分析使用的資料,一般會儲存在ES、mysql等系統中供線上系統使用。
我們通過說的報表資料,或者說那種大寬表,一般就放在這裡。