DataFunSummit2023 OLAP@火山EMR的最佳实践 演讲人:琚克俭-火山引擎-研发工程师 •EMR产品概述 •EMROLAP云原生 •EMROLAP客户案例分析 •EMROLAP未来规划 EM#%&'()*+ƒ- !DC$ž&'ž() 使用EMR产品,延续开源架构技术栈,并协同开源大数据生态与火山生态 我们提供 -成熟稳定的社区版本:加持了内部实践优化,搬迁IDCCDH/HDP及他云类EMR产品 -火山生态集成:EMR+DataLeap+DataSail -迁移工具与最佳实践方案 ž*+,. 基于EMR云原生存算分离架构解决客户计算和存储耦合导致的资源闲置与成本问题 我们提供 -存算分离:先进的存算分离架构,自研透明加速层 -冷热分层:冷热温分层存储,节约存储成本 -统一元数据:全托管的HMS服务,构建数据湖多引擎集中化的元数据层 /0,12.134 5678&9:;< 解决客户被私有架构或开源魔改产品Lockin、无法二次技术创新的难题(如迁移MC) 我们提供 -100%开源兼容:所有优化都以不改变开源兼容度为前提,确保业务可迁出 -开放环境:通过引导操作或登陆ECS安装第三方包 -技术共建:基于开源社区,与客户业务需求共建共 基于EMRStarRocks或Doris ,提供十万级QPS的查询分析和Serving能力 我们提供 -开源优化:内部大规模实践,开源内核深度优化 -数据湖仓:支持对Hudi、Iceberg、Hive查询分析 -异构迁移:提供ADB、Holo 、Impala、Kylin等迁移工具与最佳实践 DataFunSummit2023 •EMR产品概述 •EMROLAP云原生 •EMROLAP客户案例分析 •EMROLAP未来规划 OLAP云原生:企业级运维(半托管+全托管) 一站式云托管,帮助用户轻松构建云上企业级大数据平台,降低运维门槛,助力企业快速形成大数据分析能力。 集群管理 快速创建集群,分钟级发放 支持按量付费与包年包月 服务管理 服务组件各项指标呈现 支持多种服务个性化操作 节点管理 节点组扩缩容,磁盘扩容、支持节点组弹性伸缩 引导操作 按需执行自定义操作 按需安装第三方软件包 日志中心 服务组件日志的针对性展现与搜索,操作日志管理 配置中心 保存集群创建模版与数据库连接信息,快速创建集群 用户权限 交互式权限管理 弹性伸缩 按时间规则弹性 按集群负载弹性 FE FE+ FE+ BE mini FE BE OLAP云原生:极致弹性 FE高可用 FE BEBEBE … FEFE BEBEBE … 扩缩计算存储扩缩计算能力 支持多种伸缩场景 弹性扩展:根据业务需求自动调整其弹性计算资源,满足业务需求高峰增长 弹性收缩:在业务需求下降时自动缩减ECS实例以节约成本 FE 停机不收费:保证数据可恢复的前提下,能够做好成本管理 Stateless集群:集群释放后,集群配置信息保存模 版,用于快速恢复 灵活极致弹性: 高可用:保证业务无中断,性能不受影响 自动平衡:数据自均衡 灵活扩容:支持水平扩容和垂直扩容支持升配和降配 削峰填谷:基于时间和负载的弹性伸缩方式 节点异构:多种节点组支持异构服务器 OLAP云原生:成本管理 1.支持StarRocks/Doris与Hadoop/Spark混合部署 EMRCore节点组 BE Broker EMRTask节点组 BE Broker EMRMaster节点组 EMRMaster节点组 优势平衡 生态系统 OLAP 大数据混布 SR/Doris 集群 火山TOS EMRHadoop/Hive/Spark/Flink RM NM …… HadoopTask节点组 YARN… HadoopCore节点组 DNYARN… OLAPTask节点组 Broker BE OLAPCore节点组 Broker BE FE ZK HMS FE 成本降低 独立部署 资源隔离性高,稳定性有更好保证 资源利用率降低 成本难控制,Master节点资源存在部分浪费 Master混合部署 只混布Master资源既保证资源利用率,又保证计算资源隔离性,保证生产稳定 OLAP云原生:成本管理 2.支持StarRocks/Doris智能的冷热数据管理 表、分区存储策略定义 成本管理 数仓开发者能够直接对表的生命周期,冷热策略做DDL管理 冷热数据可以利用SSD/HDD/TOS不同的 存储介质 热数据 HDD SDD 本地存储 …… BE BE BE BE FE外部存储 性能平衡 冷数据自动cache,远端数据可以自动加载到本地 LRU的淘汰策略 接入层 BI分析 报表 数据科学 人工智能 标准 低频 归档 深归档 策略删除 元数据管理 数据自动迁移 温冷数据 TOS 基于访问/修改时间、频次、分区值、DDL 多样设置策略 表级别设置存储介质,冷却时间,副本数 分区自动迁移 OLAP云原生:面向查询的智能分析 面向业务人员,提供作业视角的管理;支持通过任何方式提交的任务的管理;支持多集群和已释放集群的作业管理。 作业列表 跨引擎、集群的作业总览 支持查看历史集群、历史作业 诊断分析 图表查看历史作业的统计信息 帮助用户任务治理、成本优化 作业详情 更细致、更全面的作业信息 控制台查看,快捷易用 用户作业 交互式创建库和用户 •EMR产品概述 •EMROLAP云原生 •EMROLAP客户案例分析 •EMROLAP未来规划 字节跳动内部实践:OLAP部分应用场景 1k+物理节点 8w+物理核 1.5PB+物理内存 5k+单集群峰值QPS 1k+单集群表数量 某智能驾驶云Doris监控 •IOT场景,数据实时采集分析 •数据链路从Kafka->Flink->Doris 抖音直播某活动榜单计算 •Doris内数仓,周期调度执行SQL,替换原有复杂的常驻Flink实时任务,可维护性变高 •从FlinkTask到DorisSQL减少计算成本,原2-10Core/Task到Doris中后Query资源共享 营销引擎 •离线和增量做实时关联查询 •单表超1TB数据 DataFunSummit2023 客户案例:某新广告客户(实时场景) 业务库媒体平台 高性能查询 高频更新 数据存储和查询计算 全域数据集成DataSail |DataSail:全量增量一体数据同步 |Doris:向量化查询应对多表Join、聚合分析 |ES:高频更新与索引查询 客户背景 使用开源的Greenplum,存放近3个月的数据,用于在线报表查询。 在线和离线数据存储在不同地方,读取离线数据需要先读取到在线存储中。 核心痛点 保障查询性能,牺牲实时性,每15分钟批量写入最新数据到在线数据存储 实时更新能力 在线报表业务的联合多维分析性能不佳。 产品方案 EMRDoris统一对外提供查询 EMROpenSearch保证数据高QPS的实时更新能力 通过Datasail实时同步MySQLCDC和Kafka数据到Doris和OpenSearch 中,保证数据实时性。 DataFunSummit2023 ES连接器优化--catalog建表优化 无需建表 Catalog方式只需要定义源端资源,即可实现对源表使用 强强联合 ES实时高QPS更新能力 实现ES多索引关联查询 Doris、StarRocks与ES外表实现更复杂的全文索引过滤 DorisonES能够综合OLAP的分析优势和ES的更新能力及全文索引能力,提供更加完善的分析解决方案 EsExternalTable1 EsExternalTable2 EsExternalTable3 方式一: 外表方式,事先创建外表 方式二 ES Catalog Catalog推荐 ESIndex1 ESIndex1 ESIndex1 ESIndex… ES连接器优化-下推优化 ProjectPrune 减少输出列 FilterPushdown 利用ES本身aggregation AggPushdown 利用ES本身aggregation RuntimeFilterjoin优化 Join的条件在where表达式中同时满足条件列isnotnull,outerjoin可转换成innerjoin Runtimefilter下推的场景更丰富 ProjectPruneFilterPushdown Doris ElasticSearch Outerjoin->InnerJoin AggPushdown RunTimeFilterPushdown 资源隔离(读写分离) UserA UserC UserB 用户需求:轻量ETL+OLAP查询能够在统一在一个系统(主要是读写分离),但资源隔离(尤其是MEM的使用)是个比较大的问题 Loaddata Query 生成三副本落到两个资源组中 BE replica1 groupA •UserA只能使用groupA •UserB只能使用groupB •UserC只能使用groupB,且限制query使用的内存和CPU个数 按照资源组实现物理隔离 BE BE replica2 replica3 groupB 相同标签的BE属于同一个资源组件限制各类查询任务对计算资源的消耗,降低任务间资源降低影响 单query级别细粒度资源限制 采用内存和CPU资源进行资源限制,超过阈值时,查询直接终止 支持租户级别的Query资源限制 针对用户设置内存使用 DataFunSummit2023 数据迁移:MySQLLoad本地文件导入 用户需求:大量历史周期性的mysqljbdcsql导入任务+临时性的人群信息导入 SQLServer Doris PostgreSQL CSVFile MySQL MySQLLOAD 特性说明 MySQLLoad是标准的MySQL语法,通过SQL方式导入文件 LOAD语法常用各个引擎之间的数据同步: 1、TP系统例如MySQL或者PG,将表中数据导出为文本格式 2、再通过LOAD语法导入其他引擎之中 支持MySQLLoad语法,实现无缝对接从TP到AP的数据传输 语法示例: #client_local.csv导入到testdb.t1表中 LOADDATALOCAL INFILE'client_local.csv'INTOTABLEtestdb.t1 COLUMNSTERMINATEDBY'\t'LINESTERMINATEDBY'\n'IGNORE1LINES DataFunSummit2023 其他最佳实践示例 序号 优化手段 优化提升方法 实践沉淀 1 增加advertiser_id条件 业务优化:查询过滤条件中增加advertiser_id条件,进一步减少查询数据量,提高QPS引擎优化:开发inpredicate优化,对in表达式中包含多个值,根据tablet裁剪后再下发至BE,减少BE计算量。 业务优化实践开发规范产品特性增强 2 按日分区 对数据进行按日分区。单日数据维持在较小的规模。 开发规范 3 分布键设置 根据查询模式定义相应的分布键。广告平台80%以上是小广告主,小广告主查询时需要一个分片查出对应数据,我们按照advertiser_id来进行数据分片,按advertiser_id查询时可以一个分片查出所有数据,减少IO交互。 开发规范 4 ColocationJoin ColocationJoin功能,是将一组拥有相同CGS的Table组成一个CG。并保证这些Table对应的数据分片会落在同一个BE节点上。使得当CG内的表进行分桶列上的Join操作时,可以通过直接进行本地数据Join,减少数据在节点间的传输耗时。因广告业务中,adverti