关于MaxComputer的学习笔记(2)

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    为资源创建一个别名

 alter    

costcreate

delete/dropdesc/describedownload/get

extended

flag/flagsfunctions

get

helphistory

jar/mapreduce

kill

lifecyclelist

odpscmd

partition

q/quit

resource

setshowstatus

tunnel

upload

waitwho

使用限制

在进行资源操作时,请注意每个资源文件的大小不能超过500MB,单个SQL、MapReduce任务所引用的资源总大小不能超过2048MB,更多限制请参见MapReduce限制汇总

项目

项目(Project)是MaxCompute的基本组织单元,它类似于传统数据库的Database或Schema的概念,是进行多用户隔离和访问控制的主要边界。项目中包含多个对象,例如表(Table)、资源(Resource)、函数(Function)和实例(Instance)等。

一个用户可以同时拥有多个项目的权限。通过安全授权,可以在一个项目中访问另一个项目中的对象。


表是MaxCompute的数据存储单元。它在逻辑上是由行和列组成的二维结构,每行代表一条记录,每列表示相同数据类型的一个字段,一条记录可以包含一个或多个列,表的结构由各个列的名称和类型构成。

MaxCompute中不同类型计算任务的操作对象(输入、输出)都是表。

MaxCompute的表格有两种类型:内部表和外部表(MaxCompute2.0版本开始支持外部表)。

对于内部表,所有的数据都被存储在MaxCompute中,表中列的数据类型可以是MaxCompute支持的任意一种数据类型

对于外部表,MaxCompute并不真正持有数据,表格的数据可以存放在OSSOTS中 。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以数据为中心,内建多种计算模型,满足广泛的数据分析需求。本文为您介绍每种计算模型在当前可用区的开通情况。



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,198评论 6 514
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,334评论 3 398
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,643评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,495评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,502评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,156评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,743评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,659评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,200评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,282评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,424评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,107评论 5 349
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,789评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,264评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,390评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,798评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,435评论 2 359