ODPS(Open Data Processing Service),开放数据处理服务,简单来说,就是阿里巴巴的一个数据仓库解决方案。
ODPS以RESTful API的形式提供针对PB级别数据的、实时性要求不高的批量结构化数据存储和计算能力。
主要应用于数据分析与统计、数据挖掘、商业智能等领域。阿里金融、淘宝指数、数据魔方等阿里巴巴关键数据业务的离线处理作业都运行在ODPS上。
ODPS现在已更名为 MaxCompute,大数据计算服务,是一种快速、完全托管EB级数据仓库解决方案。
MaxCompute 向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全。
随着数据收集手段不断丰富,行业数据大量积累,数据规模已增长到了传统软件行业无法承载的海量数据(百TB、PB、EB)级别。
MaxCompute致力于批量结构化数据的存储和计算,提供海量数据仓库的解决方案及分析建模服务。
由于单台服务器的处理能力有限,海量数据的分析需要分布式的计算模型。分布式的计算模型对数据分析人员要求较高且不易维护。数据分析人员不仅需要了解业务需求,同时还需要熟悉底层分布式计算模型。
MaxCompute提供了完善的数据导入方案以及多种经典的分布式计算模型,用户可以不必关心分布式计算和维护细节,便可轻松完成大数据分析。
大数据开发套件和 MaxCompute关系紧密,大数据开发套件为 MaxCompute 提供了一站式的数据同步,任务开发,数据工作流开发,数据管理和数据运维等功能。
MaxCompute 已经在阿里巴巴集团内部得到大规模应用,例如:大型互联网企业的数据仓库和 BI 分析、网站的日志分析、电子商务网站的交易分析、用户特征和兴趣挖掘等。
产品优势
1. 大规模计算存储
MaxCompute适用于100GB以上规模的存储及计算需求,最大可达EB级别。
2. 多种计算模型
MaxCompute支持SQL、MapReduce、UDF(Java/Python)、Graph、基于DAG的处理、交互式、内存计算、机器学习等计算类型及MPI迭代类算法。简化了企业大数据平台的应用架构。
3. 强数据安全
MaxCompute已稳定支撑阿里全部数据仓库业务9年以上,提供多层沙箱防护、细粒度权限管理及监控。
MaxCompute通过了独立的第三方审计师针对阿里云对AICPA可信服务标准中关于安全性、可用性和机密性原则符合性描述的审计。
4. 低成本
与企业自建专有云相比,MaxCompute的计算存储更高效,可以降低30%~50%的采购成本。
5. 免运维
基于MaxCompute的Serverless无服务器的设计思路,用户只需关心作业和数据,而无需关心底层分布式架构及运维。
6. 极致弹性扩展
MaxCompute提供按量付费模式下的作业级别的资源管理。用户无需受困于资源扩展难题,系统会自动扩展计算、存储、网络等资源,最大程度地节省成本。
系统架构
MaxCompute以数据为中心,内建多种计算模型和服务接口,满足广泛的数据分析需求。一切服务“开通”即用,更好地赋能数据业务。
功能概述
1. 数据通道
(1)批量历史数据通道
Tunnel是MaxCompute为您提供的数据传输服务,提供高并发的离线数据上传下载服务。支持每天TB/PB级别的数据导入导出,特别适合于全量数据或历史数据的批量导入。Tunnel为您提供Java编程接口,并且在MaxCompute的客户端工具中,提供对应的命令实现本地文件与服务数据的互通。
(2)实时增量数据通道
针对实时数据上传的场景,MaxCompute提供了延迟低、使用方便的Datahub服务,特别适用于增量数据的导入。DataHub还支持多种数据传输插件,例如Logstash、Flume、Fluentd、Sqoop等,同时支持日志服务Log Service中的投递日志到MaxCompute,进而使用DataWorks进行日志分析和挖掘。
2. 计算及分析任务
MaxCompute支持多种计算模型,详情如下:
(1)SQL:MaxCompute以表的形式存储数据,支持多种数据类型,并对外提供SQL查询功能。您可以将MaxCompute作为传统的数据库软件操作,但其却能处理TB、PB级别的海量数据。
(2)UDF:即用户自定义函数。MaxCompute提供了很多内建函数来满足您的计算需求,同时您还可以通过创建自定义函数来满足不同的计算需求。
(3)MapReduce:MaxCompute MapReduce是MaxCompute提供的Java MapReduce编程模型,它可以简化开发流程,更为高效。使用MaxCompute MapReduce,需要对分布式计算概念有基本了解,并有相对应的编程经验。MaxCompute MapReduce为您提供Java编程接口。
(4)Graph:MaxCompute提供的Graph功能是一套面向迭代的图计算处理框架。图计算作业使用图进行建模,图由点 (Vertex)和边(Edge)组成,点和边包含权值(Value)。通过迭代对图进行编辑、演化,最终求解出结果,典型应用:PageRank、单源最短距离算法、K-均值聚类算法等。
(5)Spark on MaxCompute:Spark on MaxCompute是阿里云开发的大数据分析引擎,为您提供大数据处理能力。
3. SDK
SDK是MaxCompute提供给开发者的工具包,当前支持Java SDK及Python SDK。
4. 安全
MaxCompute提供了功能强大的安全服务,为用户的数据安全提供保护。
MaxCompute常见的概念和术语
[A]
AccessKey
AccessKey(简称AK,包括AccessKey ID和AccessKey Secret),是访问阿里云API的密钥。在阿里云官网注册云账号后,可在AccessKey管理页面生成,用于标识用户,为访问MaxCompute或者其他云产品做签名验证。AccessKey Secret必须保密。
安全
MaxCompute多租户数据安全体系,主要包括用户认证、项目空间的用户与授权管理、跨项目空间的资源分享以及项目空间的数据保护。
[C]
Console
MaxCompute Console是运行在Window/Linux下的客户端工具,通过Console可以提交命令完成项目空间管理、DDL、DML等操作。
[D]
Data Type
MaxCompute表中所有列对应的数据类型。目前支持的数据类型。
DDL
数据定义语言(Data Definition Language)。例如创建表、创建视图等操作。
DML
数据操作语言(Data Manipulation Language)。例如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函数整合中间结果,从而得到最终计算结果。
[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批量上传数据或者向本地进行批量数据下载。
[U]
UDF
广义的UDF(User Defined Function),代表了自定义标量函数、自定义聚合函数及自定义表函数三种类型的自定义函数的集合。MaxCompute提供的Java编程接口开发自定义函数。
狭义的UDF指用户自定义标量值函数(User Defined Scalar Function),它的输入与输出是一对一的关系,即读入一行数据,写出一条输出值。
UDAF
自定义聚合函数(User Defined Aggregation Function),它的输入与输出是多对一的关系, 即将多条输入记录聚合成一条输出值。可以与SQL中的GROUP BY语句联用。
UDTF
自定义表值函数(User Defined Table Valued Function),用来解决一次函数调用输出多行数据的场景。它是唯一能返回多个字段的自定义函数,而UDF只能一次计算输出一条返回值。