搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
办公|编程助手
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
淘贴
博客
群组
社区VIP
APP下载
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云-梭伦科技
»
专题
›
技术学习(版主发帖区)
›
大数据学习
›
Hive|数据仓库
›
总结型
›
建设实时数仓之前的思考与方案
1
4
4
分享
建设实时数仓之前的思考与方案
阿飞
2020-4-23 20:59:25
发表于
总结型
[显示全部楼层]
只看大图
阅读模式
关闭右栏
4
4777
问题导读
1.为何建设实时数仓?
2.计算引擎那个组件更适合?
3.存储引擎哪个更适合?
4.实时数仓分层架构包含哪些内容?
导读:本文由作者LittleMagic总结分享授权发布,主要阐述建设实时数仓之前的思考与方案记录。详细分为以下几个方面:
动机背景
指导思想
技术选型
架构分层
元数据管理
SQL作业管理
数据质量
前言
随着这次新冠疫情带来的机遇,业务数据规模飞速增长,实时数仓的建设已经提上了日程。虽然还没有正式开始实施,但是汲取前人的经验,做好万全的准备总是必要的。
本文简单地记录一下建设实时数仓之前的一些思考和方案想法,不涉及维度建模方法论的事情。
一、动机背景
随着业务快速增长,时效性越显重要,传统离线数仓的不足暴露出来:
运维层面——所有调度任务只能在业务闲时(凌晨)集中启动,集群压力大,耗时越来越长;
业务层面——数据按T+1更新,延迟高,数据时效价值打折扣,无法精细化运营与及时感知异常。
实时数仓即离线数仓的时效性改进方案,从原本的小时/天级别做到秒/分钟级别。底层设计变动的同时,需要尽力保证平滑迁移,不影响用户(分析人员)之前的使用习惯。
实时数仓的建设应早日提上日程,未来企业对数据时效性的要求会越来越高(如实时大屏、实时监控、实时风控等),实时数仓会很好的解决该问题。
二、指导思想:Kappa架构
一图流,可品
参考大数据数据仓库架构演进:
三、计算/存储技术选型
3.1 计算引擎
硬性要求:
批流一体化——能同时进行实时和离线的操作;
提供统一易用的SQL interface——方便开发人员和分析人员。
可选项:Spark、Flink
较优解:
Flink
优点:
严格按照Google Dataflow模型实现;
在事件时间、窗口、状态、exactly-once等方面更有优势;
非微批次处理,真正的实时流处理;
多层API,对table/SQL支持良好,支持UDF、流式join等高级用法。
缺点:
生态系统没有Spark强大(不太重要);
1.10版本相比1.9版本的改动较多,需要仔细研究。
3.2 底层(事实数据)| 存储引擎
硬性要求:
1. 数据in-flight——不能中途落地,处理完之后直接给到下游,最小化延迟;
2. 可靠存储——有一定持久化能力,高可用,支持数据重放。
可选项:
各种消息队列组件(Kafka、RabbitMQ、RocketMQ、Pulsar、...)
较优解:
Kafka
1. 吞吐量很大;
2. 与Flink、Canal等外部系统的对接方案非常成熟,容易操作;
3. 团队使用经验丰富。
3.3 中间层(维度数据)| 存储引擎
硬性要求:
支持较大规模的查询(主要是与事实数据join的查询);
能够快速实时更新。
可选项:RDBMS(MySQL等)、NoSQL(HBase、Redis、Cassandra等)
较优解:
HBase
优点:
实时写入性能高,且支持基于时间戳的多版本机制;
接入业务库MySQL binlog简单;
可以通过集成Phoenix获得SQL能力。
3.4 高层(明细/汇总数据)| 存储/查询引擎
根据不同的需求,按照业务特点选择不同的方案。
当前已大规模应用,可随时利用的组件:
Greenplum——业务历史明细、BI支持、大宽表MOLAP
Redis——大列表业务结果(PV/UV、标签、推荐结果、Top-N等)
HBase——高并发汇总指标(用户画像)
MySQL——普通汇总指标、汇总模型等
当前未有或未大规模应用的组件:
ElasticSearch(ELK)——日志明细,也可以用作OLAP
Druid——OLAP
InfluxDB/OpenTSDB——时序数据
四、实时数仓分层架构
参照离线数仓分层,尽量扁平,减少数据中途的lag。
五、元数据管理
5.1 必要性
Kafka本身没有Hive/GP等传统数仓组件的metastore,必须自己维护数据schema。
(Flink 1.10开始正式在Table API中支持Catalog,用于外部元数据对接。)
5.2 可行方案
外部存储(e.g. MySQL) + Flink ExternalCatalog
Hive metastore + Flink HiveCatalog(与上一种方案本质相同,但是借用Hive的表描述与元数据体系)
Confluent Schema Registry (CSR) + Kafka Avro Serializer/Deserializer
CSR是开源的元数据注册中心,能与Kafka无缝集成,支持RESTful风格管理。producer和consumer通过Avro序列化/反序列化来利用元数据。
六、SQL作业管理
6.1 必要性
实时数仓平台展现给分析人员的开发界面应该是类似Hue的交互式查询UI,即用户写标准SQL,在平台上提交作业并返回结果,底层是透明的。
但仅靠Flink SQL无法实现,需要我们自行填补这个gap。
6.2 可行方案
AthenaX(由Uber开源)
该项目比较老旧,是基于Flink 1.5构建的,预计需要花比较多的时间精力来搞二次开发。
6.3 流程
用户提交SQL → 通过Catalog获取元数据 → 解释、校验、优化SQL → 编译为Flink Table/SQL job → 部署到YARN集群并运行 → 输出结果
重点仍然是元数据问题:如何将AthenaX的Catalog与Flink的Catalog打通?
需要将外部元数据的对应到Flink的TableDescriptor(包含connector、format、schema三类参数),进而映射到相应的TableFactory并注册表。
另外还需要控制SQL作业对YARN资源的占用,考虑用YARN队列实现,视情况调整调度策略。
七、数据质量
7.1 性能监控
使用Flink Metrics,主要考虑两点:
算子数据吞吐量(numRecordsInPerSecond/numRecordsOutPerSecond)
Kafka链路延迟(records-lag-max)→ 如果搞全链路延迟,需要做数据血缘分析
其他方面待定(术业有专攻,可专业搞监控系统的同学支持)
7.2 数据质量
手动对数——旁路写明细表,定期与数据源交叉验证
自动监控——数据指标波动告警,基线告警,表级告警 etc.
原文链接:
https://mp.weixin.qq.com/s/mTA59tYNLVU-oXaMBKriyQ
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
已有(4)人评论
电梯直达
正序浏览
dragonflyxyz
发表于 2020-4-24 09:08:50
很好的文章,总算有了思路了!
回复
使用道具
举报
显身卡
美丽天空
发表于 2020-4-24 10:28:00
感谢分享
回复
使用道具
举报
显身卡
为梦狂野
发表于 2020-7-18 14:44:32
写的好,感谢博主分享
回复
使用道具
举报
显身卡
shuai7boy
发表于 2020-8-4 23:06:00
mark~~~~~~~~~~~~~~~~~~~~
回复
使用道具
举报
显身卡
还有一些帖子被系统自动隐藏,点此展开
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表新帖
阿飞
超级版主
关注
1893
主题
1998
帖子
123
粉丝
TA的主题
华为OD目标院校名单(2024.07新版)
2024-7-19
国/央企投递全流程经验分享
2024-7-15
2024年了,互联网大厂福利还香吗?
2024-5-23
华为3年涨薪6次,每次涨薪高达3万
2024-5-14
华为OD面试
2024-5-13
24小时热文
kafka面试题精选
Nebula Flink Connector 在实时 ETL 的实践
Apache Doris 用户案例集
国家电网公司主数据管理系统技术规范
企业的主数据建设方法论与实践
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