【云栖2023】张治国:MaxCompute架构升级及开放性解读
简介: 本文根据2023云栖大会演讲实录整理而成,演讲信息如下
演讲人:张治国|阿里云智能计算平台研究员、阿里云MaxCompute负责人
演讲主题:MaxCompute架构升级及开放性解读
活动:2023云栖大会
MaxCompute发展经历了三个阶段:MaxCompute1.0,主旨是达到大规模的数据处理能力,在性能和规模上提供给用户一个分布式处理平台;MaxCompute2.0,主旨是Serverless,强调弹性和性价比;MaxCompute3.0阶段主旨一体化,包括湖仓一体、离线实时一体化等。

在整个MaxCompute发展过程中,可以从五个维度看一下数仓的发展趋势;
- 随着现代数据驱动各个不同业务的发展,数据规模越来越大;
- 在不同规模下,应用越来越多元化,其中包括数据结构化、半结构化和非结构化,应用随着AI的兴起,AI的应用也越来越多,对数仓的要求也会越来越高;
- 数据的实时性、时效性要求越来越高,我们需要更多做数据实时大批量的流式导入、实时数仓这方面的工作;
- 对数据的准确性要求也越来越高,我们需要大规模数据治理、质量控制这方面的工作;
- AI兴起,大家都围绕着数据来做业务决策,怎么从现有数据中产出更高的价值,这也是大家对数仓发展的一个越来越高的要求;
围绕这五个不同发展趋势,阿里云提出MaxCompute4.0开放一体架构,围绕近实时,开放性、性价比、Data+AI一体化等多维度进行升级。

MaxCompute4.0开放一体架构,底层数据高并发、实时流式数据导入,数据同时可以选择导入到MaxCompute自己的盘古存储系统,也可以导入到OSS一些开放数据结构中,内置存储选用的是自己的AliORC。在这之上设计了统一的语言数据管理服务,可以纳管内置的存储数据,同时可以通过DF同时管理OSS和HDFS上面的开放数据结构。通过一个开放存储的服务,提供一个统一的接口给上层不同计算引擎做不同业务场景下的计算要求。再往上使用弹性计算资源调度,可以很容易调度不同的计算引擎在整个计算平台上去计算数据。最上层是对接不同的开发平台和数据应用。
MaxCompute 4.0 开放性升级:开放存储及计算架构
MaxCompute 4.0的开放性升级有两方面,一个是开放存储,一个是开放计算架构。开放存储我们希望把内置的数据格式能够通过开源内存格式提供给不同计算引擎。开放计算架构希望内置计算引擎可以通过同样一个API可以高效访问数据湖上的数据。
开放结构最主要提供的价值因为现在用户的应用、计算各个不同场景需要不同的计算引擎和不同的计算方式,MaxCompute 提供灵活开放的开源大数据AI引擎的计算方式给不同应用。并且在这种开放场景下,我们也可以提供比较灵活的计算资源。

如上图所示,左边是比较通用的一些场景,如果大家已经用了MaxCompute现代一些计算,同时需要一些AI计算或者一些其他计算,可以通过Storage API对接底下统一的数据源做不同的计算,这样可以提供一个数据零拷贝,不需要为了不同计算把数据拷贝出去放到不同地方然后做计算。另外我们希望能够提供统一的管理可以纳管不同的数据源,大家在云上或者别的地方有自己的计算资源也可以用自己的计算资源对接自己的数据做不同的计算。
现在数据的实时性方案很多在用的都是Lambda架构的模式,Lambda架构全链路数据治理都有很多痛点,这中间会有一些数据融合、数据一致性问题。在MaxCompute4.0升级的时候,做了近实时处理框架的发布,达到一份数据一份code,可以低成本低运维统一实施和批量处理链路。整个架构我们用一个统一的数据组织结构和数据管理,在这上面能够有统一的计算框架,大家不用在实时和离线框架上用不同计算引擎,最终实现所有数据不管实时还是离线都有统一的语言数据管理。
MaxCompute 4.0 致力于通过技术全方位提升性价比
随着AI的兴起,数据规模越来越大,用户对数据计算的性价比方面有更高的追求,MaxCompute4.0在过去一年,一直致力于做全方面的性价比提升。
计算高性能方面,SQL引擎方面在不断提高。在HBO/HBS根据历史查询数据,历史的统计信息我们能做更好的数据优化及查询优化,并且通过资源调度的优化提高性能。大家都知道大规模数据处理的时候,最主要的核心步骤是数据的shuffling,我们做了很多工作来提高整个数据shuffle性能。除此之外,MaxCompute4.0还尝试通过推荐能够帮助大家做一些物化视图的总结,根据物化视图消除重复性的计算。
在低成本方面,根据数据的冷热,访问的不同频率做到了分层存储。通过JSON半结构化数据的列存,实现更好的压缩。
在性价比方面,MaxCompute通过弹性资源调度、自适应SQL引擎、存储优化、智能数仓四个方面技术优化,实现了弹性CU最终降价50%。

