阿里巴巴离线大数据处理平台概述 汤子楠
个人介绍 汤子楠 数据平台事业部,产品经理 2007~2010 移动互联网,触屏交互 2010至今 云计算,大数据
提纲 大数据时代 阿里巴巴数据事业部 离线大数据处理平台(ODPS) 我们面临的主要问题 ODPS部分功能概览 结语
大数据时代
大数据时代的挑战 数据关联性 处理能力 数据安全 商业模式 社交网络、用户行为、购买关系 企业内外IT系统的整合 数据规模爆炸式增长 结构化与非结构化数据并存、噪声增多 组合离线、在线、流式等多项计算能力提供解决方案 在大数据上应用传统统计学和数据挖掘算法 数据安全 用户隐私保护、商业数据泄漏、复杂的访问控制需求 企业发展的达摩克利斯之剑 商业模式 如何利用大数据盈利 数据驱动的新业务模式与企业传统业务模式的冲突
阿里巴巴的大数据产品探索
淘宝贷款 解决小微企业贷款难的问题: 完全以数据驱动的产品 对既有数据进行二次挖掘 颠覆原有业务模式 规模优势 金额高 流程长 授信难 周期长 完全以数据驱动的产品 对既有数据进行二次挖掘 颠覆原有业务模式 规模优势
阿里巴巴大数据事业部 离线存储 与计算 在线存储 实时计算 流式计算 任务调度 与管理 数据开发与数据可视化界面 数据同步 数据质量监控 元数据管理 安全与审计 计量与计费 服务化 API & SDK 算法库 数据产品 数据地图 数据共享 与合作
阿里巴巴离线大数据处理平台 ODPS (Open Data Processing Service) 支持海量结构化数据的离线存储和计算 以RESTful API的方式提供服务 基于阿里巴巴自主知识产权的分布式操作系统 支持高吞吐量的数据上传下载服务 支持SQL和存储过程 支持MapReduce、BSP编程框架 支持常用的矩阵运算和数据挖掘算法 支持多用户管理和基于ACL和policy的权限控制 基于ODPS可以打造完整的数据仓库解决方案
我们面临的主要问题 首先需要提供一个高效稳定的离线存储和计算引擎 如何支撑5万、15万台以上的机群规模? 多集群架构,运维和管理系统 如何在一个平台上支持多个组织的多个用户进行开发? 多租户支持,安全隔离,权限控制 如何了解业务运行状态? 元数据管理,指标系统 如何管理不同种类的任务? 服务化,统一计算入口,可度量和控制的计算资源 准实时查询,R-ODPS,…,我们还在继续探索
高效稳定的计算模型 SQL、Map Reduce仍然是离线运算的主流, 但是, 频繁IO带来的性能瓶颈… 模型描述能力的局限…
准实时查询 优势: 避免IO消耗 节约调度成本 劣势: Failover 资源占用 数据规模 适用场景: Ad hoc分析
图编程 功能: 挑战: 优势: 应用场景: 统一的API、授权、数据存储、meta Master-slave,worker负责子图 通过迭代在节点间通讯和修改图拓扑 挑战: 数据倾斜时的内存控制 与其他类型作业共存 错误恢复 优势: 方便处理图数据 多轮迭代性能远好于MR 应用场景: 推荐、社交网络、物流、…
利用图编程实现SSSP算法(1) GraphLoader – 图加载基类 public static class SSSPGraphLoader extends GraphLoader<LongWritable, LongWritable, LongWritable, LongWritable> { @Override public void load(Record record, MutationContext<...> context) { SSSPVertex vertex = new SSSPVertex(); vertex.setId((LongWritable) record.get(0)); String[] edges = record.get(1).toString().split(","); for (int i = 0; i < edges.length; i++) { String[] ss = edges[i].split(":"); vertex.addEdge(new LongWritable(Long.parseLong(ss[0])), new LongWritable(Long.parseLong(ss[1]))); } context.addVertexRequest(vertex);
利用图编程实现SSSP算法(2) Vertex – 点基类 public static class SSSPVertex extends Vertex<LongWritable, LongWritable, LongWritable, LongWritable> { @Override public void compute(ComputeContext<…> context, Iterable messages) { long minDist = (getId() == 1) ? 0 : Integer.MAX_VALUE; for (LongWritable msg : messages) { if (msg < minDist) { minDist = msg; } if (minDist < this.getValue()) { this.setValue(minDist); for (Edge e : this.getEdges()) { context.sendMessage(e.getDestVertexId(), minDist + getValue()); } else { voteToHalt();
利用图编程实现SSSP算法(3)
矩阵和算法运算支持 - ODPS 基于MPI的算法运算包 图形化交互界面 支持算法: 连接R与ODPS 集成ODPS的算法 SVD分解 逻辑回归 随机森林 … 连接R与ODPS 集成ODPS的算法 - ODPS
多集群架构 业务增长的速度永远快于技术完善的速度, 如何支撑日益膨胀的存储和计算需求?
多集群架构 多计算机群 解决规模瓶颈 统一meta 准实时数据同步 减少热数据跨机房 业务迁移 多控制机群 灰度发布 业务分离
多租户模型 如何支持多个团队在一个平台上开发?
多租户模型 用户空间 授权访问 跨空间访问 受保护的空间 空间互信
ODPS安全架构 数据安全是每个平台产品 需要解决的核心问题
ODPS安全架构 ODPS 客户端 (SDK, Console) ODPS接入层 Web 服务器 ODPS控制集群 ODPS服务 (Meta OTS Store) OdpsWorker Scheduler Executor Hive Server 计算集群n 计算集群1 …
3. 给Fuxi Job配置最小权限的Capability. SQL实例: INSERT OVERWRITE prjB.t1 AS SELECT a.shop_name, b.sale_total FROM prjA.shop a LEFT OUTER JOIN prjB.sale_detail b ON a.shop_name=b.shop_name; ODPS 客户端 (SDK, Console) 云帐号 用户认证 ODPS接入层 Web 服务器 … 域帐号 ODPS控制集群 飞天内部认证 与授权中心 ODPS服务 OTS (Meta Store) OdpsWorker Scheduler Executor Hive Server KDC (SSO服务) Shenshu (授权服务) 1. 认证. 计算集群n 2. 检查用户权限, 检查数据保护策略. 计算集群1 3. 给Fuxi Job配置最小权限的Capability. eg, pangu cap权限如下: { “pangu://odps/prjA/shop/”: R, “pangu://odps/prjB/sale_detail/”: R, “pangu://odps/prjB/t1/”: W } …
基于沙箱的纵深防御体系 ODPS 客户端 (SDK, Console) 云帐号 用户认证 ODPS接入层 Web 服务器 … 域帐号 用户提交的MapReduce程序可能会: 恶意耗尽集群资源(CPU, Memory, Network, Disk); 直接访问Pangu文件,窃取或篡改其他用户数据; 窃取Linux节点上的飞天系统进程的敏感数据(如Tubo的capability); ... ODPS 客户端 (SDK, Console) 云帐号 用户认证 ODPS接入层 Web 服务器 … 域帐号 ODPS控制集群 基于沙箱的纵深防御体系 飞天内部认证 与授权中心 ODPS服务 OTS (Meta Store) OdpsWorker Scheduler Executor Hive Server KDC (SSO服务) Shenshu (授权服务) 计算集群n 计算集群1 Guest OS Kernel Process Sandbox 1. Java沙箱 Java Sandbox … 2. Linux进程级沙箱 3. 虚拟机沙箱
灵活的授权方式 "Effect": "Allow", "Principal": "zinan.tang", { "Version": "1", "Statement": [ "Effect": "Allow", "Principal": "zinan.tang", "Resource": "acs:odps:*:projects/sampleprj/tables/test_*", "Action": ["odps:Update", "odps:Select"] "Condition" : { "IpAddress" : {"acs:SourceIp": "10.32.180.0/23"} } ]
数据上传下载服务 如何解决系统与多个数据源之间的数据交换问题? 背景: 产品线太多需要收拢 需要与DataX、TT分工整合 作为ODPS产品的一部分
数据上传下载服务 服务化:REST 结构化数据 流式数据传输 高并发上传下载 服务能力水平扩展 可靠传输 Failover & 断点续传 统一认证鉴权 流控和防攻击 提供可编程接口 背景: 产品线太多需要收拢 需要与DataX、TT分工整合 作为ODPS产品的一部分
利用ODPS Tunnel上传数据
结语 数据驱动的新商业模式是互联网产业下一个增长点 云计算能力是大数据应用的基石 分布式存储和计算的挑战 ODPS才刚刚起步 性能、稳定性、单点、通讯、故障恢复、状态机、… ODPS才刚刚起步 10万台、万兆网卡、分布式内存文件读写、…
谢谢大家!