阿里巴巴-开放数据处理服务
(Open Data Processing Service, ODPS)
数据平台事业部 – 杨少华
2
提纲
• 背景与概况
• 服务架构
• 关键技术
• 服务管理
• 结语
3
背景
• 海量数据处理和分享需求
– PB级电商交易数据
– 阿里系各事业部、合作伙伴的数据交换和融合
– 第三方公司的数据处理需求
• 典型数据业务
– 信用贷款/广告DMP
4
ODPS
云计算
服务
高可用
5
服务概况
• 集群
– 多个集群
– 单集群规模
– 机器:5000台
– CPU:10万核
– 内存:500TB
– 磁盘容量:100PB
• 负载
– 亿级别文件
– 作业量:5万/天
– 作业I/O:PB级别/天
• 业务
– 数百数据开发工程师
– 阿里系各事业部
– 开始为部分第三方ISV和
科研机构开放数据存储和
分析能力
6
提纲
• 背景与概况
• 服务架构
• 接入层
• 逻辑层
• 存储与计算层
• 关键技术
• 服务管理
• 结语
服务架构
7
POST http://xxx/projects/projectname/jobs
insert overwrite table d select * from s;
接入层
RESTful
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
LVS
逻辑层
存储与计算层
负载均衡
协议处理、用户认证
用户空间管理,Query语法语
义分析以及执行计划生成,
数据对象访问控制
分布式存储和计算
8
接入层
• 访问ODPS服务的唯一入口,提供SDK和Console
• 功能
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
用户认证
RESTful APIs,基于HTTP协议,支持对资源实体的CRUD操作
• 资源实体
Project 类似DataBase/Schema,用户隔离和访问控制的主要边界
• Table/Partition,数据集合
• UDF/Resource,文件,jar包,py脚本
• Job/Instance,抽象可执行实体和运行实例
User/Role,用于管理用户对Project内实体的访问控制和授权
接入层-架构
9
ODPS 服务
A
HTTP服务 数据上传/下载服务
SDK
Console 客户端
分布式
meta服务
用户
中心
在云端(Web IDE) 天网
RESTful APIs
日志工具 · · ·
接入层
逻辑层 ODPS 服务
B
Project 1 Project 2
存储与计算层
10
接入层-分析
• RESTful风格的接入层带来诸多好处
• 方便应用集成,支持非linux平台
• 方便安全隔离,易于对公网开放
• 作业日志在后端,便于查错
• 客户端轻量,升级方便
11
逻辑层
• 负责实现RESTful APIs语义
• 用户请求分两类
• DDL请求,如创建表/删除表,在逻辑层响应完成
• DML请求,如SQL查询和MR作业,需提交计算作业到存储与计算层
• 实现架构
• Worker
• Scheduler
• Executor
• Meta服务
Worker 1
Executor 1
Scheduler
…
…
分布式
meta服务
DDL or DML
DML
飞天集群
飞天作业
逻辑层-双服务架构
12
分布式
meta服务
接入层
逻辑层
飞天集群 A 飞天集群 B · · ·
存储与
计算层
接入层
RESTful协议
Worker 1 Worker m
Executor 1
Scheduler
Executor n
…
服务 A (控制集群A)
Project 1 Project 2
…
服务B
(控制集群B)
13
逻辑层-分析
• Worker/Executor
• 线性可扩展,负载均衡
• Schduler
• 只维护一组运行实例,无状态(状态总是持久化)
• 双ODPS服务
• 灰度发布,不停服务轮转升级,failover
• 分布式meta服务
• 使用阿里云OTS分布式存储系统,无需担心空间不够
• 统一名称空间,双服务和多飞天集群对用户透明
14
存储与计算层
• 多个飞天集群组成
• 支持跨集群(机房)数据共享
• 存储
• 使用盘古分布式文件系统
• Master-Slave结构
• 基于Paxos的多Master,故障恢复小于一分钟
• 文件分块(Chunk),每块存三份,分布在不同机架
• 表数据采用统一文件格式:CFile,基于列存储的压缩文件格式
• 提供数据上传和下载服务,支持PB/天的吞吐量
• 计算
• 支持多种计算模式:SQL,MR,算法库,图计算(Pregel)
• 采用伏羲作业,支持DAG,支持基于CPU/MEM的资源调度
15
提纲
• 背景与概况
• 服务架构
• 关键技术
• 跨集群(机房)数据共享
• 高效SQL引擎
• 矩阵运算和数据挖掘算法库
• 图计算框架
• 服务管理
• 结语
16
跨集群(机房)数据共享(1)
• 为什么要做
• 业务快速增长,单集群扩容受机房容量、飞天规模限制
• 难点
• 数据存储和计算如何划分
• 数据动态变化,需要保证数据读取正确性
• 跨机房带宽如何使用
• 对用户透明
分布式
meta服务
逻辑层
存储与
计算层
ODPS 服务(控制集群) ODPS
服务
飞天集群 A
(机房1)
飞天集群 B
(机房2)
Worker/Scheduler/Executor
飞天集群 A
(机房1)
—— 按业务project进行划分
—— 引入数据版本
—— 跨集群数据复制任务,流控
—— 数据存储本来就对用户透明
17
跨集群(机房)数据共享(2)
• 按业务划分集群
– 关系密切业务的project放在同一个集群
– 每个project对应一个默认集群,作业总是跑在默认集群上
• 数据版本
– 同一份数据(表或分区)在多个集群上可能具有不同的版本
– 当一份数据版本更新后,触发一个跨集群数据复制任务
• 跨集群数据复制
– 表或分区可以配置是否进行跨集群复制(自动或手工)
– 流控,优先级
• 直读直写,应对新的跨集群数据依赖,少量任务
{"LatestVersion":V1,"Status":{"ClusterA":"V1","ClusterB":"V0"}}
18
跨集群(机房)数据共享(3)
• 实施
• 业务project数据依赖做大量的分析统计,与业务方协
商集群划分方案
• 历史数据迁移,观察跨机房数据流量
• 开始逐步切换project的默认集群到新集群
• 效果
• 拥有万级别的大规模集群,后期扩容不受限制
• 对用户透明,跨机房流量可控
• 业务方反映这是最轻松的一次业务迁移
19
高效SQL引擎
• 作业概况:
– DDL:几十万/天,DML:几万/天
• 特性
兼容大部分Hive语法
支持Python和Java写UDF,UDAF,UDTF
物理执行方式:DAG,C++实现
Code gen
准实时实现(Service-Mode)
20
高效SQL引擎(2)-DAG
• 示例
• Hive
• ODPS SQL
• 减少磁盘IO,SQL嵌套多层时性能改进更明显
SELECT … FROM a JOIN b ON a.id=b.id GROUP BY a.c;
M1 hdfs hdfs R1
Job 1
M2 hdfs R2
Job 2
M1
pangu R1
M2
pangu R2
SQL(3)-准实时
• Service-Mode
• 常驻服务,预先申请好worker - 减少调度开销
• Shuffle数据不落地,直接写网络
• 假设作业规模m*r,要求r个reduce先起,接收map写的
数据
• 内存文件
• LLVM,减少编译时间
• 根据SQL类型和数据量动态决定是否采用Service-
Mode方式
• 未考虑Failover,主要用于开发project和Adhoc数
据分析
22
Xlib-矩阵运算与数据挖掘算法库
当前支持算法
– SVD分解
– 逻辑回归
– 随机森林
– …
集成Graphlib算法库
• 金融建模/广告等场景有强烈的分布式算法需求
• ODPS分布式算法库
基于MPI,C++实现
集团共建算法社区模式,集成常用基础性算法
23
图计算框架
• 海量图结构数据
– 社交网络(来往,微博),物流信息(菜鸟物流)
– 电商关系:类目/商品/买家/卖家,交易/浏览
• ODPS图计算框架
– 支持类似Pregel的Java编程接口,面向迭代类型的作业
– 磁盘IO→内存网络,换来更快的性能
典型应用:
– PageRank
– K-均值聚类
– 非负矩阵分解NMF
– …
算法往往跟业务相关
24
提纲
• 背景与概况
• 服务架构
• 关键技术
• 服务管理
• 结语
25
服务管理
• 多租户共享集群
• 基于ACL和Policy的认证授权机制
• 基于project的业务划分
• 基于配额的管理
• 基于历史的优化
• 多种类型计算作业共享集群
26
总结
• 阿里巴巴数据处理服务(ODPS)
– 支持海量数据的离线存储和计算
– 以RESTful API的方式提供服务
– 基于飞天分布式平台
– 支持跨集群(机房)数据共享
– 支持SQL、MapReduce、MPI、图计算编程框架
– 支持常用的矩阵运算和数据挖掘算法
– 支持多租户和基于ACL/Policy的权限控制
我们面对一座数据金矿,就看怎么能挖出更多的
金子,期待有志之士加入阿里数据平台
www.alidata.org
27
Q & A
欢迎安装来往,扫描加入ODPS扎堆