- 弹性资源调度:当用户根据包年包月处理会有很多空闲时候,虽然没有用计算资源但是这个计算资源还是会算到里面去,如果有弹性资源就可以比较贴切计算的模型,根据不同时间段给不同的quota,从而达到降本增效。后面我们根据你的历史,比如过去三个月使用情况做一些不同的资源变配的推荐,满足资源降低成本的能力。
- 自适应的SQL引擎:我们做了更多的工作,可以分成stage和stage之间的自适应优化。在同一个stage不同算子之间我们也可以做到不同自适应算法。
- 存储优化:我们自研内部的数据格式AliORC,跟一些比较通用的parquet和ORC格式对比,测试结果显示读写性能是其2-6倍,压缩比我们比他们高大概30%。我们会根据你数据的访问频次能够自动推荐你在哪些数据可以做冷存数据,提供更高性价比的存储优化。
- 智能数仓:自研大数据对比开源大数据最大的区别就是我们是一个自闭环,能够做自动优化,将历史数据统一放到我们的原仓数据里,根据原仓信息,可以自动做一些存储方面和计算方面不同的优化。
MaxCompute 4.0 Data+AI:One Env+One Data+One Code
AI是一个新的浪潮,过去一年我们对数仓和AI如何结合做了很多思考。AI整个应用的生命周期是数据收集、数据清洗、数据预处理、数据训练、数据推理。有数据表明,大家认为80%的时间花在数据的处理上,数据处理有很多痛点:
- 大数据开发和AI开发是两个割裂的环境; 大数据开发很多时候大家用SQL,但是AI现在更多的用Python开发环境。
- AI更关注AI计算引擎; 对数据的大规模并发处理和分布式处理的能力有所欠缺,很多时候用户要在自己本地做数据清理,或者找数据开发师去做数据处理。
- 数据来源比较多样化; 很多数据大家会放在数据湖上,没有一个统一的数据管理的平台能够帮忙做数据管理,今天你处理了数据,而另外一个人需要产生非常相近的数据,但他不知道你这已经处理了这份数据他有可能重新跑一遍,不光花了时间也花了资源。
- 开发迭代效率低; 因为两套系统,导致整个开发链路都比较长,效率低下。

