阿里巴巴-开放数据处理服务
(Open Data Processing Service, ODPS)
数据平台事业部 – 杨少华
提纲
• 背景与概况
•
•
•
•

服务架构
关键技术
服务管理
结语

2
背景
• 海量数据处理和分享需求
– PB级电商交易数据
– 阿里系各事业部、合作伙伴的数据交换和融合
– 第三方公司的数据处理需求

• 典型数据业务
– 信用贷款/广告DMP
3
高可用

ODPS

云计算
服务
服务概况
• 集群
–
–

• 业务

多个集群
单集群规模
–
–
–
–

机器:5000台
CPU:10万核
内存:500TB
磁盘容量:100PB

– 数百数据开发工程师

– 阿里系各事业部
– 开始为部分第三方ISV和
科研机构开放数据存储和
分析能力

• 负载
– 亿级别文件
– 作业量:5万/天
– 作业I/O:PB级别/天
5
提纲
• 背景与概况

• 服务架构
•
•
•

接入层
逻辑层
存储与计算层

• 关键技术
• 服务管理
• 结语
6
服务架构
POST http://xxx/projects/projectname/jobs
<xml>insert overwrite table d select * from s;</xml>

LVS
接入层
RESTful协议

逻辑层
存储与计算层

负载均衡

协议处理、用户认证
用户空间管理,Query语法语
义分析以及执行计划生成,
数据对象访问控制
分布式存储和计算
7
接入层
• 访问ODPS服务的唯一入口,提供SDK和Console
• 功能设计
 用户认证
 RESTful APIs,基于HTTP协议,支持对资源实体的CRUD操作

• 资源实体
 Project 类似DataBase/Schema,用户隔离和访问控制的主要边界
• Table/Partition,数据集合
• UDF/Resource,文件,jar包,py脚本
• Job/Instance,抽象可执行实体和运行实例
 User/Role,用于管理用户对Project内实体的访问控制和授权

8
接入层-架构
日志工具

在云端(Web IDE)

客户端

天网

··
·

Console
SDK

RESTful APIs

接入层

数据上传/下载服务
Project 1

逻辑层

ODPS 服务
A

存储与计算层

HTTP服务

用户
中心

Project 2

ODPS 服务
B

分布式
meta服务
接入层-分析
• RESTful风格的接入层带来诸多好处
•
•
•
•

方便应用集成,支持非linux平台
方便安全隔离,易于对公网开放
作业日志在后端,便于查错
客户端轻量,升级方便

10
逻辑层
• 负责实现RESTful APIs语义
• 用户请求分两类
• DDL请求,如创建表/删除表,在逻辑层响应完成
• DML请求,如SQL查询和MR作业,需提交计算作业到存储与计算层

• 实现架构
•
•
•
•

Worker
Scheduler
Executor
Meta服务

DDL or DML

Worker 1
DML

Executor 1

…
Scheduler

分布式
meta服务

…
飞天作业

飞天集群

1
逻辑层-双服务架构
接入层

接入层

RESTful协议
Project 2

Project 1

服务 A (控制集群A)

逻辑层

Worker 1

…

Worker m

服务B
(控制集群B) 分布式

meta服务

Scheduler
Executor 1

…

Executor n

存储与
计算层

飞天集群 A

飞天集群 B

··
·
逻辑层-分析
• Worker/Executor
• 线性可扩展,负载均衡

• Schduler
• 只维护一组运行实例,无状态(状态总是持久化)
• 双ODPS服务
• 灰度发布,不停服务轮转升级,failover

• 分布式meta服务
• 使用阿里云OTS分布式存储系统,无需担心空间不够
• 统一名称空间,双服务和多飞天集群对用户透明

13
存储与计算层
• 多个飞天集群组成
• 支持跨集群(机房)数据共享
• 存储
• 使用盘古分布式文件系统
• Master-Slave结构
• 基于Paxos的多Master,故障恢复小于一分钟
• 文件分块(Chunk),每块存三份,分布在不同机架
• 表数据采用统一文件格式:CFile,基于列存储的压缩文件格式
• 提供数据上传和下载服务,支持PB/天的吞吐量

• 计算
• 支持多种计算模式:SQL,MR,算法库,图计算(Pregel)
• 采用伏羲作业,支持DAG,支持基于CPU/MEM的资源调度
14
提纲
•
•

背景与概况
服务架构

• 关键技术
• 跨集群(机房)数据共享
• 高效SQL引擎
• 矩阵运算和数据挖掘算法库
• 图计算框架
• 服务管理
• 结语
15
跨集群(机房)数据共享(1)
• 为什么要做
• 业务快速增长,单集群扩容受机房容量、飞天规模限制

