李远策 快手万亿级实时+OLAP+平台的建设与实践

ArchSummit

2018/12/08 发布于 技术 分类

文字内容
1. 快⼿手万亿级实时OLAP平台的建设与实践 李李远策 快⼿手科技
3. 李李远策 • 快⼿手科技 ⼤大数据平台架构师 • ⼤大数据查询引擎团队负责⼈人 • 开源项⽬目“Xlearning”作者
4. • 快⼿手OLAP平台概览 • Druid系统介绍 • Druid在快⼿手的使⽤用经验和改进分享 • 未来OLAP平台的⼯工作计划
5. 快⼿手OLAP平台发展历程
6. 快⼿手OLAP平台规模 节点数 数据源 每天录⼊入消息数 索引数据量量 150 ~2000 ~5000亿 ~400TB 每天查询次数 平均查询时延 P90查询时延 P99查询时延 ~1000万 ~50ms ~100ms ~500ms ~1000ms 看板数量量 800 图表数量量 1万
7. 业务背景 多媒体质量量分析 • 每天数百亿数据量量 • CDN智能调度检测 • 播放质量量监控 • 数据探索和问题排查
8. 业务背景 A/B Test • 每天数百亿数据量量 • 数千对⽐比指标 • 上千Ab实验 • ⼏几⼗十万次查询调⽤用 • <100毫秒级查询时延
9. OLAP平台技术选型 业务需求 超⼤大数据规模(单数据源每⽇日100亿+消息数)⽀支持 毫秒级 / 秒级查询时延 数据实时性 ⾼高并发查询 稳定性 数据Schema灵活 精确去重功能 SQL接⼝口⽀支持 重要度 ⾼高 ⾼高 ⾼高 ⾼高 ⾼高 ⾼高 / 中 中 低
10. OLAP技术实现⽅方案对⽐比 
 超⼤大数据规模 查询性能 数据实时性 ⾼高并发 Schema灵活性 精确去重 SQL接⼝口 Hive / SparkSQL 好 差 差 差 好 ⽀支持 好 Kylin 好 好 中 好 差 ⽀支持 好 ES 中 中 好 好 好 ⽀支持 中 Druid 好 好 好 好 好 不不⽀支持 中