我们希望能够从数仓方面帮助用户解决那些痛点。MaxCompute 4.0主旨实现,One Env+One Data+One Code,这背后核心就是提供一个Python的开发环境,一个Notebook的开发体验。在Data For AI方面,MaxCompute全面升级DataFrame能力,发布分布式计算框架MaxFrame,100%兼容Pandas等数据处理接口,通过一行代码即可将原生Pandas自动转为MaxFrame分布式计算,打通数据管理、大规模数据分析、处理到ML开发全流程,打破大数据及AI开发使用边界,实现大数据AI开发一体化,大大提高开发效率。
另外在AI For Data方面,我们提供一个Python大数据处理,这样我们更容易使用一些丰富的AI和ML一些模型来做更好的数据挖掘和分析。
回头看整个MaxCompute4.0,我们希望做到数据的开放,计算引擎的包容,能够满足各种不同的数据计算场景的需求,以及根据数据实时性会增加增量计算的能力,满足大家对数据实时性的要求。后续MaxCompute也会持续在开放架构、增量处理、Data+AI三个方向持续发展。
相关文章:
【云栖2023】张治国:MaxCompute架构升级及开放性解读
简介: 本文根据2023云栖大会演讲实录整理而成,演讲信息如下 演讲人:张治国|阿里云智能计算平台研究员、阿里云MaxCompute负责人 演讲主题:MaxCompute架构升级及开放性解读 活动:2023云栖大会 MaxCompute发展经历了…...
【经验模态分解】4.信号由时域向频域的转换
/*** poject 经验模态分解及其衍生算法的研究及其在语音信号处理中的应用* file 傅里叶变换与小波变换* author jUicE_g2R(qq:3406291309)* * language MATLAB* EDA Base on matlabR2022b* editor Obsidian(黑曜石笔记软件&#…...
STM32的M4内核在keil上面float访问就hard_fault原因
使用 Keil MDK(Microcontroller Development Kit)开发时,出现硬件故障(hard fault)通常是由于访问浮点数(float)数据类型时,浮点单元配置不正确或浮点单元启用导致的。以下是一些可能…...
【LeetCode】217. 存在重复元素
217. 存在重复元素 难度:简单 题目 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 示例 1: 输入:nums [1,2,3,1] 输出࿱…...
【Redis缓存架构实战常见问题剖析】
文章目录 一、Redis缓存架构实战剖析1.1、大规模的商品缓存数据冷热分离机制1.2、缓存击穿导致线上数据压力暴增解决方案1.3、缓存穿透及其解决方案剖析1.4、突发性的热点缓存数重建导致系统压力暴增问题分析1.5、Redis分布式锁解决缓存与数据库双写不一致问题剖析1.6、利用多级…...
mac M2 pytorch_geometric安装
我目前的环境是mac M2,我在base环境中安装了pytorch_geometric,仅仅做测试用的,不做真正跑代码的测试 首先我的base环境的设置如下: pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.…...
【C++】异常 智能指针
C异常 & 智能指针 1.C异常1.1.异常的抛出与捕获1.2.异常体系1.3.异常安全与规范1.4.异常优缺点 2.智能指针2.1.RAII2.2.智能指针的使用及原理2.2.1.auto_ptr2.2.2.unique_ptr2.2.3.shared_ptr2.2.4.shared_ptr的循环引用问题 & weak_ptr 2.3.定制删除器 1.C异常 C异常…...
切换数据库的临时表空间为temp1 / 切换数据库的undo表空间为 undotbs01
目录 编辑 一、切换临时表空间 1、登录数据库 2、查询默认临时表空间 3、创建临时表空间temp1(我们的目标表空间) 4、修改默认temp表空间 5、查询用户默认临时表空间 6、命令总结: 二、切换数据库的undo表空间 1、查询默认undo表…...
react: scss使用样式
方式一: 将样式作为模块使用 //List.tsx import styles from /styles/apppublish.module.scss <div className{styles.contentOverflow}></div>//apppublish.module.scss .contentOverflow {height: 100%;overflow-y: auto;display: flex;flex-directi…...
JAVA深化篇_36—— Java网络编程中的常用类
Java网络编程中的常用类 Java为了跨平台,在网络应用通信时是不允许直接调用操作系统接口的,而是由java.net包来提供网络功能。下面我们来介绍几个java.net包中的常用的类。 InetAddress的使用 作用:封装计算机的IP地址和DNS(没…...
python操作链接数据库和Mysql中的事务在python的处理
python操作数据库 pymysql模块: pip install pymysql作用:可以实现使用python程序链接mysql数据库,且可以直接在python中执行sql语句 添加操作 import pymysql #1.创建链接对象c conn pymysql.Connect(host127.0.0.1,#数据库服务器主机地址port3306, #mysql的端口…...
【qemu逃逸】XCTF 华为高校挑战赛决赛-pipeline
前言 虚拟机用户名: root 无密码 设备逆向与漏洞分析 程序没有去符合, 还是比较简单. 实例结构体如下: 先总体说一下流程: encode 为 base64 编码函数, decode 为 base64 解码函数. 然后 encPipe 和 decPipe 分别存放编码数据和解码数据, 分别有四个: 其中 EncPipeLine 中…...
muduo源码剖析之TcpClient客户端类
简介 muduo用TcpClient发起连接,TcpClient有一个Connector连接器,TCPClient使用Conneccor发起连接, 连接建立成功后, 用socket创建TcpConnection来管理连接, 每个TcpClient class只管理一个TcpConnecction,连接建立成功后设置相应的回调函数…...
C语言——switch语句判断星期
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int day 0;scanf("请输入1-7之间的整数:%d",&day);switch(day){case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf(&quo…...
栈回溯之CmBacktrace
简介 CmBacktrace (Cortex Microcontroller Backtrace)是一款针对 ARM Cortex-M 系列 MCU 的错误代码自动追踪、定位,错误原因自动分析的开源库。主要特性如下: 支持的错误包括: 断言(assert)…...
node插件MongoDB(二)——MongoDB的基本命令
文章目录 前言1. 数据库命令(1)显示所有数据库(2)切换指定数据库(若没有自动创建)(3)显示当前所在数据库(4)删除当前数据库 2.集合(表名ÿ…...
【Git】推送Github失败:remote: Permission to xxx/*.git denied to xxx
在github上,创建了token,推送代码报没权限 #设置token git remote set-url origin <your.token>github.com/<your.name>/hello-git.git#推送代码 #git push -u origin main remote: Permission to xxx/hello-git.git denied to xxx. fatal:…...
Flink -- 状态与容错
1、Stateful Operations 有状态算子: 有状态计算,使用到前面的数据,常见的有状态的算子:例如sum、reduce,因为它们在计算的时候都是用到了前面的计算的结果 总结来说,有状态计算并不是独立存在的…...
Linux C语言进阶-D15递归函数和函数指针
递归函数 指一个函数的函数体中直接或间接调用了该函数本身 执行过程分为两个过程: 递推过程:从原问题出发,按递归公式递推从未知到已知,最终达到递推终止条件 回归阶段:按递归终止条件求出结果,逆向逐步…...
LeetCode算法心得——全排列(回溯型排列)
大家好,我是晴天学长,排列型的回溯,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪 1) .全排列 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
