大數據-數據倉庫-實時數倉架構分析

来源:https://www.cnblogs.com/vipsoft/archive/2022/12/07/16932812.html
-Advertisement-
Play Games

數倉分層 |分層|全稱|譯名|說明|壓縮|列式存儲|分區| |-|-|-|-|-|-|-| |ODS|Operation Data Store|原始層|原始數據|✅|❌|✅| |DIM|Dimension|維度層|合併維度表|✅|✅|✅| |DWD|Data Warehouse Detail|明細層 ...


image
image

數倉分層

分層 全稱 譯名 說明 壓縮 列式存儲 分區
ODS Operation Data Store 原始層 原始數據
DIM Dimension 維度層 合併維度表
DWD Data Warehouse Detail 明細層 數據處理、維度建模
DWS Data Warehouse Service 服務層 去主鍵聚合,得到原子指標
DWT Data Warehouse Topic 主題層 存放主題對象的累積行為
ADS Application Data Store 應用層 具體業務指標
  • ODS:原始數據,日誌和業務數據 放到 Kafka
  • DWD:根據數據對象為單位進行分流,比如訂單、頁面訪問等等
  • DIM:維度數據
  • DWM:對於部分數據對象進行進一步加工,比如獨立訪問、跳出行為,也可以和維度進行關聯,形成寬表,依舊是明細數據。
  • DWS:根據某個主題將多個事實數據輕度聚合,形成主題寬表。
  • ADS:把ClickHouse中的數據根據可視化需進行篩選聚合

命名規範

庫名:業務大類
表名:分層名_業務細類
臨時表:temp_表名
備份表:bak_表名
視圖:view_表名(場景:不共用的維度表、即席查詢)

分層 命名規範 說明
ODS ods+源類型+源表名+full/i full:全量同步
i:增量同步
ods_postgresql_sku_full
ods_mysql_order_detail_i
ods_frontend_log
DIM dim+維度+full/zip full:全量表
zip:拉鏈表
日期維度表沒有尾碼
dim_sku_full
dim_user_zip
dim_date
DWD dwd+事實+full/i full:全量事實
i:增量事實
DWS dws+原子指標 時間粒度有1d、1h…
1d:按1天
1h:按1小時
dws_page_visitor_1d
DWT dwt_消費者畫像
ADS ads+衍生指標/派生指標

離線數倉:事實表,維度表,都放Hive
實時數倉:原始數據放 Kafka,維度數據 放 HBase,Phoenix

  • 離線計算:就是在計算開始前已知所有輸入數據,輸入數據不會產生變化,一般計算量級較大,計算時間也較長。例如今天早上一點,把昨天累積的日誌,計算出所需結果。最經典的就是 Hadoop 的 MapReduce 方式;
    一般是根據前一日的數據生成報表,雖然統計指標、報表繁多,但是對時效性不敏感。從技術操作的角度,這部分屬於批處理的操作。即根據確定範圍的數據一次性計算。

  • 實時計算:輸入數據是可以以序列化的方式一個個輸入併進行處理的,也就是說在開始的時候並不需要知道所有的輸入數據。與離線計算相比,運行時間短,計算量級相對較小。強調計算過程的時間要短,即所查當下給出結果。
    主要側重於對當日數據的實時監控,通常業務邏輯相對離線需求簡單一下,統計指標也少一些,但是更註重數據的時效性,以及用戶的交互性。從技術操作的角度,這部分屬於流處理的操作。根據數據源源不斷地到達進行實時的運算。

  • 即席查詢: 需求的臨時性,小李,把兩星期的數據拉給我看下(只在這個時刻需要)
    Presto: 當場計算(基於記憶體速度快)
    Kylin:預計算(提前算好),多維分析(Hive With Cube)

Sqoop 導入數據方式:

  • 增量: where 1=1、

  • 全量: where 創建時間=當天、

  • 新增及變化:where 創建時間=當天 or 操作時間=當天、

  • 特殊(只導入一次)
    Flume:

  • tailDirSource
    優點:斷點續傳,監控多目錄多文件
    缺點:當文件更名之後,重新讀取該文件造成數據重覆
    註意:1. 要使用不更名的列印日誌框架(logback)--一般logback 也會設置成更名的,每天一個日誌文件,文件名帶上日期,如果寫死文件名,更名後可能會丟數據
    2.修改源碼,讓TailDirSource判斷文件時,只看 iNode 值

  • KafkaChannel
    優點:將數據導入Kafka,省了一層Sink
    Kafka:生產者、消費者
    用法:1. Source-KafkaChannel-Sink
    2. Source-KafkaChannel
    3. KafkaChannel-Sink

