百度 王猛 - 百度olap系统实践

梁田田

2018/05/13 发布于 技术 分类

大纲: 1) OLAP系统概述 2)百度OLAP系统-Palo的架构和实现 3)Palo和业界其他产品的对比 4)Palo的对外开放之路

文字内容
1. 成就直达号的大数据引擎技术专场 百度直达号 http://zhida.baidu.com/ 百度开放服务平台 http://developer.baidu.com/ 百度开放云 http://bce.baidu.com/
2. 百度OLAP系统实践
3. 目录 • OLAP背景介绍 • Palo整体架构 • Palo关键技术 • Palo对外开放
4. 什么是OLAP • Online Analytical Processing – Analytical Processing vs. Transactional Processing – Online vs. Offline (Interactive vs. Batch)
5. OLTP vs. OLAP 面向应用 访问模式 数据 数据规模 数据更新 数据组织 OLTP OLAP 日常交易处理 明细查询,分析决策 简单小事务,操作少量数据 复杂聚合查询,可以过大量数据 当前最新数据 历史数据 GB TB ~ PB 实时更新 批量更新 满足3NF 反范式,星型模型
6. Online vs. Offline
7. OLAP - Interactive Data Analysis 结构化数据的 简单查询分析 Reporting Multidimensional Analysis SQL DB (PALO) 文本数据的 简单查询分析 各类数据的 复杂分析 Text Analysis Data Mining Search DB Mining DB
8. OLAP应用-在线报表
9. OLAP应用-多维分析
10. 产品 Netezza Greenplum Vertica Aster Data ParAccel 商业产品 简介 2000年在美国成立 Netezza TwinFin 2003年在美国成立 Greenplum Database 2005年在美国成立 Vertica Analytic Database 2005年在美国成立 nCluster 2005年在美国成立 PADB 技术特点  软硬一体机  采用FPGA数据过滤代替索引  行存 + 列存  Shared-Nothing集群  列存  Shared-Nothing集群  SQL-MapReduce  Shared-Nothing集群  列存 + 自适应压缩  Shared-Nothing集群 收购情况 2010年9月20日,IBM出资17.8亿美 元收购 2010年7月6日,EMC出资3亿美元收 购 2011年2月,HP出资3.5亿美元收购 2011年7月6日,Teradata出资2.63亿 美元收购 2013年Actian出资1.5亿美元收购, Redshift宣称使用ParAccel
11. tive Analysis of Web-Scale Datasets (Google 2010) 开源社区和互联网企业 Implementation On The MapReduce Framework (Google 2011) cessing a Trillion Cells p er Mouse Click (Google 2012)
12. 目录 • OLAP背景介绍 • Palo整体架构 • Palo关键技术 • Palo对外开放
13. Palo • A MPP-based Interactive Data Analysis SQL DB • A Google Mesa Clone, is simpler and better than Mesa • 面向百TB~PB级别,结构化数据,毫秒/秒级分析 • 百度大数据部OLAP团队研发 • 第三代产品 Doris -> OlapStroageEngine -> Palo • PALO意为“玩转OLAP” • 80+产品线使用,400+机器,单一业务最大百TB,15年预计部 署1000台
14. Palo设计原则和定位 • 简单可依赖 低成本 线性扩展 支持云化部署 1/10 ~1/100 Cost 高可用 100~200节点 / 1000 TB 高查询性能 99.9999 % Uptime 10W QPS/ 100GB/s 高加载性能 10 TB / Hour
15. 整体架构 MySQL Tools (MySQL Networking) Palo-FE (Leader, Java) Palo-FE (Follower, Java) Palo-FE (Follower, Java) Palo-FE (Observer, Java) Palo-BE (C++) Palo-BE (C++) Palo-BE (C++) Palo-BE (C++)
16. 目录 • OLAP背景介绍 • Palo整体架构 • Palo关键技术 • Palo对外开放
17. Frontend Metadata Management • State Machine + Replicated Log • 类似Raft协议思想 Log Replicating Leader Followers Observers Metadata In MEM Checkpoint.10 Checkpoint.13 LOG.11 LOG.12 LOG.13 LOG.14 Metadata In MEM Checkpoint.10 Checkpoint.13 LOG.11 LOG.12 LOG.13 LOG.14 Metadata In MEM Checkpoint.10 Checkpoint.13 LOG.11 LOG.12 LOG.13 LOG.14
18. MySQL Networking Protocol MySQL Tools (MySQL Networking) Palo-FE (Leader, Java) Palo-FE (Follower, Java) Palo-FE (Follower, Java) Palo-FE (Observer, Java) Palo-BE (C++) Palo-BE (C++) Palo-BE (C++) Palo-BE (C++)
19. MySQL Client MySQL Proxy MySQL Protocol Layer Frontend  轻量级客户端  与上层应用兼容容易  学习曲线平缓,方便用户上手使用  利用MySQL相关工具,比如MySQL Proxy
20. Tableau兼容性
21. BIEE兼容性
22. R语言兼容性
23. 存储模型 Keys Values聚合方式Sum, Replace Values Base表 Rollup表 引自Google Mesa Paper Delta更新
24. Compaction 引自Google Mesa Paper
25. 存储格式 – 行列存 • 数据块存储 – 每个块包含256行 – 块内按列存储 – 块整体压缩 索引文件 date=20140305, uid=1000 • 稀疏索引 – 索引驻内存 – 每个块一个索引项 – 部分Key作为索引 (Shortkey) 数据块
26. 存储格式 – 列存储 w w w .gbase.cn  数据按列存储,每一列单独存放  只访问查询涉及的列,大量降低I/O  数据类型一致,方便压缩  数据包建索引,数据即索引 GBase 8a 技术白皮书 GBase 8a 核心功能  Palo存储引擎利用原始过滤条件以及min、max和sum智能索引技术 将数据4.集3查.2询. 智范围能尽索可能引地使缩小用,原可以理大大减少I/O,提升查询性能 a (date) 100101 100101, 100102 100102 100103 b (int) 8, 10 5, 25 30, 50 1, 5 c d e ... ... ... True = 完全确定 必须读取列数据 ... ... ... Possible = 有可能 可以进一步优化结合其它条件过滤后确定 ... ... ... False = 完全排除 不需要读取列数据 ... ... ... 100101, 100101 100101, 100102 8, 10, 600000 5, 25, 1155261 {min, max, sum, ...} 600000 + 24351 b列一个需要打开的数据包 select from a sum(b) as b mytab where a<='100101' group by a order by b desc 结果集 过滤条件 I/O 基本算子 假设一个表 mytab,按列存储了 a、b、c、d、e 五列,GBase 8a 存储引擎将每
27. 数据分区 • 单层分区 – Hash Partition – Elastic Range Partition Tablet1 Tablet2 Tablet3 Tablet4 Tablet5
28. 数据分区 • 单层分区问题 – 导入性能低,元数据更新频繁 – 冷数据,会重复进行compaction,浪费资源 – 冷热数据部方便进行异构存储介质优化(SSD/SATA) – 数据删除比较低效 • 复合分区 PARTITION BY LIST(date) ( PARTITION 20150101 VALUES IN (“20150101”), PARTITION 20150102 VALUES IN (“20150102”) ) SUBPARTITION BY HASH(user) PARTITIONS 16;
29. 向量执行引擎
30. 向量执行引擎 • 行式执行引擎的问题 – 每行一次函数调用,打断CPU流水,不利于分支预测 – 指令和数据的cache miss – 编译器不友好,不利于循环展开,SIMD • 设计思路 – 单条处理到批量处理 – 行式处理到列式处理 • 效果 – Star Scheme benchmark性能提升2~4倍
31. 库内分析 计算 传输数据 传输数据 计算 计算 • UDF • UDAF • UDTF
32. Palo核心技术 • 存储引擎 – 分布式存储引擎,单表容量可以到百TB~PB – 复合分区 – 列存储,高效压缩和编码,智能索引 – 小批量导入 + 批量原子提交,MVCC – 高效的分布式数据导入 – 在线create rollup,schema change – 完善的分布式管理框架(自动副本均衡,副本修复)
33. Palo核心技术 • 查询引擎 – 实现Mysql网络协议,易用,和各种BI工具无缝对接 – Share-noting MPP架构,可扩展性好 – 大表分布式join (shuffle和broadcast) – 谓词下推,复杂谓词下推 – Rollup表智能选择 – Partition pruning – 向量执行引擎 – 库内分析 – 丰富的SQL表达:窗口函数 – 多租户资源隔离
34. 目录 • OLAP背景介绍 • Palo整体架构 • Palo关键技术 • Palo对外开放
35. 基于Palo的云分析 – OLAP Engine • OLAP Engine Alpha 2014.9 • BigQuery 模式
36. 基于Palo的云分析 – OLAP Engine • OLAP Engine Beta 2015下半年,目前正在邀请用户测试 • Redshift模式
37. 开源计划 • 2015下半年,10月左右,开源Palo • 2016年开源云化框架
39. 成就直达号的大数据引擎技术专场 百度直达号 http://zhida.baidu.com/ 百度开放服务平台 http://developer.baidu.com/ 百度开放云 http://bce.baidu.com/