Apache Doris 在美团外卖数仓中的应用实践配所有业务场景,因 此希望通过我们的业务实践与思考为大家提供一些经验参考。美团外卖数仓技术团队致力于将数 据应用效率最大化,同时兼顾研发、生产与运维成本的最小化,建设持续进步的数仓能力,也欢 迎大家多给我们提出建议。 数仓交互层引擎的应用现状 目前,互联网业务规模变得越来越大,不论是业务生产系统还是日志系统,基本上都是基于Hado op/Spark分布式大数据技术生态来构建数据仓库,然后对数据进行适当的分层、加工、管理。而 数据爆炸,每日使用最新维度对历史数据进行回溯计算。在Kylin的MOLAP模式下存在如下问题: 历史数据每日刷新,失去了增量的意义。 每日回溯历史数据量大,10亿+的历史数据回溯。 数据计算耗时3小时+,存储1TB+,消耗大量计算存储资源,同时严重影响SLA的稳定性。 预计算的大量历史数据实际使用率低下,实际工作中对历史的回溯80%集中在近1个月左 右,但为了应对所有需求场景,业务要求计算近半年以上的历史。 不支持明细数据的查询。 :基于实时的大规模并行计算,对集群的要求较高。MPP引擎的核心是通过将数据分散,以实现 CPU、IO、内存资源的分布,来提升并行计算能力。在当前数据存储以磁盘为主的情况下,数据S can需要的较大的磁盘IO,以及并行导致的高CPU,仍然是资源的短板。因此,高频的大规模汇 总统计,并发能力将面临较大挑战,这取决于集群硬件方面的并行计算能力。传统去重算法需要 大量计算资源,实时的大规模去重指标对CPU、内存都是一个巨大挑战。目前Doris最新版本已经0 码力 | 8 页 | 429.42 KB | 1 年前3
百度智能云 Apache Doris 文档的数据量没有上限。但是提 交过大的导入会导致运行时间较长,并且失败后重试的代价也会增加。 同时受限于集群规模,我们限制了导入的最大数据量为 ComputeNode 节点数 * 3GB。以保证系统资源的合理利用。如果有 大数据量需要导入,建议分成多个导入任务提交。 Doris 同时会限制集群内同时运行的导入任务数量,通常在 3-10 个不等。之后提交的导入作业会排队等待。队列最大长度 为 节点数量以及文件数量。备份数据分片所在的每个 Compute Node 都会参与 备份操作的上传阶段。节点数量越多,上传的效率越高。 文件数据量只涉及到的分片数,以及每个分片中文件的数量。如果分片非常多,或者分片内的小文件较多,都可能增加备份 操作的时间。 EXPORT EXPORT EXPORT Description Description 该语句用于将指定表的数据导出到指定位置。 这 操作将一个目录中的最后一个文件移走后,该目录也 会被删除。如果该目录没有被清除,用户可以手动清除。 Export 作业只会导出 Base 表的数据,不会导出物化视图的数据。 Export 作业会扫描数据,占用 IO 资源,可能会影响系统的查询延迟。 一个集群内同时运行的 Export 作业最大个数为 5。之后提交的只作业将会排队。 STREAM-LOAD STREAM LOAD STREAM LOAD Description0 码力 | 203 页 | 1.75 MB | 1 年前3
SelectDB案例 从 ClickHouse 到 Apache Doris迟, 进而导致数据时效性下降。 加速层:不同的标签跟指标特性不同、更新频率也各不相同。由于 ClickHouse 目前 更擅长处理宽表场景,无区别将所有数据导入大宽表生成天的分区将造成存储资源 的浪费,维护成本也将随之升高。 应用层:ClickHouse 采用的是计算和存储节点强耦合的架构,架构复杂,组件依赖 严重,牵一发而动全身,容易出现集群稳定性问题,对于我们来说,同时维护 实时性比较差,由于每个 Source 表产出的时间不一样,往往会因为某些延迟比较 大的 Source 表导致整个数据链路延迟增大。 开发成本较高,该方案只能作为离线方式,若想实现实时方式则需要投入开发资源 进行额外的开发。 而在 Flink 中生成宽表,链路简单、成本低也容易实现,主要流程是:首先用 Spark 将相 关 Source 表最新数据离线导入到 Kafka 中, 接着使用 Flink 这里几点小经验与大家分享: Flink 预聚合:通过主键 ID 预聚合,减少写入压力。(前文已说明,此处不再赘述) 写入 Batch 大小自适应变更:为了不占用过多 Flink 资源,我们实现了从同一个 Kafka Topic 中消费数据写入到不同 Doris 表中的功能,并且可以根据数据的大小 自动调整写入的批次,尽量做到攒批低频写入。 Doris 写入调优:针对-0 码力 | 12 页 | 1.55 MB | 1 年前3
Doris的数据导入机制以及原子性保证写入带版本 • 查询带版本 多版本机制解决读写冲突 两阶段导入保证多表原子生效 • 支持并行导入 • 有冲突时按导入顺序生效,无冲突导入时并行生效 写入带版本 查询带版本 支持并行导入 冲突时按顺序生效 (多版本机制) (两阶段导入) 事务能力保证 使用案例 04 BI Application 数据加载 数据输出 数据查询 数据导入总览 • 多源数据加载:HDFS、Kafka、本地数据 多源数据加载:HDFS、Kafka、本地数据 • 联邦数据查询:Spark • 多源数据访问:ES、MySQL • 通用协议输出:JDBC、ANSI SQL • 多种数据格式支持: 文本、PARQUET、ORC 04 使用案例 导入方式 04 使用案例 导入方式 同步/异步 场景 接口 Broker Load 异步 HDFS、BOS对象存储 MySQL Routine Load 异步 Kafka MySQL0 码力 | 33 页 | 21.95 MB | 1 年前3
共 4 条
- 1













