Apache Doris 在美团外卖数仓中的应用实践现了低成本生产与高效查询的平衡。并以此分析不同业务场景下,基于Kylin的MOLAP模式与基于 Doris引擎的ROLAP模式的适用性问题。希望能对大家有所启发或者帮助。 本文侧重于以Doris引擎为“发动机”的数仓生产架构的改进与思考。在开源的大环境下,各种数据 引擎百花齐放,但由于业务的复杂性与多样性,目前并没有哪个引擎能够适配所有业务场景,因 此希望通过我们的业务实践与思考为大家提供一些经验参考。美团外卖数仓技术团队致力于将数 验参考。美团外卖数仓技术团队致力于将数 据应用效率最大化,同时兼顾研发、生产与运维成本的最小化,建设持续进步的数仓能力,也欢 迎大家多给我们提出建议。 数仓交互层引擎的应用现状 目前,互联网业务规模变得越来越大,不论是业务生产系统还是日志系统,基本上都是基于Hado op/Spark分布式大数据技术生态来构建数据仓库,然后对数据进行适当的分层、加工、管理。而 在数据应用交互层面,由于时效性的要 汇总数据的交互 业务团队日常经营分析最典型的场景就是各种维度下的自定义查询,面对如此灵活可变、所见即 1 / 8 Apache Doris在美团外卖数仓中的应用实践 Spark大数据博客 - https://www.iteblog.com 所得的应用场景,美团平台使用Kylin作为公司的主要MOLAP引擎。MOLAP是预计算生产,在增0 码力 | 8 页 | 429.42 KB | 1 年前3
SelectDB案例 从 ClickHouse 到 Apache Doris作为搜索/圈选引擎。 应用层:根据场景创建 DataSet,作为逻辑视图从大宽表选取所需的标签与指标,同 时可以二次定义衍生的标签与指标。 存在的问题: 数仓层:不支持部分列更新,当上游任一来源表产生延迟,均会造成大宽表延迟, 进而导致数据时效性下降。 加速层:不同的标签跟指标特性不同、更新频率也各不相同。由于 ClickHouse 目前 更擅长处理宽表场景,无区别将所有数据导入大宽表生成天的分区将造成存储资源 (tagset)和指标集(metricset) 来发起查询。 对于数据分析师来说,可统一在语义层定义和创建衍生的指标和标签,解决了定义 口径不一致、管理和使用难度较高的问题。 对于业务来说,无需耗费过长时间考虑什么场景应选择哪个数据集使用,语义层对 标签和指标透明统一的定义提升了工作效率、降低了使用成本。 存在的问题: 从架构图可知,标签和指标等数据均处于下游位置,虽然标签与指标在语义层被显式定义, 但仍然 数据架构 4.0 在数据架构 3.0 的基础上,我们对语义层进行更深层次的应用,在数据架构 4.0 中,我们 将语义层变为架构的中枢节点,目标是对所有的指标和标签统一定义,从计算-加速-查询实 现中心化、标准化管理,解决数据管理机制割裂的问题。 5 语义层作为架构中枢节点所带来的变化: 数仓层:语义层接收 SQL 触发计算或查询任务。数仓从 DWD 到 DWS 的计算逻 辑0 码力 | 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 Analyzer FE Follower 数据版本 N 事务状态 PREPARE 事务管理 1.Begin Txn Phase 1 Execute Txn • 接受查询计划 • 初始化ScanNode • 初始化 TableSink和 tablet writer • Extract & Transform & Load • 汇报导入结果 03 Doris 中的导入 BE 未生效数据 生效数据0 码力 | 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













