导读:随着大数据的进一步发展,实时分析数据库的发展也越来越繁荣。Apache Doris 作为一个高性能、简单易用、支持实时的 MPP 架构分析数据库也被越来越多的公司使用。今天会和大家分享一下 Apache Doris 在同程数科数仓建设中的实践。
今天的介绍会围绕下面四点展开:
业务场景
架构演变
收益现状
未来展望
分享嘉宾|王星 同程数科 大数据高级工程师
编辑整理|刘步龙
出品社区|DataFun
01
1. 企业介绍
看板类:业务实时驾驶舱;T+1 业务看板 预警类:实时业务流程预警(比如:风控熔断、资金异常、流量监控) 分析类:数据查询分析;临时取数;实时用户标签查询 财务类:财务清算对账;支付对账
架构演变
使用 CDH 构建,在现有 CDH 集群下,能够快速相互集成并投入使用 实时采集能够可视化配置式开发
引入组件过多,(组件、作业)维护复杂,问题排查困难,数据修复困难 数据开发链路过长,对数仓人员技术要求高,开发效率低 聚合查询能力不足,大表 join 效率不高 离线与实时集群未做分离,导致资源相互竞争 有预警能力,但是作业自动恢复能力不足
丰富的数据接入能力(支持众多数据源) 采用 MySQL 协议通信 Doris SQL 基本覆盖 MySQL 语法 支持MPP并行计算能力 官方文档健全,上手较快
Doris 的部署不依赖于现有大数据的组件,可独立部署。 整体分两层:FE(前端节点)、BE(后端节点)。FE主要负责接收请求和返回请求,对元数据和集群的管理,以及查询计划的生成;BE 主要负责数据节点的管理,和对执行计划的执行。 Doris 整体运维简便,高可用,可扩展性强。
routine load:业务数据(写入kafka)实时接入 Doris broker load:离线数据定时或手工导入 Doris(包含:基础维度表、历史数据等) insert into:定时作业,从 DWD 层处理出 DWS 层,之后处理出 ADS 层 良好的数据模型,使开发效率更高 unique 模型:业务数据接入 Doris 时使用,防止重复采集 aggregate 模型:从 DWD 层到 DWS 或 ADS 层使用,帮我们减少了很大一部分 SQL 代码量 使用门槛低,查询效率高 基于 MySQL 协议,标准的 SQL 查询语法,查询分析无压力 使用物化视图达到预计算效果,如果查询命中,将快速响应 部署架构简便,运维维护成本低 针对 FE、BE、BROKER 角色,配置监控,异常重启
快速开发:如何能够简单快速的将数据导入 Doris,并快速实现 ETL 开发 调度管理:如何管理上线的任务,保证任务调度的稳定,以及调度恢复能力 数据查询:生产与办公网络隔离,如何让大家安全便捷的查询分析 集群管理:如何感知节点异常,并且能够重试自动恢复 整体宗旨:高效率、高质量、高稳定。
收益现状
数据接入:新架构数据接入代码可快速构建,3-5 分钟完成一个接入。老架构手工部分比较多。接入一张表需要 20-30 分钟。 数据开发:Doris 自带 unique、aggregate 模型,能够加速 ETL 开发过程。老架构数据 ETL 过程没有底层数据模型支撑,很多处理逻辑需要自行开发。 数据查询:基于 Doris 新架构带有物化视图或 Rollup 物化索引提升查询效率。同时大表 join 时 Doris 内部提供很多优化机制。 数据报表:基于 Doris 的查询展示,报表相应速度基本在秒级或毫秒级响应。 环境维护:没有 Hadoop 数仓环境复杂,整个平台链路方案清晰。同时 Doris 集群的运维成本远低于 Hadoop 集群运维(迁移一次就懂了)。
尝试引入 Doris Manager 对集群进行维护和管理 实现基于 Flink CDC 方式的数据接入。这是我们 3.0 架构规划(进行中) 对现有 Doris 集群进行升级,使用新特性,更快速响应需求 针对“指标管理体系”、“数据质量监控体系”进行强化建设