美团点评实时数仓平台演进与实践
The following article is from Flink 中文社区 Author 鲁昊@美团点评
主要内容为以下三个方面:
实时计算演进与业务实践 基于 Flink 的实时数仓平台 未来发展与思考
一、美团点评实时计算演进
美团点评实时计算演进历程
实时计算平台
实时计算平台架构
最底层是收集层,这一层负责收集用户的实时数据,包括 Binlog、后端服务日志以及 IoT 数据,经过日志收集团队和 DB 收集团队的处理,数据将会被收集到 Kafka 中。这些数据不只是参与实时计算,也会参与离线计算。
收集层之上是存储层,这一层除了使用 Kafka 做消息通道之外,还会基于 HDFS 做状态数据存储以及基于 HBase 做维度数据的存储。
存储层之上是引擎层,包括 Storm 和 Flink。实时计算平台会在引擎层为用户提供一些框架的封装以及公共包和组件的支持。
在引擎层之上就是平台层了,平台层从数据、任务和资源三个视角去管理。
架构的最上层是应用层,包括了实时数仓、机器学习、数据同步以及事件驱动应用等。
在作业配置方面,则包括作业设置、运行时设置以及拓扑结构设置;
在作业发布方面,则包括版本管理、编译/发布/回滚等;
作业状态则包括运行时状态、自定义指标和报警以及命令/运行时日志等。
业务数仓实践
流量
广告实时效果
即时配送
总结
在数据模型上,流量类是扁平化的宽表,业务数仓更多是基于范式的建模,特征数据是 KV 存储。
从数据来源区分,流量数仓的数据来源一般是日志数据;业务数仓的数据来源是业务 binlog 数据;特征数仓的数据来源则多种多样。
从数据量而言,流量和特征数仓都是海量数据,每天百亿级以上,而业务数仓的数据量一般每天百万到千万级。
从数据更新频率而言,流量数据极少更新,则业务和特征数据更新较多。流量数据一般关注时序和趋势,业务数据和特征数据关注状态变更。
在数据准确性上,流量数据要求较低,而业务数据和特征数据要求较高。
在模型调整频率上,业务数据调整频率较高,流量数据和特征数据调整频率较低。
二、基于 Flink 的实时数仓平台
传统数仓模型
实时数仓模型
准实时数仓模型
实时数仓和传统数仓的对比
第一个是分层方式,离线数仓为了考虑到效率问题,一般会采取空间换时间的方式,层级划分会比较多;则实时数仓考虑到实时性问题,一般分层会比较少,另外也减少了中间流程出错的可能性。
第二个是事实数据存储方面,离线数仓会基于 HDFS,实时数仓则会基于消息队列(如 Kafka)。
第三个是维度数据存储,实时数仓会将数据放在 KV 存储上面。
第四个是数据加工过程,离线数仓一般以 Hive、Spark 等批处理为主,而实时数仓则是基于实时计算引擎如 Storm、Flink 等,以流处理为主。
实时数仓建设方案对比
在调度开销方面,准实时数仓是批处理过程,因此仍然需要调度系统支持,虽然调度开销比离线数仓少一些,但是依然存在,而实时数仓却没有调度开销。
在业务灵活性方面,因为准实时数仓基于 OLAP 引擎实现,灵活性优于基于流计算的方式。
在对数据晚到的容忍度方面,因为准实时数仓可以基于一个周期内的数据进行全量计算,因此对于数据晚到的容忍度也是比较高的,而实时数仓使用的是增量计算,对于数据晚到的容忍度更低一些。
在扩展性方面,因为准实时数仓的计算和存储是一体的,因此相比于实时数仓,扩展性更弱一些。
在适用场景方面,准实时数仓主要用于有实时性要求但不太高、数据量不大以及多表关联复杂和业务变更频繁的场景,如交易类型的实时分析,实时数仓则更适用于实时性要求高、数据量大的场景,如实时特征、流量分发以及流量类型实时分析。
为何选择 Flink?
第一个是状态管理,实时数仓里面会进行很多的聚合计算,这些都需要对于状态进行访问和管理,Flink 在这方面比较成熟。
第二个是表义能力,Flink 提供极为丰富的多层次 API,包括 Stream API、Table API 以及 Flink SQL。
第三个是生态完善,实时数仓的用途广泛,用户对于多种存储有访问需求,Flink 对于这方面的支持也比较完善。
最后一点就是 Flink 提供了流批统一的可能性。
建设思路
实时数仓平台架构
消息表达-数据接入
计算表达-扩展 DDL
计算表达-UDF 平台
首先是数据安全性。之前的数仓建设过程中,用户可以上传 Jar 包去直接引用 UDF,这样做是有危险性存在的,并且我们无法知道数据的流向。从数据安全的角度来考虑,平台会进行代码审计和血缘关系分析,对于历史风险组件或者存在问题的组件可以进行组件收敛。
第二个层面,在数据安全基础上我们还会关注 UDF 的运行质量,平台将会为用户提供模板、用例以及测试的管理,为用户屏蔽编译打包、Jar 包管理的过程,并且会在 UDF 模板中进行指标日志的埋点和异常处理。
第三个层面是 UDF 的复用能力,因为一个业务方开发的 UDF,其他业务方很可能也会使用,但是升级过程中可能会带来不兼容的问题,因此,平台为业务提供了项目管理、函数管理和版本管理的能力。
实时数仓平台-Web IDE
三、未来发展与思考
资源自动调优
首先,业务提出需求,后续会进行设计建模、业务逻辑开发和底层技术实现。美团点评的实时数仓建设思路是将技术实现统一表达,让业务关注逻辑开发,而逻辑开发也可以基于配置化手段实现自动构建。
再上一层是可以根据业务需求实现智能建模,将设计建模过程实现自动化。
关注大数据学习与分享,获取更多技术干货