• 难点
•
•
•
•

—— 按业务project进行划分
数据存储和计算如何划分
—— 引入数据版本
数据动态变化,需要保证数据读取正确性
跨机房带宽如何使用
—— 跨集群数据复制任务,流控
对用户透明
—— 数据存储本来就对用户透明

逻辑层

存储与
计算层

ODPS 服务(控制集群)
Worker/Scheduler/Executor

ODPS
服务

飞天集群 A
飞天集群 A

飞天集群 B

(机房1)
(机房1)

分布式
meta服务

(机房2)
16
跨集群(机房)数据共享(2)
• 按业务划分集群
– 关系密切业务的project放在同一个集群
– 每个project对应一个默认集群,作业总是跑在默认集群上

• 数据版本
– 同一份数据(表或分区)在多个集群上可能具有不同的版本
{"LatestVersion":V1,"Status":{"ClusterA":"V1","ClusterB":"V0"}}

– 当一份数据版本更新后,触发一个跨集群数据复制任务

• 跨集群数据复制
– 表或分区可以配置是否进行跨集群复制(自动或手工)
– 流控,优先级

• 直读直写,应对新的跨集群数据依赖,少量任务
17
跨集群(机房)数据共享(3)
• 实施
• 业务project数据依赖做大量的分析统计,与业务方协
商集群划分方案
• 历史数据迁移,观察跨机房数据流量
• 开始逐步切换project的默认集群到新集群

• 效果
• 拥有万级别的大规模集群,后期扩容不受限制
• 对用户透明,跨机房流量可控
• 业务方反映这是最轻松的一次业务迁移

18
高效SQL引擎
• 作业概况:
– DDL:几十万/天,DML:几万/天
•

特性







兼容大部分Hive语法
支持Python和Java写UDF,UDAF,UDTF
物理执行方式:DAG,C++实现
Code gen
准实时实现(Service-Mode)

19
高效SQL引擎(2)-DAG
• 示例
SELECT … FROM a JOIN b ON a.id=b.id GROUP BY a.c;
•

Hive

Job 1
hdfs

•

M1

Job 2
R1

hdfs

M2

R2

hdfs

ODPS SQL
M1
pangu

R1

R2

pangu

M2

•

减少磁盘IO,SQL嵌套多层时性能改进更明显
20
SQL(3)-准实时
• Service-Mode
• 常驻服务,预先申请好worker - 减少调度开销
• Shuffle数据不落地,直接写网络
• 假设作业规模m*r,要求r个reduce先起,接收map写的
数据
• 内存文件
• LLVM,减少编译时间
•

•

根据SQL类型和数据量动态决定是否采用ServiceMode方式
未考虑Failover,主要用于开发project和Adhoc数
据分析
Xlib-矩阵运算与数据挖掘算法库
• 金融建模/广告等场景有强烈的分布式算法需求
• ODPS分布式算法库



基于MPI,C++实现
集团共建算法社区模式,集成常用基础性算法


当前支持算法
–
–
–
–



SVD分解
逻辑回归
随机森林
…

集成Graphlib算法库
22
图计算框架
• 海量图结构数据
–
–

•

社交网络(来往,微博),物流信息(菜鸟物流)
电商关系:类目/商品/买家/卖家,交易/浏览

ODPS图计算框架
– 支持类似Pregel的Java编程接口,面向迭代类型的作业
– 磁盘IO→内存网络,换来更快的性能


典型应用:
–
–
–
–



PageRank
K-均值聚类
非负矩阵分解NMF
…

算法往往跟业务相关
23
提纲
•
•
•

背景与概况
服务架构
关键技术

• 服务管理
• 结语

24
服务管理
•
•
•
•
•
•

多租户共享集群
基于ACL和Policy的认证授权机制
基于project的业务划分
基于配额的管理
基于历史的优化
多种类型计算作业共享集群

25
总结
• 阿里巴巴数据处理服务(ODPS)
–
–
–
–
–
–
–

支持海量数据的离线存储和计算
以RESTful API的方式提供服务
基于飞天分布式平台
支持跨集群(机房)数据共享
支持SQL、MapReduce、MPI、图计算编程框架
支持常用的矩阵运算和数据挖掘算法
支持多租户和基于ACL/Policy的权限控制

我们面对一座数据金矿,就看怎么能挖出更多的
金子,期待有志之士加入阿里数据平台
www.alidata.org
26
Q&A

欢迎安装来往,扫描加入ODPS扎堆
27

杨少华:阿里开放数据处理服务