基於Hadoop的數據倉庫

1 什麼是數據倉庫

數據倉庫是面向主題的、集成的、具有時間特徵的、穩定的數據集合,用以支持經營管理中的決策制定過程

  • 典型應用:

    • 報表生成
    • 數據分析
    • 數據挖掘
  • 數據倉庫其他特徵

    • 數據量非常大(TB以上)
    • 是數據庫的一種新型應用
    • 使用人員較少
  • 商用數據倉庫

    • 典型代表: db2, teradata, vertica
    • 價格昂貴,支持數據量通常TB或以下
  • 大數據時代數據倉庫

    • 數據量非常大
    • 擴展性和容錯性很重要
    • 成本考量

不瞭解的數據倉庫基本概念的,可以參考之前《瞭解一下數據倉庫》這篇文章。

2 基於Hadoop數據倉庫的基本架構

  • 技術手段

    • 通常使用Hive作爲數據倉庫
      • 超大數據集設計的計算擴展能力
      • 支持HQL查詢 — 簡單,學習代價低
      • 統一的元數據管理
  • 基本特點

    • 支持海量數據
    • 多維數據分析
    • 使用人員較少
    • 數據延遲較高

2.1 基於Hadoop的數據倉庫:第一版

  • 優點

    • 滿足了數據倉庫的基本要求
    • 能夠處理海量數據
    • 系統擴展性和容錯性極好
  • 缺點

    • 性能較低,實時性不好

2.2 基於Hadoop的數據倉庫:第二版

  • 改進

    • 使用MPP(Presto)系統提高查詢性能
  • 優點

    • 滿足了數據倉庫的基本要求
    • 能夠處理海量數據
    • 系統擴展性和容錯性極好
    • 實時性較好
  • 缺點

    • 數據延遲高(數據從產生到入庫,再到查詢,整個週期長)

2.3 基於Hadoop的數據倉庫:第三版(增加實時pipeline)

  • 改進

    • 使用Spark Streaming系統降低數據延遲
  • 優點

    • 滿足了數據倉庫的基本要求
    • 能夠處理海量數據
    • 系統擴展性和容錯性極好
    • 實時性較好
    • 數據延遲低

3 數據倉庫具體實例

網站報表系統

  • 基本作用

    • 按照業務要求生成報表
    • 報表可實時產生或按天產生
  • 數據規模

    • 數據量: TB級
    • 表數目: 100+
  • 用戶量

    • 約幾十個

3.1 收集數據

3.2 ETL

  • ETL

    • Extract, Transform, Load
    • 可使用MapReduce/Spark/Pig實現
    • 存儲格式: 行式存儲與列式存儲
  • 行存儲與列存儲

如何創建帶壓縮的ORC表

  • ETL後日志格式(文本格式)如下:

  • 臨時表(文本格式)定義如下:
	CREATE EXTERNAL TABLE tmp_logs (
		domain_id INT,
		log_time STRING,
		log_date STRING,
		log_type INT,
		uin BIGINT
	)
	ROW FORMAT DELIMITED
	FIELDS TERMINATED BY ','
	STORED AS TEXTFILE
	LOCATION '/user/hivetest/logs';
  • 將數據導入臨時表tmp_logs:
    LOAD DATA INPATH '/nginx/logs/2016011206' OVERWRITE INTO TABLE tmp_logs;

  • 將臨時表中數據導入到orc格式的表中:

	CREATE TABLE logs (
		domain_id INT,
		log_time STRING,
		log_date STRING,
		log_type INT,
		uin BIGINT
	)
	PARTITION BY(log_time STRING)
	STORED AS ORC
	tblproperties("orc.compress"="SNAPPY");

	INSERT INTO TABLE logs PARTITION(dt='2016-01-12-06') SELECT * FROM tmp_logs;
  • 壓縮算法

  • 查詢
	SELECT domain_id, sum(log_type) FROM logs WHERE
	log_time>'2016-01-12-06' GROUP BY domain_id;

3.3 參數化報表與可視化

4 Summary

  • 基於Hadoop構建數據倉庫的好處

    • 開源免費
    • 支持海量數據
    • 周邊工具成熟
  • 基於Hadoop構建數據倉庫的流程

    • 數據收集
    • 數據ETL
    • 參數化報表與可視化
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章