• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
杨少华:阿里开放数据处理服务
 

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

on

  • 387 views

BDTC 2013 Beijing China

BDTC 2013 Beijing China

Statistics

Views

Total Views
387
Views on SlideShare
387
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • 阿里巴巴-开放数据处理服务 (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