MaxComputer的术语表
A
AccessKey
AccessKey(简称AK,包括AccessKey ID和AccessKey Secret),是访问阿里云API的密钥。在阿里云官网注册云账号后,可在AccessKey管理页面生成,用于标识用户,为访问MaxCompute或者其他云产品做签名验证。AccessKey Secret必须保密。
安全
MaxCompute多租户数据安全体系,主要包括用户认证、项目空间的用户与授权管理、跨项目空间的资源分享以及项目空间的数据保护。关于MaxCompute安全操作的更多详情请参见安全指南。
C
Console
MaxCompute Console是运行在Window/Linux下的客户端工具,通过Console可以提交命令完成项目空间管理、DDL、DML等操作。对应的工具安装和常用参数请参见客户端。
D
Data Type
MaxCompute表中所有列对应的数据类型。目前支持的数据类型详情请参见数据类型。
DDL
数据定义语言(Data Definition Language)。例如创建表、创建视图等操作,详情请参见DDL语句。
DML
数据操作语言(Data Manipulation Language)。例如INSERT操作,MaxCompute DML语法请参见INSERT语句。
F
fuxi
伏羲(fuxi)是飞天平台内核中负责资源管理和任务调度的模块,同时也为应用开发提供了一套编程基础框架。MaxCompute底层任务调度模块为fuxi的调度模块。
I
Instance(实例)
作业的一个具体实例,表示实际运行的Job,类同Hadoop中Job的概念。详情请参见任务实例。
M
MapReduce
MapReduce是处理数据的一种编程模型,通常用于大规模数据集的并行运算。您可以使用MapReduce提供的接口(Java API)编写MapReduce程序,来处理MaxCompute中的数据。编程思想是将数据的处理方式分为Map(映射)和Reduce(规约)。
在正式执行Map前,需要将输入的数据进行分片。所谓分片,就是将输入数据切分为大小相等的数据块,每一块作为单个Map Worker的输入被处理,以便于多个Map Worker同时工作。每个Map Worker在读入各自的数据后,进行计算处理,最终通过Reduce函数整合中间结果,从而得到最终计算结果。详情请参见MapReduce。
O
ODPS
ODPS是MaxCompute的原名。
P
Partition(分区)
分区Partition是指一张表下,根据分区字段(一个或多个字段的组合)对数据存储进行划分。也就是说,如果表没有分区,数据是直接放在表所在的目录下。如果表有分区,每个分区对应表下的一个目录,数据是分别存储在不同的分区目录下。关于分区的更多介绍请参见分区。
Project(项目/项目空间)
项目空间(Project)是MaxCompute的基本组织单元,它类似于传统数据库的Database或Schema的概念,是进行多用户隔离和访问控制的主要边界。详情请参见项目空间。
R
Role(角色)
角色是MaxCompute安全功能里使用的概念,可以看成是拥有相同权限的用户的集合。多个用户可以同时存在于一个角色下,一个用户也可以隶属于多个角色。给角色授权后,该角色下的所有用户拥有相同的权限。关于角色管理的更多介绍请参见角色管理。
Resource(资源)
资源(Resource)是MaxCompute中特有的概念。如果您想使用MaxCompute的自定义函数(UDF)或MapReduce功能,则需要依赖资源来完成。详情请参见资源。
S
SDK
Software Development Kit软件开发工具包。一般都是一些被软件工程师用于为特定的软件包、软件实例、软件框架、硬件平台、操作系统、文档包等建立应用软件的开发工具的集合。MaxCompute目前支持Java SDK介绍和Python SDK。
授权
项目空间管理员或者Project Owner授予您对MaxCompute中的Object(或称之为对象,例如表、任务、资源等)进行某种操作的权限,包括读、写、查看等。授权的具体操作请参见用户管理。
沙箱(Sandboxie)
沙箱是一种按照安全策略限制程序行为的执行环境。沙箱机制是一种安全机制,将Java代码限定在特定的运行范围中,并且严格限制代码对本地系统资源访问,通过这样的措施来保证对代码的有效隔离,防止对本地系统造成破坏。MaxCompute MapReduce及UDF程序在分布式环境中运行时受到Java沙箱的限制。
T
Table(表)
表是MaxCompute的数据存储单元,详情请参见表。
Tunnel
MaxCompute的数据通道,提供高并发的离线数据上传下载服务。您可以使用Tunnel服务向MaxCompute批量上传数据或者向本地进行批量数据下载。相关命令请参见Tunnel命令参考或批量数据通道SDK。
U
UDF
广义的UDF(User Defined Function),代表了自定义标量函数、自定义聚合函数及自定义表函数三种类型的自定义函数的集合。MaxCompute提供的Java编程接口开发自定义函数,详情请参见UDF概述。
狭义的UDF指用户自定义标量值函数(User Defined Scalar Function),它的输入与输出是一对一的关系,即读入一行数据,写出一条输出值。
UDAF
自定义聚合函数(User Defined Aggregation Function),它的输入与输出是多对一的关系, 即将多条输入记录聚合成一条输出值。可以与SQL中的GROUP BY语句联用。详情请参见UDAF。
UDTF
自定义表值函数(User Defined Table Valued Function),用来解决一次函数调用输出多行数据的场景。它是唯一能返回多个字段的自定义函数,而UDF只能一次计算输出一条返回值。详情请参见UDTF。
常用命令列表
列举MaxCompute客户端的常用命令。
最新的MaxCompute服务对常用命令做了调整,新的命令风格更贴近于Hive的使用方式,方便原有的Hadoop和Hive用户。
MaxCompute提供了对项目空间、表、资源及实例等对象的一系列操作。您可以通过客户端命令或SDK来操作这些对象。
常用命令
add 添加本地资源到maxcomputer中
alias 为资源创建一个别名
delete/drop、desc/describe、download/get
使用限制
在进行资源操作时,请注意每个资源文件的大小不能超过500MB,单个SQL、MapReduce任务所引用的资源总大小不能超过2048MB,更多限制请参见MapReduce限制汇总。
项目
项目(Project)是MaxCompute的基本组织单元,它类似于传统数据库的Database或Schema的概念,是进行多用户隔离和访问控制的主要边界。项目中包含多个对象,例如表(Table)、资源(Resource)、函数(Function)和实例(Instance)等。
一个用户可以同时拥有多个项目的权限。通过安全授权,可以在一个项目中访问另一个项目中的对象。
表
表是MaxCompute的数据存储单元。它在逻辑上是由行和列组成的二维结构,每行代表一条记录,每列表示相同数据类型的一个字段,一条记录可以包含一个或多个列,表的结构由各个列的名称和类型构成。
MaxCompute中不同类型计算任务的操作对象(输入、输出)都是表。
MaxCompute的表格有两种类型:内部表和外部表(MaxCompute2.0版本开始支持外部表)。
对于内部表,所有的数据都被存储在MaxCompute中,表中列的数据类型可以是MaxCompute支持的任意一种数据类型。
对于外部表,MaxCompute并不真正持有数据,表格的数据可以存放在OSS或OTS中 。MaxCompute仅会记录表格的Meta信息,您可以通过MaxCompute的外部表机制处理OSS或OTS上的非结构化数据,例如视频、音频、基因、气象、地理信息等。
分区
分区表是指拥有分区空间的表,即在创建表时指定表内的一个或者某几个字段作为分区列。分区表实际就是对应分布式文件系统上的独立的文件夹,一个分区对应一个文件夹,文件夹下是对应分区所有的数据文件。
分区概述
分区可以理解为分类,通过分类把不同类型的数据放到不同的目录下。分类的标准就是分区字段,可以是一个,也可以是多个。
MaxCompute将分区列的每个值作为一个分区(目录),您可以指定多级分区,即将表的多个字段作为表的分区,分区之间类似多级目录的关系。
分区表的意义在于优化查询。查询表时通过WHERE子句查询指定所需查询的分区,避免全表扫描,提高处理效率,降低计算费用。使用数据时,如果指定需要访问的分区名称,则只会读取相应的分区。
--创建一个二级分区表,以日期为一级分区,地域为二级分区
CREATE TABLE src (key string, value bigint) PARTITIONED BY (pt string,region string);
--正确使用方式。MaxCompute在生成查询计划时只会将'20170601'分区下region为'hangzhou'二级分区的数据纳入输入中。
select * from src where pt='20170601'and region='hangzhou';
--错误的使用方式。在这样的使用方式下,MaxCompute并不能保障分区过滤机制的有效性。pt是STRING类型,当STRING类型与BIGINT(20170601)比较时,MaxCompute会将二者转换为DOUBLE类型,此时有可能会有精度损失。
select * from src where pt = 20170601;
生命周期
MaxCompute表的生命周期(Lifecycle),指表(分区)数据从最后一次更新的时间算起,在经过指定的时间后没有变动,则此表(分区)将被MaxCompute自动回收。这个指定的时间就是生命周期。
资源
MaxCompute的资源(Resource)概念,可为MaxCompute特定操作提供资源依赖。
资源(Resource)是MaxCompute的特有概念,如果您想使用MaxCompute的自定义函数(UDF)或MapReduce功能需要依赖资源来完成,如下所示:
SQL UDF:您编写UDF后,需要将编译好的Jar包以资源的形式上传到MaxCompute。运行此UDF时,MaxCompute会自动下载这个Jar包,获取您的代码来运行UDF,无需您干预。上传Jar包的过程就是在MaxCompute上创建资源的过程,这个Jar包是MaxCompute资源的一种。
MapReduce:您编写MapReduce程序后,将编译好的Jar包作为一种资源上传到MaxCompute。运行MapReduce作业时,MapReduce框架会自动下载这个Jar资源,获取您的代码。您同样可以将文本文件以及MaxCompute中的表作为不同类型的资源上传到MaxCompute,您可以在UDF及MapReduce的运行过程中读取、使用这些资源。
MaxCompute支持上传的单个资源大小上限为500MB,资源包括以下几种类型:
File类型。
Table类型:MaxCompute中的表。
Jar类型:编译好的Java Jar包。
Archive类型:通过资源名称中的后缀识别压缩类型,支持的压缩文件类型包括.zip/.tgz/.tar.gz/.tar/jar。
MapReduce引用的table类型资源中,table字段类型目前只支持BIGINT、DOUBLE、STRING、DATETIME、BOOLEAN,其他类型暂未支持。
函数
MaxCompute提供的函数功能,包括内建函数和UDF。
MaxCompute为您提供了SQL计算功能,您可以在MaxCompute SQL中使用系统的内建函数完成一定的计算和计数功能。但当内建函数无法满足要求时,您可以使用MaxCompute提供的Java编程接口开发自定义函数(User Defined Function,以下简称UDF)。
自定义函数(UDF)可以进一步分为标量值函数(UDF),自定义聚合函数(UDAF)和自定义表值函数(UDTF)三种类型。
您在开发完成UDF代码后,需要将代码编译成Jar包,并将此Jar包以Jar资源的形式上传到MaxCompute,最后在MaxCompute中注册此UDF。
任务
任务(Task)是MaxCompute的基本计算单元,SQL及MapReduce功能都是通过任务完成的。
对于您提交的大多数任务,特别是计算型任务,例如SQL DML语句、MapReduce,MaxCompute会对其进行解析,得到任务的执行计划。执行计划由具有依赖关系的多个执行阶段(Stage)构成。
目前,执行计划逻辑上可以被看做一个有向图,图中的点是执行阶段,各个执行阶段的依赖关系是图的边。MaxCompute会依照图(执行计划)中的依赖关系执行各个阶段。在同一个执行阶段内,会有多个进程,也称之为Worker,共同完成该执行阶段的计算工作。同一个执行阶段的不同Worker只是处理的数据不同,执行逻辑完全相同。计算型任务在执行时,会被实例化,您可以对这个实例(Instance)进行操作,例如获取实例状态(Status Instance)、终止实例运行(Kill Instance)等。
MaxCompute的ACID特性
原子性(Atomicity)
任何时候MaxCompute会保证在冲突时只会一个作业成功,其它冲突作业失败。
对于单个表或分区的CREATE、OVERWRITE、DROP操作,可以保证其原子性。
跨表操作时不支持原子性(例如MULTI-INSERT)。
在极端情况下,以下操作可能不保证原子性:
DYNAMIC INSERT OVERWRITE多于一万个分区,不支持原子性。
INTO类操作:这类操作失败的原因是事务回滚时数据清理失败,但不会造成原始数据丢失。
一致性(Consistency)
OVERWRITE类作业可保证一致性。
INTO类作业在冲突失败后可能存在失败作业的数据残留。
隔离性(Isolation)
非INTO类操作保证读已提交。
INTO类操作存在读未提交的场景。
持久性(Durability)
MaxCompute保证数据的持久性。
功能
MaxCompute以数据为中心,内建多种计算模型,满足广泛的数据分析需求。本文为您介绍每种计算模型在当前可用区的开通情况。