1、快手万亿级实时OLAP平台的建设与实践快手OLAP平台概览Druid系统介绍Druid在快手的使用经验和改进分享未来OLAP平台的工作计划快手OLAP平台发展历程节点数150每天查询次数1000万数据源2000平均查询时延50ms每天录入消息数5000亿P90查询时延100ms索引数据量400TBP99查询时延500ms 1000ms看板数量800图表数量1万快手OLAP平台规模业务背景 每天数百亿数据量 CDN智能调度检测 播放质量监控 数据探索和问题排查多媒体质量分析业务背景 每天数百亿数据量 数千对比指标 上千Ab实验 几十万次查询调用 100毫秒级查询时延A/B TestOLAP平台技
2、术选型业务需求重要度超大数据规模(单数据源每日100亿+消息数)支持高毫秒级/秒级查询时延高数据实时性高高并发查询高稳定性高数据Schema灵活高/中精确去重功能中SQL接口支持低Hive/SparkSQLKylinESDruid超大数据规模好好中好查询性能差好中好数据实时性差中好好高并发差好好好Schema灵活性好差好好精确去重支持支持支持不支持SQL接口好好中中OLAP技术实现方案对比快手OLAP平台概览Druid系统介绍Druid在快手的使用经验和改进分享未来OLAP平台的工作计划Druid系统架构coordinator nodesmySQLHDFSoverlordnodesmiddle
3、 managernodesbrokernodeshistoricalnodesstreaming databatch dataCLIENT QUERIESQUERIESMETADATADATA/SEGMENTSEXTERMAL DEPENDENCIESDRUID NODESDruid性能为何如此高效Druid性能核心优势mmapcache预聚合列式存储bitmap索引Druid数据预聚合时间戳列维度列指标列select Added from datasource where Gender=Femaleand City=TaiyuanDruid Bitmap索引Restful查询Json语法示例
4、:Druid I/O 实时Kafka导入 离线HDFS/Hive数据摄入:Restful SQL Python/Java/Go Hive on Druid(too many bugs)查询API:快手OLAP平台概览Druid系统介绍Druid在快手的使用经验和改进分享未来OLAP平台的工作计划快手OLAP平台架构api clientsupersettableaukafkahivebrokerbrokerbrokerbrokerkafka indexerhadoop indexerhistoricaldruidtasktasktasktaskyarnhdfssegmentsegmentsegm
5、entsegmentsegmentsegment探针系统metric监控管理系统ZKZKZKOLAP平台建设中遇到的问题万亿级数据规模落地中的挑战更高效更稳定更快更易用集群稳定性设计:资源隔离部署方案proxyproxyoverlord(主)coordinator(从)overlord(从)coordinator(主)overlord(从)coordinator(从)broker专用brokersbrokerbrokerbrokerbroker通用brokershistoricalmiddle managerhistoricalmiddle managerhistoricalmiddle ma
6、nager通用SSD(保留最近30天数据)专用SSDhistoricalmiddle managerhistoricalmiddle managerhistoricalmiddle manager通用HDD(保留历史数据)专用HDD热数据冷数据性能优化:物化视图维度物化视图()性能优化:物化视图时序物化视图性能优化:元数据交互加速通过慢查询分析,添加索引,alter table druid_segments add index idx_ds_used_s(dataSource,used,end),性能提升如下:从10秒降到1秒,性能有10倍提升Overlord与MySQL交互优化交互SQL:S
7、ELECT payload FROM druid_segments WHERE used=true AND dataSource=?AND(start=?)性能优化:元数据交互加速 coordinator全量扫描druid_segments表改成增加读取 druid_segments表添加idx(used,created_date)目前集群segment数在数百万个左右时MySQL的耗时,从之前的1.7min降至现在的30msCoordinator与MySQL交互优化性能优化:元数据交互加速 segment之前使用TreeSet按时间排序确保优先load最近的segment,现在优化成Conc
8、urrentHashSet,并分成最近1天的和一天前的两个set,先操作最近一天的 apply rules的时候对LoadRule先判断集群副本和配置的是否一致,是的话就跳过,提升并发能力 cleanup和overshadow两个操作合并Coordinator协调整个集群segments的总耗时,从之前的3min降至现在的30sCoordinator与MySQL交互优化(续)资源利用率改进:Indexing service 调度优化Supervisor task count根据lag情况自动伸缩 区分Kafka indexing task和Hadoop indexing task 允许在提交t
9、ask时指定task内存大小Middle Manager的indexing task资源分配从slot改成按照内存大小分配 并行Compaction易用性提升:集群管理系统专为Druid平台的设计的两套工具 自助管理Druid datasource、indexing task 提升业务接入效率,降低平台同事的运维工作量Druid数据源管理系统 实现对数据质量的可知性 提升Druid平台的服务质量Druid探针系统Druid数据源管理系统(Indexing task列表)Druid数据源管理系统(查看Indexing task)Druid数据源管理系统(新建/编辑Indexing task)Dr
10、uid数据源管理系统(Datasource列表)易用性提升:Druid探针系统 数据源查询热度分析 冷/无用 数据源的发现探针系统功能设计:无用 维度/指标 的发现 高基维度的发现探针系统功能设计:易用性提升:数据可视化工具Superset:Airbnb开源的与 Druid深度集成 的 交互式 高效 数据探索分析 与 可视化 系统待续:此处有张superset上海品茶图https:/ many to show here快手superset改进数据同步权限管理增加根据time range自动推荐聚合时间粒度的功能ffilter box支持全局复杂条件过滤filter box支持result filt
11、er功能增加dashborad中chart图时间范围选择联动功能多种图标全面支持time shift功能新增多time shift功能,并且支持展示差值和比率table view图形增加差值,差值率增加chart图形按x轴值排序显示功能scan查询性能优化,实现column filter的下推报警功能bug fix功能&改进产品设计新增role管理员,自助管理自己role的成员新增看板权限管理,限制修改权限新增数据源权限管理,限制修改权限新增数据源指标/纬度定义的权限管理,控制可见性和修改权限增加对时序曲线图自定义报警的功能支持短信/邮件/电话报警分级自定义指标阈值/条件筛选支持鼠标点选的方式
12、配置avg postagg指标支持鼠标点选的方式配置分位计算指标增加多处快捷键增加datasource收藏功能chart分享时支持临时自定义chart名字自动从druid同步数据源从broker做数据源发现,对新建的kafka数据源能实时发现数据源信息并行刷新,提升性能数据源权限自动关联Superset Time Shift支持和改进Dashboard多Chart时间窗口滑选联动Superset报警功能设计Druid在快手的改进总结改进总结更高效更稳定更快更易用broker隔离historical隔离冷热数据隔离supervisor task自动伸缩并行compaction更细粒度资源分配时序&维度物化视图元数据交互优化数据源管理系统数据探针系统superset数据可视化快手OLAP平台概览Druid系统介绍Druid在快手的使用经验和改进分享未来OLAP平台的工作计划未来工作计划1新型OLAP技术引入2OLAP与Adhoc查询、例行报表的整合3从动数据流入到数据可视化的一站式服务4面向非技术人员的产品设计