您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[DORIS SUMMIT]:Hive数仓数据迁移,Apache Doris离线实时一体数仓搭建 - 发现报告

Hive数仓数据迁移,Apache Doris离线实时一体数仓搭建

2024-04-24杨志宇DORIS SUMMIT匡***
AI智能总结
查看更多
Hive数仓数据迁移,Apache Doris离线实时一体数仓搭建

杨志宇大数据开发工程师 背景介绍01架构演进02最佳实践03未来规划04 目录 背景介绍 数仓职能的基本介绍 01数据集成:把多个数据源的数据整合到一起,形成统一的数据存储链路。 02数据存储:存储大量的数据,对于一些业务大表日志同步到数仓进行备份,定时删除业务库历史日志数据,减少业务库负载。 03数据查询:项目内部大表大范围在数仓上进行查询,分担业务数据库压力。 04数据处理:对数据进行清洗转化聚合处理,将数据转化为统一的格式,提高数据利用效率。 05数据分析:根据需求进行业务分析,为业务决策提供数据支持. 历史架构 痛点 •组件太多,架构复杂,运维困难•对于开发者技能要求高,研发成本高•查询效率低,存储成本高+ 架构升级的核心诉求 组件减少:降低架构复杂度,降低运维成本 统一查询:降低学习和开发成本 效率提升:查询支持秒级别返回 节约存储:历史数据能够存储在oss,降低存储成本 02架构演进 离线实时一体化数仓 基于ApacheDoris的离线实时一体化数仓 •实时离线一体,架构简单,方便集群维护和数据治理 应用收益 1、60%的数据存储在对象存储上,数仓投入成本减少了50%~60% 2、查询结果返回达到秒级别,简单查询甚至达到毫秒级别,大大提高了用户体验 4、集群故障追踪简单,不需要在多个组件上去查找问题,运维成本大大降低 3、离线和实时数据进行整合,减少数据处理链路长度,代码复杂度和任务失败率 03最佳实践 冷数据查询优化 问题定位 表现:对象存储上面的大表冷数据查询慢,需要3-5分钟才能返回结果原因分析: •天数据30GB左右,按天分区,每个区只分了4个桶,tablet达到8~10GB•高频查询字段,例如物品id,角色id等,未放在key中 优化措施 •重新设计表,将tablet大小规划到1~2GB,单日数据分为25个桶 •充分利用前缀索引的功能,将高频查询字段根据查询频率从高到低,依次从左到右放入key中 •对于经常查的字段,使用布隆过滤器 结果 •大表冷数据查询能达到秒级别的返回速度,查询效率提升数十倍 游戏日志接入重构 结果 •Flink消费Kafka写入Doris实时数仓,数据延迟在秒级别•实时日志每日接入数据量100GB+,单表数据查询在毫秒和秒级别,成功替换老版内部业务日志数据查询功能,减少服务器成本•日志数据json结构修改,不需要修改库表结构,Flink任务不需要上下线,减少开发和运维成本 数据治理 问题 •数据源众多,导致ODS层表多,命名不规范复杂•表所有字段都为string类型,浪费存储•有些业务存在分库分表情况,数据库维护时会进行合库和分库操作,导致任务拉取失败 解决措施 •统一管理数据源•规范ODS表命名规则:按照{source_name}_{db_type}_{源表名}_{di/df/ri/rf}格式命名•对源库字段类型和Doris字段类型进行映射,自动化建表•数据同步数据源信息懒加载:任务启动的时候,根据source_name和db_type,取ip,port和dbname信息 04未来规划 未来规划 1.调研3.0版本的存算分离架构,考虑将数据全部存储到对象存储 2.使用异步物化视图,减少数据链路和代码维护 3.调研倒排索引,Elasticsearch数据迁移,持续优化存储成本 ThanksforWatching!