分享

基于Hadoop的数据仓库

本帖最后由 a87758133 于 2019-6-20 21:51 编辑
问题导读:


1、什么是数据仓库?
2、基于Hadoop的数据仓库有哪些优缺点?
3、数据仓库具体实例有哪些?



1 什么是数据仓库
数据仓库是面向主题的、集成的、具有时间特征的、稳定的数据集合,用以支持经营管理中的决策制定过程

● 典型应用:
     ● 报表生成
     ● 数据分析
     ● 数据挖掘
     ● 数据仓库其他特征

● 数据量非常大(TB以上)
     ● 是数据库的一种新型应用
     ● 使用人员较少

● 商用数据仓库
     ● 典型代表: db2, teradata, vertica
     ● 价格昂贵,支持数据量通常TB或以下

● 大数据时代数据仓库
     ● 数据量非常大
     ● 扩展性和容错性很重要
     ● 成本考量

不了解的数据仓库基本概念的,可以参考之前《了解一下数据仓库》这篇文章。

2 基于Hadoop数据仓库的基本架构

● 技术手段
     ● 通常使用Hive作为数据仓库
         ■ 超大数据集设计的计算扩展能力
         ■ 支持HQL查询 — 简单,学习代价低
         ■ 统一的元数据管理

● 基本特点
     ● 支持海量数据
     ● 多维数据分析
     ● 使用人员较少
     ● 数据延迟较高

2.1 基于Hadoop的数据仓库:第一版
16b3d3a1aa2ad5e3_看图王.web.jpg
● 优点
     ● 满足了数据仓库的基本要求
     ● 能够处理海量数据
     ● 系统扩展性和容错性极好

● 缺点
     ● 性能较低,实时性不好

2.2 基于Hadoop的数据仓库:第二版
16b3d3a4035dceef_看图王.web.jpg
● 改进
     ● 使用MPP(Presto)系统提高查询性能

● 优点
     ● 满足了数据仓库的基本要求
     ● 能够处理海量数据
     ● 系统扩展性和容错性极好
     ● 实时性较好

● 缺点
     ● 数据延迟高(数据从产生到入库,再到查询,整个周期长)

2.3 基于Hadoop的数据仓库:第三版(增加实时pipeline)
16b3d3a30d899b89_看图王.web.jpg
● 改进
     ● 使用Spark Streaming系统降低数据延迟

● 优点
     ● 满足了数据仓库的基本要求
     ● 能够处理海量数据
     ● 系统扩展性和容错性极好
     ● 实时性较好
     ● 数据延迟低

3 数据仓库具体实例
网站报表系统

● 基本作用
     ● 按照业务要求生成报表
     ● 报表可实时产生或按天产生

● 数据规模
     ● 数据量: TB级
     ● 表数目: 100+

● 用户量
     ● 约几十个

3.1 收集数据
16b3d3a1a9c33afb_看图王.web.jpg

3.2 ETL
16b3d3a1aa9b9a39_看图王.web.jpg

● ETL
     ● Extract, Transform, Load
     ● 可使用MapReduce/Spark/Pig实现
     ● 存储格式: 行式存储与列式存储

● 行存储与列存储

16b3d3a1ab8a70e4_看图王.web.jpg

如何创建带压缩的ORC表

● ETL后日志格式(文本格式)如下:
16b3d3a2a495d0f5_看图王.web.jpg

● 临时表(文本格式)定义如下:
[mw_shl_code=sql,true]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';[/mw_shl_code]
● 将数据导入临时表tmp_logs: LOAD DATA INPATH '/nginx/logs/2016011206' OVERWRITE INTO TABLE tmp_logs;

● 将临时表中数据导入到orc格式的表中:
[mw_shl_code=sql,true]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;[/mw_shl_code]
● 压缩算法
16b3d3a1ab1f8a4f_看图王.web.jpg
● 查询
[mw_shl_code=sql,true]SELECT domain_id, sum(log_type) FROM logs WHERE
log_time>'2016-01-12-06' GROUP BY domain_id;[/mw_shl_code]
3.3 参数化报表与可视化
16b3d3a1a9bb25f4_看图王.web.jpg

● 参数化报表
     ● 根据用户定制的数据要求,生成SQL

● 可视化工具
     ● Echarts:echarts.baidu.com/
     ● D3.js: d3js.org/
     ● Tableau: 商用可视化软件

4 Summary
● 基于Hadoop构建数据仓库的好处
     ● 开源免费
     ● 支持海量数据
     ● 周边工具成熟

● 基于Hadoop构建数据仓库的流程
     ● 数据收集
     ● 数据ETL
     ● 参数化报表与可视化



最新经典文章,欢迎关注公众号

来源:掘金

作者:buildupchao

原文:《基于Hadoop的数据仓库》

https://juejin.im/post/5cfd3e1b518825765939e08e



本帖被以下淘专辑推荐:

已有(3)人评论

跳转到指定楼层
Hive_17 发表于 2019-6-22 14:56:47
详细、精致、点赞
回复

使用道具 举报

wangchan 发表于 2019-6-22 19:29:18
优秀,赞赞赞!!!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条