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

  • 477 views
Uploaded on

BDTC 2013 Beijing China

BDTC 2013 Beijing China

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
477
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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