Apache Doris 在美团外卖数仓中的应用实践现了低成本生产与高效查询的平衡。并以此分析不同业务场景下,基于Kylin的MOLAP模式与基于 Doris引擎的ROLAP模式的适用性问题。希望能对大家有所启发或者帮助。 本文侧重于以Doris引擎为“发动机”的数仓生产架构的改进与思考。在开源的大环境下,各种数据 引擎百花齐放,但由于业务的复杂性与多样性,目前并没有哪个引擎能够适配所有业务场景,因 此希望通过我们的业务实践与思考为大家提供一些经验参考。美团外卖数仓技术团队致力于将数 汇总数据的交互 业务团队日常经营分析最典型的场景就是各种维度下的自定义查询,面对如此灵活可变、所见即 1 / 8 Apache Doris在美团外卖数仓中的应用实践 Spark大数据博客 - https://www.iteblog.com 所得的应用场景,美团平台使用Kylin作为公司的主要MOLAP引擎。MOLAP是预计算生产,在增 擎。MOLAP是预计算生产,在增 量业务,预设维度分析场景下表现良好,但在变化维的场景下生产成本巨大。例如,如果使用最 新商家类型回溯商家近三个月的表现,需要重新计算三个月的Cube,需花费几个小时,来计算近 TB的历史数据。另外,应对非预设维度分析,MOLAP模型需要重新进行适配计算,也需要一定的 迭代工作。 明细数据的交互 业务分析除了宏观数据之外,对明细数据查询也是一种刚需。通常大家会选择MySQL等关系型DB0 码力 | 8 页 | 429.42 KB | 1 年前3
SelectDB案例 从 ClickHouse 到 Apache Doris作为搜索/圈选引擎。 应用层:根据场景创建 DataSet,作为逻辑视图从大宽表选取所需的标签与指标,同 时可以二次定义衍生的标签与指标。 存在的问题: 数仓层:不支持部分列更新,当上游任一来源表产生延迟,均会造成大宽表延迟, 进而导致数据时效性下降。 加速层:不同的标签跟指标特性不同、更新频率也各不相同。由于 ClickHouse 目前 更擅长处理宽表场景,无区别将所有数据导入大宽表生成天的分区将造成存储资源 (tagset)和指标集(metricset) 来发起查询。 对于数据分析师来说,可统一在语义层定义和创建衍生的指标和标签,解决了定义 口径不一致、管理和使用难度较高的问题。 对于业务来说,无需耗费过长时间考虑什么场景应选择哪个数据集使用,语义层对 标签和指标透明统一的定义提升了工作效率、降低了使用成本。 存在的问题: 从架构图可知,标签和指标等数据均处于下游位置,虽然标签与指标在语义层被显式定义, 但仍然 从上文已知,为更好地实现业务需求,数据架构演进到 4.0 版本,其中 Apache Doris 作为 分析加速场景的解决方案在整个系统中发挥着重要的作用。接下来将从场景需求、数据导入、 查询优化以及成本优化四个方面出发,分享基于 Doris 的读写优化经验,希望给读者带来 一些参考。 场景需求 6 目前我们有 800+ 标签, 1300+ 指标,对应 TDW 中有 80 + Source0 码力 | 12 页 | 1.55 MB | 1 年前3
Doris的数据导入机制以及原子性保证适用于高并发、低延时下的多维分析、实时报表等场景 • 由百度自研,2017年开源,2018年贡献给Apache社区后更名为 Apache Doris 系统定位 • 百度内部统称其为“百度数据仓库Palo”,同时百度云上提供Palo的企业级托管版本 发展历程 01 02 03 • 1.0版本正式上线 • 应用于百度凤巢统计报表的 需求场景,上线后数据更新 频率从天级提升至分钟级 2008 • 主从架构,不依赖任何其他组件 • FE负责解析/生成/调度查询计划 • BE负责执行查询计划、数据存储 • 任何节点都可线性扩展 01 Doris 简介 导入的问题 02 典型应用场景——OLAP分析 数据源 数据应用 数据存储 对象存储BOS OLTP WEB端日志 移动端日志 本地文件 数据分析 业务应用 实时大屏 多维报表 自助查询 用户画像 Doris 多源数据访问:ES、MySQL • 通用协议输出:JDBC、ANSI SQL • 多种数据格式支持: 文本、PARQUET、ORC 04 使用案例 导入方式 04 使用案例 导入方式 同步/异步 场景 接口 Broker Load 异步 HDFS、BOS对象存储 MySQL Routine Load 异步 Kafka MySQL Stream load 同步 本地文件,数据流 HTTP Insert0 码力 | 33 页 | 21.95 MB | 1 年前3
百度智能云 Apache Doris 文档HLL(HyperLogLog) 类型是一个二进制类型。HLL 类型只能用于聚合类型的表(Aggregation Table),并且必须指定聚合类型为 HLL_UNION。 HLL 类型主要用于非精确快速去重场景下,对数据进行预聚合。 HLL列只能通过配套的 hll_union_agg、hll_cardinality、hll_hash 进行查询或使用。 BITMAP 数据类型 BITMAP 数据类型 BITMAP 类型是一个二进制类型。BITMAP 类型只能用于聚合类型的表(Aggregation Table),并且必须指定聚合类型为 BITMAP_UNION。 BITMAP 类型主要用于精确去重场景下,对数据进行预聚合。同时也可以用于如用户画像场景存放用户ID等。 BITMAP 列只能通过配套的 BITMAP 函数进行查询和使用。 mysql> select cast(1234 as bigint); mysql> 操作中的查询部分时,必须指定 和 部分。 4. 过滤阈值 与其他导入方式不同,INSERT 操作不能指定过滤阈值( )。默认的过滤阈值为 1,即素有错误行都可以被 忽略。 对于有要求数据不能够被过滤的业务场景,可以通过设置 会话变量 为 来确保当有数据被过滤掉的 时候, 不会被执行成功。 5. 性能问题 不见使用 方式进行单行的插入。如果必须这样使用,请将多行数据合并到一个 INSERT0 码力 | 203 页 | 1.75 MB | 1 年前3
共 4 条
- 1













