文章目錄
1.什麼是大數據平臺?
2.數倉和數據庫的區別
項目 | Hive | RDBMS |
---|---|---|
查詢語言 | HQL | SQL |
數據存儲 | HDFS | 本地磁盤 |
索引 | 無 | 有 |
執行 | MapReduce | Executor |
執行延時 | 高 | 低 |
數據規模 | 大 | 小 |
- RBO 基於規則的優化器
- CBO 基於代價的優化器
hive使用動態CBO:在執行計劃生成的過程中動態優化的方式
3.大數據技術棧
4.數倉的分層
5.離線數倉架構和實時數倉架構
離線數倉架構
數據源通過離線的方式導入到離線數倉中
數據分層架構:ODS、DWD、DM
下游應用根據業務需求選擇直接讀取DM
實時數倉架構
業務實時性要求不斷提高,實時處理從次要部分變成主要部分
Lambda架構:在離線大數據架構基礎上加了一個加速層,使用流處理技術完成實時性較高的計算
Kappa架構:一實時事件處理爲核心,統一數據處理
對比
數倉類型 | 準確性 | 實時性 | 穩定性 |
---|---|---|---|
離線數倉 | 準確度高 | 時延一般在一天 | 穩定性好,方便重算 |
實時數倉 | 準確度低 | 分鐘級延遲 | 穩定性差,需考慮數據回溯 |
6.數倉架構發展
Lambda架構
- 批處理層(Batch Layer):存儲管理主數據集(不可變的數據集)和預先批處理計算好的視圖
- 速度處理層(Apeed Layer):實時處理新來的數據,降低批處理層的處理延時
- 相應查詢的服務層(Serving Layer): 返回預先計算的數據視圖和速度層構建好數據視圖的合併結果來響應查詢
不足
- 同樣的需求需要開發兩套一樣的代碼
- 同樣的邏輯計算兩次,整體佔用資源會增多
Kappa 架構
- 與Lambda架構不同的是,kappa結構去掉了批處理層這一體系結構
- 統一了數據處理方式,不再維護離線和實時兩套代碼邏輯
不足
- 需求修改或歷史數據重新處理都通過上游重放完成
- 重新處理歷史的吞吐能力會低於批處理
- 並不適用於批處理和流處理代碼邏輯不一致的場景
處理方式
- 選擇一個具有重放功能的、能夠保存歷史數據並支持多消費者的消息隊列
- 當某個或者某些指標有重新處理的需求時,從上游消息隊列的最開始重新消費
- 當新作業趕上進度後,切換業務數據源,刪除老作業
7.實時數倉建設案例
8.實時數倉建設
整個架構中實時計算一般是Spark+Flink配合
消息隊列Kafka一家獨大,配合HBase、ES、Mysql進行數據落盤
OLAP領域Presto、Druid、Clickhouse、Greenplum等等層出不窮