邏輯線: 數據流、監控、優化、配置。

Kafka

  • Producer:ACK、攔截器、序列化器、分區器、發送流程、事務、冪等性,分區規則-->有指定分區發到指定分區,沒有根據Key進行hash,都沒有進行輪詢(粘性)
  • Broker: Topic 副本-> 高可用 ISR LEO、HW ;分區:高併發、負載均衡(防止熱點)
  • Consumer:分區分配規則 offset 保存(預設:_consumer_offsets 主題、其它:手動維護Offerset(MySQL)帶事務,精準一次消費

image

分層的好處

  • 複雜問題拆解為多層
  • 減少重覆開發(可以去中間層取數,不用每次都去原始層)
  • 隔離原始數據,例如:異常數據、敏感數據(用戶電話…)

數據存儲策略

  • 原始層保持數據原貌,不進行脫敏和清洗
  • 創建分區表(例如:日期分區),防止全表掃描
  • 數據壓縮,減少磁碟占用(如:LZO、gzip、snappy)
  • 列式存儲提高查詢效率(如:Parquet、ORC)

離線架構:追求系統的穩定性、考慮到公司未來的發展,數據量一定會變得很大、早期的時間實時業務使用 SparkStreaming(微批次)

  • 優點:耦合性低、穩定性高
  • 缺點:時效性差

實時架構:Kafka集群高可用,數據量小,所有機器存在同一個機房,傳輸沒有問題,

  • 優點:時效性好 Flink
  • 缺點:耦合性高,穩定性低

image
image
image


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 正確使用 HttpClient 使用 HttpClient 註意事項 HttpClient預設最大併發連接數是2 本機測試(被請求的WebApi部署在本機)HttpClient不會被限制最大併發連接數 使用HttpClient要寫個工廠類,因為HttpClient不能頻繁創建 HttpClient類 ...
  • 一:背景 1.講故事 上個月 .NET調試訓練營 里的一位老朋友給我發了一個 8G 的dump文件,說他的程式記憶體泄露了,一時也沒找出來是哪裡的問題,讓我幫忙看下到底是怎麼回事,畢竟有了一些調試功底也沒分析出來,說明還是有一點複雜的,現實世界中的dump遠比課上說的複雜的多。 還是那句話,找我分析是 ...
  • 未預期的符號 `then' 附近有語法錯誤 : 行 : `then' ` if [ -f $i ];then' 未預期的符號 `done' 附近有語法錯誤 ...
  • ##指南使用操作系統:OpenEuler 22.09(網路安裝,最小安裝,使用預設源) ##指南使用系統自帶Python版本:3.10(高版本,這不是3.1喔) 1. 安裝基本的編譯環境 yum -y install gcc gcc-c++ make libtool zlib zlib-devel ...
  • 說明 參考教程:https://baijiahao.baidu.com/s?id=1662960328855347503 特別註意,最好用最新的PE工具,我用的 微PE。因為我弄過一次全盤安裝,導致整個硬碟在PE工具中的diskgenius無法識別,最終為U盤安裝最新版PE工具後可以識別。 硬碟分區 ...
  • 關鍵字union,又稱為聯合體、共用體,聯合體的聲明和結構體類似,但是它的行為方式又和結構體不同,這裡的行為方式主要指的是其在記憶體中的體現,結構體中的成員每一個占據不同的記憶體空間,而聯合體中的所有成員共用的是記憶體中相同的位置。 簡單看下區別: 1 struct MyStruct 2 { 3 doub ...
  • 博主這裡的大數據量、高併發業務處理優化基於博主線上項目實踐以及全網資料整理而來,在這裡分享給大家 一. 大數據量上傳寫入優化 線上業務後臺項目有一個消息推送的功能,通過上傳包含用戶id的文件,給指定用戶推送系統消息 1.1 如上功能描述很簡單,但是對於技術側想要做好這個功能,保證大用戶量(比如達到百 ...
  • 摘要:本文主要為大家帶來如何處理GaussDB CM服務異常問題。 本文分享自華為雲社區《【實例狀態】GaussDB CM服務異常》,作者:酷哥。 首先確認是否是虛擬機、網路故障,底層故障處理 PID文件未清理導致進程啟動失敗 問題現象 收到告警CM服務異常,查看集群狀態,CM節點顯示DOWN 問題 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...