基於Hadoop的數據倉庫

1 什麼是數據倉庫

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

  • 典型應用:算法

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

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

    • 典型表明: db2, teradata, vertica
    • 價格昂貴,支持數據量一般TB或如下
  • 大數據時代數據倉庫markdown

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

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

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

  • 技術手段echarts

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

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

2.1 基於Hadoop的數據倉庫:初版

  • 優勢工具

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

    • 性能較低,實時性很差

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 參數化報表與可視化

  • 參數化報表

    • 根據用戶定製的數據要求,生成SQL
  • 可視化工具

4 Summary

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

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

    • 數據收集
    • 數據ETL
    • 參數化報表與可視化
相關文章
相關標籤/搜索