11. • 快⼿手OLAP平台概览 • Druid系统介绍 • Druid在快⼿手的使⽤用经验和改进分享 • 未来OLAP平台的⼯工作计划
12. Druid系统架构 streaming data batch data coordinator nodes overlord nodes middle manager nodes mySQL broker nodes HDFS historical nodes CLIENT QUERIES DRUID NODES EXTERMAL DEPENDENCIES QUERIES METADATA DATA/SEGMENTS
13. Druid性能为何如此⾼高效 mmap cache Druid性能核⼼心优势 预聚合 列列式存储 bitmap索引
14. Druid数据预聚合 时间戳列列 维度列列 指标列列
15. Druid Bitmap索引 select Added from datasource where Gender =‘Female’and City = ‘Taiyuan’
16. Druid I/O 数据摄⼊入: • 实时Kafka导⼊入 • 离线HDFS/Hive 查询API: • Restful • SQL • Python/Java/Go • Hive on Druid (too many bugs) Restful查询Json语法示例例:
17. • 快⼿手OLAP平台概览 • Druid系统介绍 • Druid在快⼿手的使⽤用经验和改进分享 • 未来OLAP平台的⼯工作计划
18. 快⼿手OLAP平台架构 api client superset tableau kafka hive druid broker kafka indexer hadoop indexer broker broker broker historical yarn task task task task segment segment segment hdfs segment segment segment metric 监控 探针 系统 管理理 系统 ZK ZK ZK
19. OLAP平台建设中遇到的问题 更更快 更更易易⽤用 万亿级数据规模 落地中的挑战 更更⾼高效 更更稳定
20. 集群稳定性设计:资源隔离部署⽅方案 proxy proxy 通⽤用brokers broker broker broker 专⽤用brokers broker broker 热数据 通⽤用SSD(保留留最近30天数据) historical historical middle manager middle manager 专⽤用SSD historical middle manager 冷数据 通⽤用HDD(保留留历史数据) historical historical middle manager middle manager 专⽤用HDD historical middle manager overlord (主) coordinator (从) overlord (从) coordinator (主) overlord (从) coordinator (从)
21. 性能优化:物化视图 维度物化视图 ()
22. 性能优化:物化视图 时序物化视图
23. 性能优化:元数据交互加速 Overlord与MySQL交互优化 交互SQL:SELECT payload FROM druid_segments WHERE used = true AND dataSource = ? AND ((start <= ? AND `end` >= ?)) 通过慢查询分析,添加索引,alter table druid_segments add index idx_ds_used_s(dataSource, used, end),性能 提升如下:从10秒降到1秒,性能有10倍提升
24. 性能优化:元数据交互加速 Coordinator与MySQL交互优化 • coordinator全量量扫描druid_segments表改成增加读取 • druid_segments表添加idx(used,created_date) ⽬目前集群segment数在数百万个左右时MySQL的耗时,从之前的1.7min降⾄至现在的30ms
25. 性能优化:元数据交互加速 Coordinator与MySQL交互优化(续) • segment之前使⽤用TreeSet按时间排序确保优先load最近的segment,现在优化成ConcurrentHashSet,并分成最近1天的和⼀一天前的两个set,先操 作最近⼀一天的 • apply rules的时候对LoadRule先判断集群副本和配置的是否⼀一致,是的话就跳过,提升并发能⼒力力 • cleanup和overshadow两个操作合并 Coordinator协调整个集群segments的总耗时,从之前的3min降⾄至现在的30s
26. 资源利利⽤用率改进:Indexing service 调度优化 Supervisor task count根据lag情况⾃自动伸缩 Middle Manager的indexing task资源分配从slot改成按照内存⼤大⼩小分配 • 区分Kafka indexing task和Hadoop indexing task • 允许在提交task时指定task内存⼤大⼩小 并⾏行行Compaction
27. 易易⽤用性提升:集群管理理系统 专为Druid平台的设计的两套⼯工具 Druid数据源管理理系统 • ⾃自助管理理Druid datasource、indexing task • 提升业务接⼊入效率,降低平台同事的运维⼯工作量量 Druid探针系统 • 实现对数据质量量的可知性 • 提升Druid平台的服务质量量
28. Druid数据源管理理系统(Indexing task列列表)
29. Druid数据源管理理系统(查看Indexing task)
30. Druid数据源管理理系统(新建/编辑Indexing task)
31. Druid数据源管理理系统(Datasource列列表)
32. 易易⽤用性提升:Druid探针系统 探针系统功能设计: • 数据源查询热度分析 • 冷/⽆无⽤用 数据源的发现 探针系统功能设计: • ⽆无⽤用 维度/指标 的发现 • ⾼高基维度的发现
33. 易易⽤用性提升:数据可视化⼯工具 Superset:Airbnb开源的与 Druid深度集成 的 交互式 ⾼高效 数据探索分析 与 可视化 系统 待续:此处有张superset⾸首⻚页图 https://github.com/apache/incubator-superset
34. Superset极简示例例
35. Superset极简示例例(续)
36. 快⼿手对Superset的主要改进点 too many to show here bug fix 数据同步 ⾃自动从druid同步数据源 从broker做数据源发现,对新建的kafka数据源能实时发现 数据源信息并⾏行行刷新,提升性能 数据源权限⾃自动关联 增加根据time range⾃自动推荐聚合时间粒度的功能 ffilter box⽀支持全局复杂条件过滤 filter box⽀支持result filter功能 增加dashborad中chart图时间范围选择联动功能 多种图标全⾯面⽀支持time shift功能 新增多time shift功能,并且⽀支持展示差值和⽐比率 table view图形增加差值,差值率 增加chart图形按x轴值排序显示功能 scan查询性能优化,实现column filter的下推 功能&改进 ⽀支持⿏鼠标点选的⽅方式配置avg postagg指标 ⽀支持⿏鼠标点选的⽅方式配置分位计算指标 增加多处快捷键 增加datasource收藏功能 chart分享时⽀支持临时⾃自定义chart名字 产品设计 快⼿手superset改进 权限管理理 新增role管理理员,⾃自助管理理⾃自⼰己role的成员 新增看板权限管理理,限制修改权限 新增数据源权限管理理,限制修改权限 新增数据源指标/纬度定义的权限管理理,控制可⻅见性和修改权限 报警功能 增加对时序曲线图⾃自定义报警的功能 ⽀支持短信/邮件/电话报警分级 ⾃自定义指标阈值/条件筛选
37. Superset Time Shift⽀支持和改进
38. Dashboard多Chart时间窗⼝口滑选联动
39. Superset报警功能设计
40. Druid在快⼿手的改进总结 时序&维度物化视图 元数据交互优化 更更快 数据源管理理系统 数据探针系统 superset数据可视化 更更易易⽤用 改进总结 更更⾼高效 supervisor task⾃自动伸缩 并⾏行行compaction 更更细粒度资源分配 更更稳定 broker隔离 historical隔离 冷热数据隔离
41. • 快⼿手OLAP平台概览 • Druid系统介绍 • Druid在快⼿手的使⽤用经验和改进分享 • 未来OLAP平台的⼯工作计划
42. 未来⼯工作计划 1 新型OLAP技术引⼊入 2 OLAP与Adhoc查询、例例⾏行行报表的整合 3 从动数据流⼊入到数据可视化的⼀一站式服务 4 ⾯面向⾮非技术⼈人员的产品设计
46. 李李远策—快⼿手万亿级实时 OLAP 平台的建设与实 践