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

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

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

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

ODPS

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

• 业务

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

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

– 数百数据开发工程师

– 阿里系各事业部
– 开始为部分第三方ISV和
科研机构...
提纲
• 背景与概况

• 服务架构
•
•
•

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

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

LVS
接入层
RESTful协议

逻辑...
接入层
• 访问ODPS服务的唯一入口,提供SDK和Console
• 功能设计
 用户认证
 RESTful APIs,基于HTTP协议,支持对资源实体的CRUD操作

• 资源实体
 Project 类似DataBase/Schema...
接入层-架构
日志工具

在云端(Web IDE)

客户端

天网

··
·

Console
SDK

RESTful APIs

接入层

数据上传/下载服务
Project 1

逻辑层

ODPS 服务
A

存储与计算层

HTT...
接入层-分析
• RESTful风格的接入层带来诸多好处
•
•
•
•

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

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

• 实现架构
•
•
•
•

Worker
Sc...
逻辑层-双服务架构
接入层

接入层

RESTful协议
Project 2

Project 1

服务 A (控制集群A)

逻辑层

Worker 1

…

Worker m

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

meta服务

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

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

• 分布式meta服务...
存储与计算层
• 多个飞天集群组成
• 支持跨集群(机房)数据共享
• 存储
• 使用盘古分布式文件系统
• Master-Slave结构
• 基于Paxos的多Master,故障恢复小于一分钟
• 文件分块(Chunk),每块存三份,分布在不...
提纲
•
•

背景与概况
服务架构

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

• 难点
•
•
•
•

—— 按业务project进行划分
数据存储和计算如何划分
—— 引入数据版本
数据动态变化,需要保证数据读取正确...
跨集群(机房)数据共享(2)
• 按业务划分集群
– 关系密切业务的project放在同一个集群
– 每个project对应一个默认集群,作业总是跑在默认集群上

• 数据版本
– 同一份数据(表或分区)在多个集群上可能具有不同的版本
{"La...
跨集群(机房)数据共享(3)
• 实施
• 业务project数据依赖做大量的分析统计,与业务方协
商集群划分方案
• 历史数据迁移,观察跨机房数据流量
• 开始逐步切换project的默认集群到新集群

• 效果
• 拥有万级别的大规模集群,...
高效SQL引擎
• 作业概况:
– DDL:几十万/天,DML:几万/天
•

特性







兼容大部分Hive语法
支持Python和Java写UDF,UDAF,UDTF
物理执行方式:DAG,C++实现
Code gen
准...
高效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

...
SQL(3)-准实时
• Service-Mode
• 常驻服务,预先申请好worker - 减少调度开销
• Shuffle数据不落地,直接写网络
• 假设作业规模m*r,要求r个reduce先起,接收map写的
数据
• 内存文件
• LL...
Xlib-矩阵运算与数据挖掘算法库
• 金融建模/广告等场景有强烈的分布式算法需求
• ODPS分布式算法库



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

当前支持算法
–
–
–
–



SVD分解
逻...
图计算框架
• 海量图结构数据
–
–

•

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

ODPS图计算框架
– 支持类似Pregel的Java编程接口,面向迭代类型的作业
– 磁盘IO→内存...
提纲
•
•
•

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

• 服务管理
• 结语

24
服务管理
•
•
•
•
•
•

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

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

支持海量数据的离线存储和计算
以RESTful API的方式提供服务
基于飞天分布式平台
支持跨集群(机房)数据共享
支持SQL、MapReduce、MPI、图计算编程框...
Q&A

欢迎安装来往,扫描加入ODPS扎堆
27
Upcoming SlideShare
Loading in...5
×

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

570

Published on

BDTC 2013 Beijing China

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
570
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

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

    Clipping is a handy way to collect important slides you want to go back to later.

×