当前课程知识点:大数据平台核心技术 > 第一讲 大数据和ODPS > 主讲人:程永 > 大数据平台ODPS(主讲人:程永)
大家好
我是来自于阿里云
数据事业部的永初
接下来由我给大家介绍ODPS
在过去的双十一
ODPS非常成功地支持了
双十一的海量交易
实现了每秒8万笔新订单的
这种创建
实现了每小时
17个PB的数据量的一个处理
而业内最大的信用卡组织
在实验室的环境里面
也仅仅实现了
每笔2万笔订单的一个处理
那我们在双十一的过程中
实际的下单
就是付款这个环节
实现了每秒6万笔的一个处理量
那在今年
我们的目标是希望能够实现
10万笔每秒的一个处理
一个负载
那我们来看一下
我们的第二个案例
就是ODPS支持蚂蚁金服
进行业务的创新
在过去的几年里面
ODPS成功地支持了蚂蚁金服
实现了对30万客户的一个
贷款的一个发放
而且通过的这种
自动信用风险模型
实现了自动化的审批
在1秒钟之内
可以完全实现审批的流程
不需要人工的进行干预
截至到今年的1月份
整个的坏账率不到1%
那我们的第三个案例
可以看一下 就是天虹基金
现在天虹基金管理的
超过5千亿的一个规模
那现在通过新的ODPS
这个方案以后
可以实现每秒钟
11000笔以上的一个处理
那在之前的时候
没有采用我们的ODPS的时候呢
仅仅是可以实现
基于传统架构仅仅实现
每秒不到1000笔的这个处理能力
那清算
基于ODPS可以
在30分钟之内可以处理完以前
需要8小时的一个处理工作量
实现了16倍的一个提升
而且现在是
这是 整个来讲的话
就是说现在ODPS的一个现状
那五年前是完全另一个样子
在五年前
整个集团的体系结构
是采用了IOE架构加Greenplum
和Hadoop一些相关的系统
随着业务的快速发展
现有的系统架构
越来越难以满足整个系统的要求
特别是表现在软硬件的成本
以及可扩展性上
另外
当时各个业务部门的数据
是散落在多个集群当中的
彼此之间数据并不通
数据共享非常非常困难
由于数据不集中
导致数据经常被拖来拖去
重复的存储和计算
经常发生
光淘宝商品类的目录表
当时就有70多张
由此我们展开了
多年的这种去IOE的一个进程
接下来让我们看一下
阿里大数据平台的发展历史
2009年9月
阿里云率先成立
愿景就是说
想做一个分享数据的第一平台
到了2010年的10月份
第一个自主研发的飞天平台
集群开始稳定运行了
到了2012年的7月
我们开始着手建立
统一的数据平台
从而实现数据的统一的存储
数据标准的统一
以及数据安全的统一管理
到了2013年的8月份
单集群规模
超过5000台服务器的飞天集群
开始正式运营
到了2014年
阿里的大数据平台技术
日益开始成熟
不但可以支撑
双十一的海量的交易
同时也可以往外输出
到了2015年
可以看到在各行各业
都已经率先取得了突破
比如说像公安 海关
像石化 像数据中国
等等各个业务线
那接下来让我们来看一下
阿里的大数据平台的体系结构
在整个体系结构里面
大家可以看到
最核心的是中间的云计算
在云计算之外
是我们的核心计算引擎
就是ODPS
和我们的实时计算引擎ADS
以及我们的流计算引擎OSPS
然后在此之外
就是我们的数据引擎
就是在这个数据引擎里面
我们提供各种各样的工具
而且我们还鼓励
我们的生态合作伙伴
在这个层面
提供各种各样的工具
在工具的层面以外
是一些智能一些应用
在这个里面
可以是面向各个行业的一些
Repeatable Solution
或者是一些Application
通常会有ISV来完成
以上我们讲解了
阿里的大数据的体系结构
接下来我们来看一下
飞天的体系结构
飞天的底层是由Linux服务器
组成这种大规模的集群
在此基础之上 大家可以看到
它是由几个最基本的服务组成的
从左往右看可以看到是说
远程过程调用 安全的管理
非物质协同服务和资源管理
其中远程过程调用
主要是用来
支持点对点之间的通信和校验
而安全管理
主要是用来支持
在多租户的情况下
保障用户和应用的安全
安全一般分成两个部分
一个是认证 一个是授权
认证是基于kerberos
我们的授权是基于capability
在第三个服务
像分布式协同服务
主要是用来提供分布式锁
page管理
以及分布式状态同步
等一些基本的服务
资源管理主要是用来实现对CPU
和内存的这种资源管理
管理每台机器上运行的任务
生命周期
并控制这些资源的使用
在这些服务之上
大家可以看到
有两个基本的组件
分布式文件系统和任务调度
我们的分布式文件系统
提供了类似这种
POSIX API的这种接口
你可以想象它有一个
统一的这种地址空间
命名空间
一个树状的结构
它这里面大概有上亿的数据文件
我们分布式的文件系统
支持权限的控制
目录级别的额度控制等等
对于任务调度
为了充分利用集群的资源
用户必须用一种新的模式
进行编程
让飞天知道
如何把这些应用
分解成许多并行的实例
并且在发生故障的时候
能够自动地恢复
大家可以看到
在这个体系结构图上
左右两边还有两个模块
左边是集群的部署
右边是集群的监控
集群的部署组件
主要是用来控制应用
和飞天在集群上的部署工作
因为我们要同时支持一些
离线的应用和在线的应用
在线应用一个很大的需求是说
在线的扩容
也就是说
如果你加一百台机器
你是不需要停集群
或者是停服务的
还有一件事情就是在线升级
此时在线升级是不能停的
你需要把新版本的服务
和老版本的服务
通过轮转升级的方式
升级到新版本中去
右边的集群监控组件
主要是用来提供集群运行状况
和性能的监控
它提供
监控系统运行状态的仪表盘
还能够支持用户自定义的监控
和报警
提供离线或者在线的故障诊断
和性能分析
在这样的组件之上
大家可以看到
就是飞天平台
对外发布的一系列云服务
比如说像弹性的计算服务 ECS
开放的存储服务 OSS
云数据库服务 RDS
开放结构化数据服务 OTS
以及今天课程讲的重点
开放数据处理服务 ODPS
其中ECS是一种
简单高效的处理能力
可弹性伸缩的云计算服务
可以帮助用户快速地构建这种
稳定安全的应用
OSS主要是用来存储
非结构化的数据
比如说像音频 视频 图片
等等
RDS主要是用来构建在
SSD盘上
它可以兼容MySQL,SQLSERVER
PostGreSQL协议的关型数据库服务
当然如果你想使用
分布式的这种服务
还有一种是DRDS
这个完全是一个
分布式的一个服务
就是RDS的分布式的服务版
我们的分布式文件系统
也被称为盘古
盘古的架构
和Google的GFS很类似
同样是采用master/slave
这种主层架构
master主要负责原数据管理
slave也被称作ChunkServer
主要是负责读写的请求
master是基于Paxos的多Master架构
当一个master死了以后
另外一个master
可以很快地接管过去
基本上能够做到故障恢复
就控制在1分钟以内的时间
文件是按照分片的方式
进行存放的
每个会有三个副本
会被放置在不同的机架上
最后我们还提供
端对端的数据校验
在整个规模来讲
文件是无限制的
单集群可以大于5K
接下来我们看一下
我们的资源管理和任务调度
我们称之为伏羲
伏羲其实比业内现在用的
Hadoop2.0里面的Yarn要早两年
我们在整个伏羲体系结构里面
大家可以看到
我们做了很多的增强
包括像稳定性的增强
多租户的增强
规模的增强 等等
在稳定性方面
大家可以看到
我们伏羲的master实现了HA
另外像APP的master
我们也做了Failover的这种增强
对资源的管理
我们是可以提供多方面的调度
比如说像我们可以实现对CPU
对内存等等控制
另外我们还提供
像配额组的管理可以实现
对资源的弹性的一个控制
通过最大最小值
可以控制这个配额组的资源
另外我们还提供像进程沙箱
离线在线的混布的模式
在规模方面
我们现在提供
一万台以上的这种规模
我们接下来看
伏羲的作业编程模型DAG
一个作业可以看成一个
有向无环图
里面每一个结点都是一个task
然后每个task
都可以按照数据分片
在并行地进行
task是有边的
这个边就是数据流
然后每个task有多路的输入
和多路的输出
这两个task之间的边
表示cross shuffle
大家可以看到在下方的图上
Mapreduce模型
是这个模型的一个特例
只有一个输入 一个输出
并且只有两个task
一个Map和一个Reduce
我们接下来看下一页
就是开发式数据处理服务ODPS
ODPS是基于飞天开放平台
实现的一套
用于海量数据存储和计算的服务
ODPS是国内的唯一的一个
大数据平台
经过了海量数据的
检验的一个平台
在阿里巴巴内部
ODPS经历了像广告 搜索
BI 像淘宝 天猫 聚划算
以及像数据市场
还有阿里小贷 余额宝
等多个产品的这种
海量数据的一个实际的检验
在规模上来看
ODPS单一集群现在可以达到
一万台以上的一个规模
而且还可以同时保证
80%的线性扩展能力
如果是说
不需要这么高的线性扩展能力
整个集群的部署能力
完全是可以一百万台以上
一直到无限
整个来讲的话
ODPS是支持同城 异地
等多种的数据中心部署模式
另外在用户数上
整个集群是支持
一万个用户以上的
另外像项目的应用
也是可以支持一千个以上
像部门多租户
也可以支持一百个以上
当然这个数字都是
可以再往上涨的
也就是说我们为了考虑性能
其实是推荐不要太多的一个设置
另外像作业
整个集群可以支持
一百万以上的作业
然后并发的作业
可以支持两万以上
我们接下来看一下
ODPS的体系结构
大家在图上可以看到
ODPS是构建在飞天系统之上的
在飞天系统之上
又分成了逻辑层和接入层
那在逻辑层可以看到有几个组件
像scheduler像Worker和Executor
在右边就是分布式的这种
原数据的服务
可以看到整个体系结构
和开源的Hadoop的架构
非常非常类似
再往上走可以看到是接入层
再接入层左边
我们称之为叫Tunnel
可以实现整个数据的上传和下载
在右边我们提供HTTP的服务
或者是提供restAPI
那这种可以提供
可以让数据应用连下来进行访问
整个ODPS可以基于
Service mode的方式进行执行
而且支持这种shuffle的不落盘的模式
可以极大的加速这种执行的效率
ODPS是支持完善的这种
多租户的机制
通过存储和计算配额的方法
可以让多个用户
分享一个集群的资源
所有的计算任务
在ODPS里面
都是运行在安全的沙箱里的
通过进程 应用
和系统的沙箱
配合运行时的这种签权的方法
可以保证整个数据的安全
在安全方面
ODPS还提供非常多的
一些授权的管理手段
比如说像ACL
决策的授权
Policy的授权
跨Project的授权
以及这种内部的机制
可以提供精确到列到列的这种
级别的安全的方案
满足一个组织
或者是跨组织的之间的这种
授权访问的需求
那对于安全比较高的项目
可以提供项目保护机制
防止数据的泄漏
另外在系统级别
Project级别和表级别
提供这种RP访问的白名单机制
就是可以防止
非名单以外的这种访问
那在调度方面
ODPS是可以提供像
Fair Scheduler
像先进先出的Scheduler
抢占 组内优先
以及这种最大最小值的这种
Quota的设置都是支持的
那在对多租户的资源的控制方面
我们提供全方位的支持
比如说像CPU
可以通过抢占的模式
可以基于Linux container的方式去实现
同样对于Memory
对于Network
还有对Network的QoS
以及对磁盘
都是提供这种
全方位的资源的一个控制
接下来我们看一下
ODPS的核心抽象
在ODPS中
主要通过Project进行管理
Project类似于DataBase或Schema
是用来用户隔离
和访问控制的主要边界
在Project中
主要包含Table Partition
是用来存储结构化数据的
Volume
主要是用来存储非结构化数据的
另外还有像UDF Resource
Job Instance Tunnel Event等等
其中Tunnel主要是用来
上传下载数据用的
在此之外还有用来控制
用户对Project内
实体访问的这种安全机制
主要是通过User
和Role来实现的
接下来我们看一下
ODPS的数据存储模式
在ODPS中
数据有三份拷贝
从而在存储上
保证了数据的可靠性
我们前面讲过ODPS集群
可以跨机房进行部署
从而突破了机房的
物理容量的限制
支持同城或者异地多种模式
大家要留意一下
如果我们采用这种同城或者异地
部署这种单一集群模式的时候
如果是跑批量的这种情况下还好
对时延考虑比较低的情况下
还是可以
如果是对时效性要求比较高
那么建议是把其中一些
关键的一些数据进行复制
那这样的话
两边都有这个数据以后
整个计算的性能会加快
在ODPS中
是采用了行列存储的模式
支持Gzip、Bzip2、Snappy、LZ4等
多种的压缩格式
那ODPS
通过对存储和计算的压缩
只有当计算过程中
要用到的时候
这些数据才会被解压缩
从而极大地提高了整个效率
这是整个ODPS的海量数据存储
那接下来我们看一下
ODPS的计算工具和编程模型
在ODPS当中
提供多种计算工具和编程模型
比如像SQL
准实时SQL 流计算 MapReduce
图计算 算法平台等等
其中像准实时SQL
是提供这种计算过程的数据
不落磁盘这种模式
从而加快了整个性能
像图计算
接下来我们也会去详细介绍
就是图计算这一块的话
其实我们可以提供
非常大的容量的一个处理
海量数据的这个处理
并通过分布式的方式
可以实现这种线性的扩展
在ODPS里面
通过这种多种的工具
可以全方位地满足
用户从实施到离线
从数据仓库建设
到数据挖掘等多种场景的需求
用户完全没有必要
采用多种工具拼凑的方式
去形成一个解决方案
ODPS SQL的执行
基于飞天的有向无环图执行模式
比MapReduce的执行方式
要效率更高
ODPS SQL采用C++进行编写
语法兼容Hive
是采用代码生成的实现方式
比impala早了近两年
基于飞天的有向无环图编程模式
比MapReduce省了IO
比Tez技术早了近四年的时间
整个ODPS SQL在阿里巴巴内部
已经生产
稳定使用了四年多的时间
经过了大规模的生产检验
可以保证用户在ODPS SQL上
高效稳定地运行
接下来我们看一下
ODPS的图计算
ODPS Graph是一套面向
迭代的图计算处理框架
图计算作业使用图进行建模
图是由点和边组成的
点和边包含权值
通过迭代对图进行编辑 演化
最终求解出结果
典型应用你像PageRank
K-匀值聚类算法等等
用户可以ODPS Graph提供的接口
Java SDK编写图计算程序
ODPS Graph处理的图
必须是一个有点和边
组成的有向图
由于ODPS
仅提供二维表的存储结构
因此需要用户自行将图数据
分解成二维表格式
存储在ODPS当中
在进行图计算分析的时候
使用自定义的GraphLoader
将二维表数据转化成
ODPS 00:19:21:16引擎中的点和边
至于如何将图数据
分解成二维表格式
用户可以根据各自的业务场景
做决定
ODPS Graph可以支持
一百亿的顶点
一千五百亿的边的规模
支持节点的失败自动恢复机制
接下来我们看一下
ODPS提供的算法平台
ODPS提供丰富的
机器学习算法库
比Hadoop体系当中的Mahout
速度更快
数量级的性能提升
主要原因是采用C++高效实现
基于MPI编程框架
大量使用内存和网络
进行算法加速
并且算法实现和规模
经过了阿里巴巴内部
大规模的生产检验
ODPS算法平台
在阿里巴巴内部的实际环境中
支持一百亿的Feature
和五百亿的Sample
以上我们介绍了
ODPS的体系结构
以及各个组件
大家如果想有什么疑问
可以跟我们留言
-主讲人:武永卫
-主讲人:程永
-QUIZ--作业
-大纲
-初步认识大数据对分布式存储系统的需求
-理解大数据对分布式存储系统的需求
-具体说明大数据对分布式存储系统的需求
-大规模分布式存储的挑战
-小概率事件-Raid卡故障
-分布式存储系统举例
-分布式存储系统重要功能设计要点剖析
-链式写正常流程
-写流程的另一种常见方式:主从模式
-链式写异常流程
-写异常处理的另一种方法-Seal and New
--写异常处理的另一种方法-Seal and New(主讲人:姚文辉)
-读正常流程
-读流程优化-BackupRead
-IO QoS
-数据正确性:checksum
-数据可靠性-Replication
-数据均衡-Rebalance
-垃圾回收-Garbage collection
--垃圾回收-Garbage collection(主讲人:姚文辉)
-Erasure coding
-Erasure coding(3,2)写入和读取过程
--Erasure coding(3,2)写入和读取过程(主讲人:姚文辉)
-元数据管理的高可用性和可扩展性
-元数据管理的高可用性
-Paxos概要
-Raft
-元数据管理的可扩展性
-不同存储介质的特性
-盘古混合存储
-QUIZ--作业
-阿里云飞天分布式调度
-任务调度
-资源调度
-容错机制
-规模挑战
-安全域性能隔离
-分布式调度的发展方向
-QUIZ--作业
-数据格式和抽象
-分布式编程模型
-MapReuduce编程模型
-关系型数据编程模型
-分布式图计算模型
-分布式编程未来展望
-QUIZ--作业
-分布式事务
-分布式一致性算法
-两阶段提交与三阶段提交
-实践--介绍
-关系型计算基本原理_1
-关系型计算基本原理_2
-分布式环境中的连接计算和聚合计算
-其他计算和物理优化
-QUIZ--作业
-提纲
-课程背景介绍
-前序知识
-分布式节点距离计算法则
-数据分布策略
-分布式计算调度
-数据就近原则计算如何容错
-ODPS跨集群数据依赖
-QUIZ--作业
-主讲人:谢德军
--实践2:编写MR完成Group By+Join操作(主讲人:谢德军)
-增量计算和流式计算
-与批量计算的区别
-业界典型系统技术概要分析
-核心技术
-消息机制
-有状态计算、并行DAG、抢占式调度和资源隔离、Failover机制
--有状态计算、并行DAG、抢占式调度和资源隔离、Failover机制(主讲人:强琦)
-StreamSQL
-QUIZ--作业
-软硬件趋势、分布式计算简史与内存计算
-分布式计算
-内存计算
-统一的计算框架
-业界经典系统技术分析-spark&flink
--业界经典系统技术分析-spark&flink(主讲人:强琦)
-QUIZ--作业
-主讲人:褚葳
-QUIZ--作业
-分布式环境下的新问题
-工程实现范例
-课程设计相关问题