前言
云原生数据仓库产品AnalyticDB MySQL数仓版,是阿里云基于集团电商双11业务百亿次在线分析的最佳实践,推出的业界首款兼容MySQL协议,且性能全球第一(TPC-DS 10TB)的云数据仓库产品。企业只需要招一些具备SQL技能的数据分析师,搭配上一个QuickBI/DataV/自研可视化报表,就可以快速将企业的关键指标实时可视化展示,帮助企业转型成数据驱动决策的公司。
业务挑战:数据一致性和时效性较差
跟客户一起进行业务创新的过程中,我们发现随着业务客户数增长、业务复杂度变高、存量数据积累等原因,数据规模从GB级增长到接近PB级,数据格式也从TP数据源为主的结构化数据,增加了很多半结构化(JSON等)、非结构化数据。客户通常会先在数据湖中做一次离线处理,对数据进行清洗、过滤、规整等预处理,再通过数据同步工具,将数据同步到数据仓库AnalyticDB中做在线分析。
数据一旦在多个系统间进行同步,就难免会因为数据同步工具的稳定性,带来数据一致性、时效性、数据冗余等问题。比如「数据工程师」在数据湖中看到的ads表,和「数据分析师」在数据仓库中看到的ads表的数据可能是不一样的。数据的正确性,是数据分析基础中的基础。只有避免数据同步,用「一份数据」同时支撑低成本离线处理和高性能在线分析,才能真正意义上解决数据正确性问题。
今年的云栖大会上(11月4日数据库分论坛),我们重磅推出了经过1年多时间沉淀和打磨的「湖仓版」,来一起看看AnalyticDB产品对于「湖仓一体」的思考和实践。
湖仓版介绍
这是湖仓版的产品大图,橙色部分是「湖仓版」相对于「数仓版」新增的功能,灰色部分是「湖仓版」相对于「数仓版」迭代升级的功能。
左框是我们的自研引擎,包括「羲和计算引擎」和「玄武存储引擎」。右框是我们集成的开源引擎,包括「Spark计算引擎」和「Hudi存储格式」,希望借助开源的能力提供更丰富的数据分析场景。同时打通自研和开源之间的互相访问,提供更一体化的体验。
我们先来聊一聊自研引擎如何真正实现基于「一份数据」和「融合引擎」的「湖仓一体」能力
自研引擎:做强核心
存储层:只需一份全量数据,满足离线在线场景
「一份数据」是指一份全量数据。这里的难点是解决既要(高性能在线分析)又要(低成本离线处理)的问题,因为本身这两种场景对于存储的诉求是比较不一致的。在线分析场景希望数据尽量在高性能存储介质上提高性能,离线处理希望数据尽量在低成本存储介质上降低存储成本。
我们给出的解决方案是,首先将一份全量数据存在低成本高吞吐存储介质上,低成本离线处理场景直接读写低成本存储介质,降低数据存储和数据IO成本,保证高吞吐。其次将实时数据存在单独的存储IO节点(EIU)上,保证「行级」的数据实时性,同时对全量数据构建索引,并通过Cache能力对数据进行加速,满足百ms级高性能在线分析场景。
「湖仓版存储架构图」
湖仓版的「一份数据」方案,很好地解决了因为数据同步,带来的数据一致性和数据时效性问题。
计算层:羲和融合计算引擎,智能选择计算模式
支撑高性能在线分析的背后,计算部分主要是自研的「羲和计算引擎」MPP模式,但这种流式计算模式并不适合离线处理低成本和高吞吐的特点。所以,湖仓版我们在「羲和分析计算引擎」中新增加了BSP模式,通过DAG进行任务切分,分批调度,满足有限资源下大数据量计算,支持计算数据落盘。
但我们觉得MPP模式和BSP模式对于普通用户来说,理解和学习成本太高了,所以我们把「羲和计算引擎」升级成「羲和融合计算引擎」,同时提供MPP模式和BSP模式,并提供自动切换能力。自动切换能力是指当查询使用MPP模式无法在一定耗时内完成时,系统会自动切换为BSP模式进行执行。
极致弹性:千核秒级弹性能力,完美贴合业务负载
云原生的最大优势就是弹性,湖仓版通过全新基于神龙 + ECS/ECI构建的两层管控底座,提供更充足的库存保证,保证弹得起;满足了弹得起,接下去就是要弹得快。如果启动一个离线Query的资源需要10分钟,这样的效率使用体验不好,且会有较大的额外成本。湖仓版除了适合在线分析场景的「分时弹性」模式,新推出了适合离线处理场景的「按需弹性」模式,弹性速度上可以做到1200ACU(1ACU约为1Core4GB)规模的Query,弹性时间在10s左右;最后,借助WorkLoad Manager(WLM)和自感知业务负载技术,保证弹得准,贴合业务负载,降低资源成本。
开源集成:做精场景
自研是打造技术深度的基础,但同时我们积极拥抱开源,满足已经生长在开源生态上的客户可以更平滑地使用湖仓版。外表类型,在Parquet/ORC/JSON/CSV等append类型数据格式的基础上,新增支持批量更新的Hudi数据格式,帮助用户更好地低成本接入如CDC等数据。计算引擎,在做深「羲和融合计算引擎」的基础上,新增开源活跃度较高的Spark引擎,满足用户对于复杂离线处理和ML机器学习等需求。
优势总结
为了让大家更好地记住湖仓版的优势,我们用程序员最熟悉的数字「1024」进行优势总结。
1:是指一份数据,避免数据同步带来的数据一致性、时效性、冗余等问题;
0:是指灵活弹性,用Serverless的方式贴合业务负载,保证查询性能,降低资源成本;
2:是指湖仓版同时满足低成本离线处理和高性能在线分析;
4:是指4个统一,统一计费单位、统一数据管道、统一数据管理、统一数据访问。这一部分,因为篇幅原因,我们将在下一篇文章中展开介绍。
未来展望
未来展望
今天,我们推出了AnalyticDB MySQL湖仓版,完成了从仓到湖,打造人人可用的云原生一站式数据分析平台的第一步。未来,我们还将在以下几个方面继续打磨和增强:
- 云原生弹性:
- 存储提供Serverless单副本模式,降低存储成本,提供更好的弹性能力。
- 在线分析提供Mutil-Clusters弹性模式,更好地支撑高QPS场景。
- 自研融合计算引擎:
- 自适应执行框架:根据运行时信息,更精准地动态调整Plan,提升查询性能。
- 统一执行模型:在自适应执行框架的基础上,引入Bubble Execution Model来统一执行模型(MPP/BSP),同时Bubble的切分和调度考虑运行时的集群资源和负载特征。降低用户选择执行模型成本,提升查询性能。
- Spark引擎:
- 提供交互式开发调试Notebook能力
- 提供更多的内置Connector连接更多的数据源
公测说明
AnalyticDB MySQL湖仓版从7月份开始,历时4个月的邀测后,11月1日正式开始公测。其中一个邀测客户是哔哩哔哩,来自B站的陈浩也在云栖大会上分享了猫耳业务使用AnalyticDB湖仓版的价值和过程。“B站猫耳FM业务通过引入阿里云AnalyticDB MySQL湖仓版,替换原有开源离在线数据仓库,大幅降低数据仓库运维成本,并且基于AnalyticDB MySQL的分时弹性能力实现资源按需伸缩,实现资源高效利用。目前,猫耳FM业务实现数据离在线处理效率从原来的在 T+1 或 H+1大幅提升至毫秒级,支撑打赏榜排名实时刷新,提升用户参与积极性,通过提高广播剧的评论/弹幕活跃度,促进用户停留时长与付费转化。”(新华网报道)对于低成本离线处理ETL有需求,同时又需要使用高性能在线分析支撑BI报表/交互式查询/APP应用的用户,可以通过此链接进行公测申请:https://survey.taobao.com/apps/zhiliao/pLg_D88Cj
/ End /