技术编程|基于Apache Doris的小米增长分析平台实践( 二 )
3.2 重新选型
MPP架构的SQL查询引擎 , 如Impala,presto等能够高效地支持SQL查询 , 但是仍然需要依赖Kudu, HDFS, Hive Metastore等组件, 运维成本依然比较高 , 同时 , 由于计算存储分离 , 查询引擎不能很好地及时感知存储层的数据变化 , 就无法做更细致的查询优化 , 如想在SQL层做缓存就无法保证查询的结果是最新的 。因此 , 我们的目标是寻求一款计算存储一体的MPP数据库来替代我们目前的存储计算层的组件 。我们对这款MPP数据库有如下要求:
1. 足够快的查询性能 。
2. 对标准SQL支持较全面 , 用户使用友好 。
3. 不依赖其他外部系统 , 运维简单 。
4. 社区开发活跃 , 方便我们后续的维护升级 。
Doris是百度开源到Apache社区的基于 MPP 的交互式 SQL 数据仓库 ,主要用于解决报表和多维分析 。它主要集成了 Google Mesa 和 Cloudera Impala 技术 , 满足了我们的上述要求 。我们对Doris进行了内部的性能测试并和社区沟通交流 , 确定了Doris替换原来的计算存储组件的解决方案 , 于是我们新的架构就简化为如下图所示:
文章图片
文章图片
3.3 性能测试
在配置大体相同计算资源的条件下 , 我们选取了一个日均数据量约10亿的业务 , 分别测试不同场景下(6个事件分析 , 3个留存分析 , 3个漏斗分析) , 不同时间范围(一周到一个月)的SparkSQL和Doris的查询性能 。
文章图片
文章图片
如上图测试结果 , 在增长分析的场景下 , Doris查询性能相比于SparkSQL+Kudu+HDFS方案具有明显的提升 , 在事件分析场景下平均降低约85%左右的查询时间 , 在留存和漏斗场景下平均降低约50%左右的查询时间 。对于我们我们业务大多数都是事件分析需求来讲 , 这个性能提升很大 。
4、Doris实践与优化
4.1 Doris在增长分析平台的使用情况
文章图片
文章图片
随着接入业务的增多 , 目前 , 我们的增长分析集群单集群最大规模已经扩展到了近百台 , 存量数据到了PB级别 。其中 , 近实时的产品线作业有数十个 , 每天有几百亿条的数据入库 , 每日有效的业务查询SQL达1.2w+ 。业务的增多和集群规模的增大 , 让我们也遇到不少问题和挑战 , 下面我们将介绍运维Doris集群过程中遇到的一些问题和应对措施或改进 。
4.2 Doris数据导入实践
Doris大规模接入业务的第一个挑战是数据导入 , 基于我们目前的业务需求 , 数据要尽可能实时导入 。而对于增长分析集群 , 目前有数十个业务明细数据表需要近实时导入 , 这其中还包含了几个大业务(大业务每天的数据条数从几十亿到上百亿不等 , 字段数在200~400) 。为了保证数据不重复插入 , Doris采用label标记每批数据的导入 , 并采用两阶段提交来保证数据导入的事务性 , 要么全部成功 , 要么全部失败 。为了方便监控和管理数据导入作业 , 我们使用Spark Streaming封装了stream load操作 , 实现了将Talos的数据导入到Doris中 。每隔几分钟 , Spark Streaming会从Talos读取一个批次的数据并生成相应的RDD , RDD的每个分区和Talos的每个分区一一对应 , 如下图所示:
文章图片
推荐阅读
- 摄像头|小米截胡中兴屏下摄像头技术,小米研发还是供应链技术?
- 防撞|基于DSP的汽车防撞雷达系统设计,快去给自己的车也搞一个
- 马斯克|马斯克用活猪演示脑机接口技术:实时读取猪脑信息 心灵感应成真了
- 三防|带你了解三防手持终端的秘密
- 手机|基于西门子PLC无线远程通讯手机APP
- 第三|原创 小米发布第三代屏下相机技术,或将在Mix 4上首秀?
- 海信|首个新兴显示技术分标委成立 海信牵头制定国标
- 中年|Python编程语言有什么独特的优势呢?
- |马斯克用活猪演示脑机技术,他希望今年年底前能在人体内植入
- 互联网的放大镜|小米截胡中兴屏下摄像头技术,小米研发还是供应链技术?