大數據數據倉庫建設

1.OLAP查詢的基本概念

維度(dimension):常用於where查詢條件,是人們觀察數據的特定角度,是考慮問題時的一類屬性。

度量(measure):即按照維度標記,用於描述事實本身的數據。

事實(Fact):由measure信息組成並按照維度劃分的表稱為Fact表

常用的數據模型包括星型模型和雪花型模型。

事實表與維表:

大數據數據倉庫建設

1.建設方式:

數據流:

數據採集 --- 數據接入 --- 數據存儲 --- 數據建模 --- 數據開發

建設方式:

自上而下, 自下而上。

2.建設流程-建模

需求調研 - 業務建模 - 主題劃分

結構設計 - 邏輯建模 - 層次結構劃分 (分為四層(base ods , mds ,應用數據層 ), 多維建模,大寬表)

結構落地 - 物理建模 - 最終設計文檔 (基於hive建模,具體的表結構, 或者目錄+parquet)

根據業務需求,選擇相應的建模方法進行建模,建模方法如下。

3.建模方法

建模方法:

實體建模(ER)

維度建模 (數據預處理複雜,表連接查詢速度慢)

DataVault

Anchor模型

3.1.實體關係(ER)模型

面向主題的3NF模型。

數據倉庫之父Immon的方法從全企業的高度設計一個3NF模型,用實體加關係描述的數據模型描述企業業務架構,在範式理論上符合3NF,它與OLTP系統中的3NF的區別,在於數據倉庫中的3NF上站在企業角度面向主題的抽象,而不是針對某個具體業務流程的實體對象關係抽象,它更多的是面向數據的整合和一致性治理,正如Immon所希望達到的:“single version of the truth”。

3.2.維度模型

維度模型是數據倉庫領域另一位大師Ralph Kimall所倡導,他的《The DataWarehouse Toolkit-The Complete Guide to Dimensona Modeling,中文名《數據倉庫工具箱》,是數據倉庫工程領域最流行的數倉建模經典。維度建模以分析決策的需求出發構建模型,構建的數據模型為分析需求服務,因此它重點解決用戶如何更快速完成分析需求,同時還有較好的大規模複雜查詢的響應性能。

典型的代表是我們比較熟知的星形模型,以及在一些特殊場景下適用的雪花模型。

步驟:

選擇分析決策的業務過程。

選擇粒度

選擇維度

選擇事實 -分析需要衡量的指標。

3.3.DataVault

DataVault是Dan Linstedt發起創建的一種模型方法論,它是在ER關係模型上的衍生,同時設計的出發點也是為了實現數據的整合,並非為數據決策分析直接使用。它強調建立一個可審計的基礎數據層,也就是強調數據的歷史性可追溯性和原子性,而不要求對數據進行過度的一致性處理和整合;同時也基於主題概念將企業數據進行結構化組織,並引入了更進一步的範式處理來優化模型應對源系統變更的擴展性。

它主要由:Hub(關鍵核心業務實體)、Link(關係)、Satellite(實體屬性) 三部分組成 。

相關書籍: Data Vault modeling Guide

3.4.Anchor模型 ['æŋkɚ]

Anchor模型是由Lars. Rönnbäck設計的,初衷是設計一個高度可擴展的模型,核心思想:所有的擴展只是添加而不是修改,因此它將模型規範到6NF,基本變成了K-V結構模型。

Anchor模型由:Anchors 、Attributes 、Ties 、Knots 組成,相關細節可以參考《AnchorModeling-Agile Information Modeling in Evolving Data Environments》

4.數據倉庫子系統

數據監控 - 保證數據穩定

規範設計 -開發一致性

開發模板和工具 - 提升開發效率 (補數,對數)

元數據--- 解決數據易用

調度系統 - 解決程序依賴

數據監控:

數據未生成

數據總條數異常

某渠道或來源數據異常

數據格式異常

同比環比異常

監控方法:

根據azakaban報警信息

任務執行完後驗證(同比,環比,驗證,報警)

規範設計:

命名規範

數據目錄結構規範

程序目錄規範

處理流程規範

開發模板和工具:

日期獲取,同比環比日期獲取

刪除文件操作

結果數據入庫

補數工具

對數工具

元數據:

基礎元數據

業務元數據(表結構描述為文檔)

調度系統:

azkaban調度

二.建模流程詳解

業務建模 - 主題劃分

大數據數據倉庫建設

層次劃分

大數據數據倉庫建設

BASE層: 存儲每天的增量數據和變更數據,如Canal接收的業務變更日誌, 按天創建分區。

ODS層: 明細數據 (數據清洗,轉換,字段拆分 ),輕粒度的彙總。抽象出來一些通用的維度:時間、ip、id,並根據這些維度做一些統計值。

MDS:分主題: 寬表,維表+事實表

RPT: 生成特徵, 應用的數據 , OLAP 決策分析,數據挖掘。

(一個維表可以給多個事實表使用)

數據倉庫使用kylin做多維數據分析。

數據倉庫可視化:zeppelin + kylin 做可視化。

三.數倉架構

數據倉庫定義:

面向主題: 用戶主題(用戶留存分析,用戶畫像,會員分析),行為主題,訂單主題,庫存主題

集成數據使用於OLAP離線分析場景

用於決策分析,數據挖掘,報表統計

數據倉庫架構:

大數據數據倉庫建設

數據接入:

大數據數據倉庫建設

四.集群運維

部署:

Apache(社區版) (目前使用)

CDH (Cloudera)

HDP (Hortonworks)

五.數據質量監控

大數據數據倉庫建設

1.監控

日常監控、數據對賬、性能監控。

(日常監控最重要)

日常監控內容:

數據落地監控

數據掉0監控:實際擴展一下就是數據量閾值監控,少於某個量就告警

重複數據監控:很多表一定要監控重複數據的,這點至關重要。

關鍵指標監控

數據同比環比監控

這是一些常用的監控,可以做一個規則引擎,上面提到的都做到規則裡面,哪個表需要了就配置一下, 然後執行引擎去執行。

2.日常監控實現

規則引擎:

Sql模板 :提前配置好大部分的sql模板,然後需要監控哪張表了就在這張表配置一下就行。

元數據:Hive表的行數都是在元數據庫中有存放的,我們可以直接通過Hive的元數據來抓取表的每天的數據量的。

自定義模板

執行引擎:

1.sql執行:

提前配置好大部分的sql模板,然後需要監控哪張表了就在這張表配置一下就行。

具體的執行引擎的話可以考慮presto或者spark sql,特別大的任務可以考慮hive。

2.直接獲取數據量

Hive是有元數據管理的,它的元數據庫中是記錄Hive的所有表的記錄數的,這些記錄數可以直接用作數據量相關的監控,比如數據掉零、數據量環比同比、數據量趨勢等。


分享到:


相關文章: