ToB企服应用市场:ToB评测及商务社交产业平台

标题: Doris——纵腾集团流批一体数仓架构 [打印本页]

作者: 金歌    时间: 2024-8-1 14:55
标题: Doris——纵腾集团流批一体数仓架构
目录
前言
一、早期架构
二、架构选型
三、新数据架构  
3.1 数据中台
3.2 数仓建模
3.3 数据导入
四、实践履历
4.1 预备阶段
4.2 验证阶段
4.3 压测阶段
4.4 上线阶段
4.5 宣导阶段
4.6 运行阶段
4.6.1 Tablet规范问题
4.6.2 集群读写优化
五、总结收益
六、未来规划

  原文大佬的这篇Doris数仓建设案例有借鉴意义,这里摘抄下来用作学习和知识沉淀。如有侵权请告知~
前言

  纵腾集团以“全球跨境电商基础设施服务商”为企业定位,聚焦跨境仓储与物流。随着纵腾集团业务的快速发展,早期基于多套 CDH 大数据架构的技术栈和组件繁杂,开辟和运维难度高、服从低,数据质量和时效难以保障,已无法满意当下数据分析需求,严重影响相关工作的开展。因此,纵腾集团在 2022年正式引入Doris,基于Doris 构建了新的流批一体数据架构,同时建立了以 Doris 为核心的数据中台。构建过程中对读写时效性、服务的稳定性及高并发读写等多方面进行了优化。
一、早期架构

    早期数仓架构重要分为两套基于 CDH 的大数据集群,这两套架构用于不同产品线的数仓需求、数据大屏和BI报表等应用。


      这两套架构为独立的数据管道,具有耦合度低,集群间相互独立等特点,便于精细化管理。但随着业务需求的不停变革,这样的特点也引发出许多新的问题:

二、架构选型

    为了办理早期架构的痛点、更好满意日益严苛的数据需求,我们盼望能有一款产品资助我们快速构建流批一体的数仓架构,构建数据中台服务。

   我们对传统数仓、 实时数仓和数据湖进行了对比。从上图可知,传统数仓可以支持超PB级的海量数据,但是交互查询性能相对差一些,偏离线场景,不满意我们对数据实时性的要求;
   数据湖可以支持超海量的数据,支持数据更新,查询性能适中,但是数据湖近两年才开始应用,成熟度较低,使用风险较大;
   实时数仓适用PB 级数据存储,支持数据更新且查询性能非常好,联合我们的要求,实时数仓与我们的使用和需求场景都比力贴合,因此我们最终决定选择实时数仓作为数据底座。
    接着我们对市面上较为盛行的三款实时数仓:ClickHouse、Druid、Doris 进行了选型对比,对比图如下:

   对比可知,Doris 优势显着、性价比更高,具有独立主从架构简朴,运维更灵活便捷、丰富的数据模型、优秀的查询性能和全面的生态规划等诸多优势,对比这三个产品,Doris 最符合我们的选型要求。
三、新数据架构  

  

   新数据架构加基于Doris简化了数据采集、存储和计算的流程:

  基于上述几点进行了数据应用开辟及对外提供服务,构建了数据中台。
3.1 数据中台

    我们以Doris 为核心底座创建了数据平台,核心功能包括:指标中央、元数据中央、基础设置中央、即席分析和数据接口服务中央,其中指标中央和即席分析的数据重要泉源于Doris ,当前已上线几百个指标。

3.2 数仓建模

    联合Doris 的特性重新对数仓进行了建模,数仓分层与传统数仓类似,其中ODS数据为存量和增量一体的导入模式,同时为防止出现[随机查询效果问题],ODS层最终选用Unique 数据模型,相比于Aggregate模型可以实现写时合并(Merge-on-Write),有效进步数据实时性,且Aggregate 模型查询性能更接近于Duplicate模型,对于ODS层黑白常好的的选择。
  DIM/DED/DWS/ADS 层重要选用 Aggregate 数据模型; Aggregate 数据模型提供的四种聚合方式可以在大部门场景下达到事半功倍的效果,资助我们快速应对不同的需求场景。



3.3 数据导入

   ods层的数据导入重要以Stream Load为主,在 HDFS上的汗青存量数据也会通过 Broker Load或Spark Load导入。DW 层数据重要以insert into方式导入,同时为减轻Doris内存压力,我们将部门ETL任务放到Kyuubi On Spark 引擎上去计算,目前在DolphinScheduler天天平稳调理 Doris DW 任务有上万个,其中大部门为T+1 任务,小部门为小时级任务。

四、实践履历


     对于以Doris 为核心的新数据架构,我们规划了6个阶段进行运行测试,直至可以上线运行。(重点关注压测阶段和运行阶段,有一些调试优化履历分享给大家)
4.1 预备阶段

   引入 Doris 时是 2022 年 2月,因此选择当时最新版本Doris 0.15 Release 版本进行应用,重要考虑维度如下:

4.2 验证阶段

  该阶段重要是为了二次验证官方文档中先容的功能是否满意我们的实际运用场景,比如生态扩展中的Connector、外表联邦查询、各种Load方式、多租户隔离及物化视图等。
4.3 压测阶段


    压测阶段首先辈行数据生成,数据集选用的是 TPC-DS 数据,接着根据 Doris 的特性对 DDL 和 SQL 等规则进行对应调整,末了通过脚本将数据导入到 Doris 存储中,再通过自动化脚本进行查询及导入压测,最终将压测效果输出到 MySQL 表中,量化为图表进行展示。下方为本阶段的根本设置及压测过程先容:
   - 硬件环境
  
  - 软件环境
  
  - 数据集信息
    我们生成了 1T、5T、10T 的 TPC-DS 数据集,1T 的数据集约有30亿数据量。
  查询压测

    压测过程中,最初使用 0.15-release 版本进行测试,正巧 1.0-release 版本发布,后决定更换为 1.0-release 版本进行后续的压测。下图是基于 1T 的 TPC-DS 数据在同等硬件设置环境下和某商业 MPP 数据库的对比效果: 

    如图所示,Doris的查询压测性能优异,有着显着的性能优势。
导入压测

    经调整优化后,最大写入时效为 269 MB/S &  680K ops/s,平均写入时效 70 MB/S & 180K ops/s,写入时效大幅提升。

4.4 上线阶段

  该阶段重要是确认Doris 上线需要的检查清单、预调参数、BE 资源组规划及用户权限的划分。

4.5 宣导阶段

     该阶段重要是输出前面各阶段的 TimeLine、总结以及上线后使用 Apache Doris 的注意事项说明,比如我们用到多租户隔离,那么 DDL 建表时则需要在 Properties 中体现指定各副本对应的资源组:
  1. create table zt_table
  2. ......
  3. properties(
  4.     "replication_allocation"="tag.location.group_a:1, tag.location.group_b:1, tag.location.group_c:1"
  5. )
复制代码
4.6 运行阶段

4.6.1 Tablet规范问题

问题描述:上线运行一段时间后,随着越来越多的数据增长,集群每次重启后一周左右,读写就会开始变得越来越慢,直到无法正常进行读写。
问题处理:

问题小结:

4.6.2 集群读写优化

问题描述:1.1.3 release 版本中,高并发的同时进行 Stream Load、Broker Load、insert into 和查询时,读写会变得非常慢,如下图 11/01 19:00 并发上来后的 Txn Load 所示

问题处理:
(1) 我们进行了十几轮对比考试,结论如下:


(2)通过be.info发现,80 个 Bucket表写入某个Tablet 的 memsize/rows/flushsize/duration数值比 10 个 Bucket 写入时的数值呈数倍之差,即 80 个 Bucket 表的数据写入时效无论 Memsize 还是 Flushsize 都非常小、但耗费时间却很长。

(3)同时网络 Pstack 日记,经太过析可以确定,Tcmalloc 在频繁地寻找pageheap_lock,导致高频竞争锁从而低落了读写性能。

(4)于是,进行如下参数调整:
  1. 减少doris_be进程内存返回给linux系统的频率,从而减少tcmalloc频繁竞争锁的情况
  2. tc_use_memory_min = 207374182400
  3. tc_enable_aggressive_memory_decommit = false
  4. tc_max_total_thread_cache_bytes=20737418240
复制代码
(5)调参并滚动重启BE后,集群状况如下图所示:
     18:50 前将 Broker Load、insert into 和查询任务同时开启,18:50 后将 Stream Load 任务也开启(包括 80 bucket的表),集群整体的读写性能不仅没有降落,反而 Stream Load 时效突破了压测阶段的最大值 269 MB/S&680K /ops/s,而且连续稳定。

问题小结:
    使用 Doris 1.1.3 及以上版本,非常推荐调整 Tcmalloc 相关参数,淘汰doris_be进程与系统之间的内存申请回收过程,可显着淘汰锁竞争的征象,大大提升读写性能和集群稳定性。(从 Doris 1.1.5 版本开始,增加了Tcmalloc 简化设置,可将众多 Tcmalloc 参数归约到参数memory_mode中,compact 为节省内存模式,performance 为性能模式,用户可根据实际需求进行调整)
五、总结收益

   当前 Doris 的生产集群为 3 FE + 9 BE 组合, 已导入集团存量和增量数据的 60%以及部门DW 数据生成,3 副本共占 44.4TB 的存储。

    依赖Doris 自身优异特性及其生态圈资助我们快速构建了一套新的流批一体数据架构,平均天天实时入库的数据量达到上亿规模,同时支持上万个调理任务平稳运行,相比早期架构单表查询服从提升近 5 倍,数据导入服从提升近 2 倍,内存资源使用率明显淘汰。除此之外,Doris 以下优势也是我们快速构建数据架构的重要推动力:

六、未来规划

     联合当下业务场景的考虑,未来将引入数据湖进行非结构化和结构化数据一体存储,进一步完善流批一体架构。


 参考文章:
打破数据孤岛,Apache Doris 助力纵腾集团快速构建流批一体数仓架构|最佳实践

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4