欢迎光临
我们一直在努力

阿里云ACP大数据备考-MaxCompute/ODPS总结V1

一.MaxCompute 整体架构

1.四层核心架构

层级组件/功能详细说明【常考点】
1. 客户端 (Client) 用户交互入口 – odpscmd:命令行工具
– DataWorks:可视化开发运维平台
– SDK:Java/Python 等语言的编程接口
– Tunnel:用于批量上传下载数据
odpscmd 默认不进入任何项目,必须手动执行 use <project_name>; 才能操作指定项目。
2. 接入层 (Access Layer) 请求网关 – 接收所有客户端请求
– 负责用户身份认证(通过 AccessKey ID/Secret)
– 将认证后的请求(含 AccountID)转发给逻辑层
认证过程涉及 HTTP Server 和 云账号服务。
3. 逻辑层 (Logic Layer) 大脑中枢 – SQL 解析器 & 优化器:将 SQL 转为执行计划,并做列裁剪、分区裁剪、谓词下推等优化
– Scheduler (调度器):对等待提交的 Task 进行排序和调度
– 元数据管理:管理表、分区、用户、权限等信息
Scheduler 是负责 Task 调度的核心模块。
4. 存储与计算层 身体与肌肉 – 存储:基于 盘古 (Pangu) 分布式文件系统,使用自研列式存储格式 (CFile)
– 计算:由 伏羲 (Fuxi) 分布式调度系统管理 Worker 节点,执行 M/R/J/L 等任务
飞天内核三件套:
– 伏羲 (Fuxi):调度
– 盘古 (Pangu):存储
– 女娲 (Nuwa):协调

【易错点】:大禹 (Dayu) 是 DDoS 防护服务,不属于飞天内核。

2.任务执行流程

[Client]
↓ (提交SQL)
[Access Layer] → (认证鉴权)

[Logic Layer] → (解析SQL → 生成逻辑计划 → 优化 → 拆分为Task → Scheduler调度)

[Storage & Compute Layer] → (Fuxi分配Worker → 从Pangu读数据 → 执行计算 → 写回Pangu)

[Client] ← (返回结果或Job状态)

二.MaxCompute SQL 核心语法与限制

1. 表与分区管理

操作命令示例【常考点/易错点】
创建分区表 CREATE TABLE t1 (id BIGINT, name STRING) PARTITIONED BY (dt STRING); 分区列不能是 DOUBLE/FLOAT 类型。
动态分区插入 INSERT OVERWRITE TABLE t1 PARTITION (dt) SELECT col1, col2, dt FROM src; 分区列 dt 必须在 SELECT 列表的最后。
生命周期 ALTER TABLE t1 SET LIFECYCLE 30; 未设置则永久保存;生命周期作用于表和所有分区。
清空数据 TRUNCATE TABLE t1; (非分区表)
ALTER TABLE t1 DROP PARTITION (dt='20240520'); (分区表)
MaxCompute 不支持 DELETE 语句。
建表保护 CREATE TABLE IF NOT EXISTS t1 … 如果 t1 已存在,后续的 AS SELECT … 不会执行。

2.关键函数与特性

函数/特性说明示例【常考点】
数值函数 FLOOR(x):向下取整
CEIL(x) / CEILING(x):向上取整
FLOOR(3.7)=3
CEIL(-2.3)=-2
必考基础函数。
字符串函数 CONCAT(str1, str2, …) CONCAT('a', NULL) = NULL 只要有一个参数为 NULL,结果就是 NULL。
MAPJOIN 将小表加载到内存进行 Join /*+ MAPJOIN(b) */ SELECT a.id FROM a JOIN b ON a.id=b.id; – 小表总内存 ≤ 512MB
– 不支持 FULL OUTER JOIN
– 支持子查询,但必须用别名
Multi-Insert 一条 SQL 写入多个目标 FROM src INSERT INTO t1 SELECT … INSERT INTO t2 SELECT … 单条语句最多 255 路输出。

3.一些限制

限制项具体内容【常考点】
SQL 长度 单条 SQL 语句最大长度为 2 MB。
查询结果 直接 SELECT 屏显最多返回 10,000 行 或 10 MB 数据。 作为子查询时无此限制。
关键字 like, order, group 等是关键字,不能直接用作字段名。 如需使用,必须用反引号 `like` 包裹。

三.MaxCompute 权限与安全模型

1.四大安全机制对比

机制功能命令示例【常考点/易错点】
ACL (访问控制列表) 最基础的对象级授权 GRANT SELECT ON TABLE t1 TO USER alice; 不支持黑名单授权
不支持带条件的授权
LabelSecurity (标签安全) 强制访问控制 (MAC),基于数据敏感度分级 SET LABEL 2 TO TABLE t1(key);
GRANT LABEL 2 TO USER alice;
需要显式开启,比 ACL 更严格。
ProjectProtection (项目保护) 防止数据流出当前项目 SET PROJECTPROTECTION = TRUE;
ADD PRIVILEGE EXCEPTION …;
开启后,禁止任何数据流出,除非添加例外。
SecurityConfiguration 统一的安全配置开关 SHOW SECURITY CONFIGURATION; 控制上述所有安全机制的总开关。

2. 跨项目资源共享

方式:通过 Package。
默认权限:Read, Describe, Select。
【常考点】:不是“读写权限”!如果需要写权限(如 Update, Drop),必须显式授予。
. Admin 角色
权限:非常广泛,可访问所有对象、管理用户和角色。
【易错点】:Admin 不能:
修改项目的 安全配置 (SecurityConfiguration)。
修改项目的 鉴权模型。
将 Admin 权限授予其他用户。

四.DataWorks 调度机制

1.任务类型与依赖关系

任务类型是否可调度?是否可被依赖?能否单独配置周期?【常考点】
节点任务 (独立节点) ✅ 是 ✅ 是 ✅ 可以 最常见的任务形式。
工作流任务 (Workflow) ❌ 否 ❌ 否 ❌ 不能 工作流本身只是一个容器,不可调度。
工作流内部节点 ✅ 是 ✅ 是 ❌ 不能 继承工作流的调度周期,自身无法单独设置。

2.关键时间参数

参数含义格式示例 (任务在 2026-01-27 运行)【常考点】
$ {bdp.system.bizdate} 业务日期 yyyymmdd 20260126 = 调度日期 – 1 天,最常用!
$ {bdp.system.cyctime} 调度时间 yyyymmddhh24miss 20260127000000 任务计划运行的时间戳。

3.重跑机制

操作作用适用场景【常考点】
重跑 仅重跑当前任务 处理出错或漏跑的单个节点 成功后会自动触发下游未运行的任务。
重跑下游 重跑当前任务及其勾选的下游任务 数据修复,确保整个链路数据一致性 可以自定义勾选下游范围。
赞(0)
未经允许不得转载:171主机测评 » 阿里云ACP大数据备考-MaxCompute/ODPS总结V1
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址