干货 | 这样做,能快速构建企业级数据湖仓
本文整理自火山引擎开发者社区技术大讲堂第四期演讲,主要介绍了数据湖仓开源趋势、火山引擎 EMR 的架构及特点,以及如何基于火山引擎 EMR 构建企业级数据湖仓。
数据湖仓开源趋势
趋势一:数据架构向 LakeHouse 方向发展
支持 ACID 和历史快照,保证数据并发访问安全,同时历史快照功能方便流、AI 等场景需求。 满足多引擎访问:能够对接 Spark 等 ETL 的场景,同时能够支持 Presto 和 channel 等交互式的场景,还要支持流 Flink 的访问能力。 开放存储:数据不局限于某种存储底层,支持包括从本地、HDFS 到云对象存储等多种底层。 Table 格式:本质上是基于存储的、 Table 的数据+元数据定义。
使用体验离预期有差距:由于 Table Format 设计上的原因,流式写入的效率不高,写入越频繁小文件问题就越严重; 有一定维护成本:使用 Table Format 的用户需要自己维护,会给用户造成一定的负担; 与现有生态之间存在gap:开源社区暂不支持和 Table format 之间的表同步,自己做同步又会引入一致性的问题; 对业务吸引不够:由于以上三点原因,Table Format 对业务的吸引力大打折扣。
趋势二:计算向精细化内存管理和高效执行方向发展
第一,Native 化。
Spark:去年官宣的 Photon 项目,宣称在 tpcs 测试集上达到 2X 加速效果。 Presto:Velox native 引擎。Velox 引擎现在不太成熟,但是根据 Presto 社区官方说法,可以实现原来 1/3 的成本。由此可猜测,等价情况下能获得 3X 性能提升。
第二,向量化。
趋势三:多模计算,即组件边界逐渐模糊,向全领域能力扩展
趋势四:分析实时化
(近)实时引擎 ClickHouse:近实时 OLAP 引擎,宽表查询性能优异 Doris:近实时全场景 OLAP 引擎 Druid:牺牲明细查询,将 OLAP 实时化,毫秒级返回 流引擎 Flink:流计算逐步扩大市场份额 Kafka SQL:基于 Kafka 实现实时化分析 Streaming Database:Materialize 和 RisingWave 在开发的一种产品形态,效果类似于 Data Bricks 的 Data Live Table
整体数据链路复杂:即使是开发一个小的 APP,要搭建整个数据链路也很复杂,比如数据回流需要写数据库;日志要回流,要基于回流数据做指标计算,回流数据还需要转储以及 CDC;基于转储数据还要做 ETL 分析。
湖仓需求多样:如果存在机器学习需求,即要完成特征工程等一系列步骤,这些步骤也催生了数据湖仓的多种需求,包括支持批式、流失计算和交互式数据科学等各种场景。
湖仓数据来源广泛:包括业务交易数据、业务资产数据、用户行为数据、上下游产生的中间数据等。
数据开发中参与角色众多:包括管理者、一线业务人员、业务开发、基础设施参与人员等等。
企业往往需要根据平台进行二次开发:基础设施无法直接对接业务,根据业务特点灵活定制平台,解决方案平台化、产品化等。
基于火山引擎 EMR 构建企业级数据湖仓
火山引擎EMR
开源兼容&开放环境:100% 兼容社区主流版本,满足应用开发需求;同时提供半托管的白盒环境,支持引导操作与集群脚本能力。 引擎企业级优化:引入了 Spark、Flink 等核心引擎的企业级特性优化及安全管理。 Stateless 云原生湖仓:把状态外置做成存算分离的架构。 云上便捷运维:提供一站式云托管运维的能力与组件,让用户能够分钟级地创建和销毁集群,同时提供精细化的集群运维监控告警能力。
Stateless、瞬态集群
Hive Metastore Service: 中心化元数据托管服务
持久化的 History Server 服务
独立于集群之外运行的常驻服务; 提供持久化的 History 数据存储。当该集群销毁之后,历史数据还可保存 60 天; 提供原生 History Server UI,用户不会感觉生疏; 租户间 History 数据隔离; 更友好的使用体验:相对于组件内置 History Server, 独立服务需要绑定公网并开放 8443 端口才能访问,Public History Server 真正做到了开箱即用,无需其它额外配置。同时集成 IAM SSO 准入认证,通常情况下用户从 EMR 管控端跳转到 Public History Server 可以实现无感 SSO 认证登录,无需再次输入用户登录凭证。
存算分离,弹性伸缩
火山引擎 EMR 具备 CloudFS 和 TOS 两个数据存储层,冷数据可以存储在对象存储 TOS 上。CloudFS 则构建在 TOS 层之上,提供兼容 HDFS 语义存储,提供缓存加速功能,可以把温数据放在 CloudFS 。在引擎内部内置一些本地缓存,用于缓存热数据。分层缓存能够弥补企业上云之后,数据因保存在对象存储所造成的性能损失。另外 Cloud FS 提供 HDFS 的语义,可便于开源组件切入。
云托管,易运维
用户友好
案例 1:多元化分析平台
案例 2:高性能实时数仓
案例 3:实时计算
案例 4:在线机器学习
在在线机器学习场景下,数据通过离线的方式存到数据湖仓。离线数据可以通过 Spark 进行特征抽取及特征工程,并把提取出来的特征返存到湖仓或者 HBase 等键值存储。
基于离线的数据可以进行离线训练,如通过 Spark MLlib 搭建传统的机型学习模型,或者通过 TensorFlow 进行深度模型的训练,把深度训练出来的模型部署到模型服务中。在在线方面,数据通过 Kafka 流入 Flink 进行在线特征抽取,然后把在线特征放在 Redis。同时在线部分的增量数据可用 TensorFlow 进行增量训练,把增量模型也导入模型服务里。模型服务根据原来批式训练出来的模型和增量模型做成实时的 AI 服务,可满足实时风控等对时间要求比较高的场景。
火山引擎EMR湖仓方向未来规划
数据加速:期望进一步加速数据分析。企业上云之后,痛点之一为数据放到对象存储之后性能是否会下降。要解决该问题,主要在数据缓存(包括文件级 Cache 和 Page 级 Cache)和索引方面(包括 Bitmap、Bloom Filter)做一些工作。 解决刚需痛点场景:分析 CDC 数据和多路径,解决数据湖仓割裂的问题。对于后者,可以尝试: Doris 直接加速访问 HMS 中的 Hive/Iceberg/Hudi 表,实现湖仓互通。 持续优化基于 Iceberg 数据湖方案,使得性能接近仓的体验。 拥抱开源:希望将工作合入到开源社区,包括 Data Block Alluxio 的功能和性能优化;Doris MultiCatalog、元数据服务化、冷热分离优化;Iceberg 二级索引等。 AI4Data(数据智能管家):我们长期规划是成为一个智能数据管家,具体包括: 自动诊断高频低性价比 SQL 及作业; 自动优化用户 SQL 及作业,智能地从数据分布、Cache、Index、物化视图等维度来优化用户账单; 智能运维: 集群负载过高时,自动扩容;负载降低时,自动收缩。 集群节点故障时,做到用户完全无感知地 Failover。 自动地实现数据均衡分布。 产品打磨:在产品侧,第一目标是打磨产品,先把产品底座做坚实,并在管控方面(包括创建集群体验优化、弹性伸缩优化等)、作业开发与管理方面与周边生态方面做进一步打磨。
产品介绍
火山引擎 E-MapReduce
支持构建开源Hadoop生态的企业级大数据分析系统,完全兼容开源,提供 Hadoop、Spark、Hive、Flink集成和管理,帮助用户轻松完成企业大数据平台的构建,降低运维门槛,快速形成大数据分析能力。后台回复数字“3”了解产品
活动推荐
扫码进群、观看直播、赢取好礼!