大数据-滴滴业务实时监控系统架构及实践

yif

贡献于2018-03-19

字数:0 关键词:

滴滴业务实时监控系统架构及实践 艾毅 2016/12 议程 • 滴滴实时监控系统演变历程 • 当前架构及服务介绍 • 系统优化方向 滴滴实时监控系统演变历程 预计算 2015年之前 2015年至今 瓶颈: • 计算、存储成本指数级增长 • 不易扩展 优势: • 实时分析海量数据 (秒级) • OLAP系统交互式查询 挑 战 解决方 案 • 快速满足业务需求 • 业务数据库分库、分表 • 数据、维度、指标越来越多 议程 • 滴滴实时监控系统演变历程 • 当前架构及服务介绍 • 系统优化方向 滴滴实时监控系统当前架构概览 Mysql Binlog Canal Server Kafka Cluster 1Text Log Flume Agent API Python Daemon Samza Unified ETL Job Kafka Cluster 2 • Raw data • 通用业务 • Json data • 数据分析 • 数据格式转换 • 数据去重 Samza Metrics Computing Druid Kafka Real-time Indexer HDFS Samza HDFS Producer Druid HDFS Batch Indexer Online Machine Learning Druid Broker API基于指标的语义化API APP:监控报警、热力图… 当前系统架构特点 • 高可用 • 易扩展 • 高性能 • 支持有状态的实时计算 为何选用Kafka? Kafka 是一个高性能、高可用、易扩展的 分布式日志系统 将整个数据处理流程解耦 为何选用Druid? Druid是针对时间序列数据提供低延时的数据写 入以及快速交互式查询的的分布式OLAP数据库 Druid的数据存储方式 • 为OLAP查询优化过的列式存储结构:Segment • Segment中存储聚合计算后的统计结果 • 主要根据时间对Segment文件进行分片存储 Segment包含的三种列类型 • 时间戳列 Ø 作为数据分发、存储、查询的依据 • 维度列 Ø 支持过滤和分组 Ø 使用字典编码压缩 Ø 使用BitMap索引压缩 • 指标列 Ø 用来聚合计算 Ø 使用LZ4压缩 Druid的数据处理流程介绍 Druid节点 外部依赖实时流数据 离线数据 客户端请求 Segements 查询 元数据 缓存 缓存 Lambda架构 Druid Kafka Indexing Service介绍 Overlord Middle Managers Middle Manager 1 Middle Manager 2 Middle Manager 3 Kafka Partition 0 Partition 1 Topic 1 Partition 0 Partition 1 Topic 2 • Kafka中每个Partiton的消息是 严格有序、追加写入、不可改变 的 • 可“回退”到任意的Partition- offset重新消费数据 • 实现Exactly-Once的实时计 算 控制流 数据流 Druid支持近似统计算法 • 为什么要使用近似算法? Ø 计算速度快 Ø 误差可控 Ø 显著降低计算、存储需求 • Druid是如何实现近似算法的? Ø 基于Yahoo开发的 datasketches 库 Ø 使用Theta Sketch近似算法  Ø 支持集合操作(并集、交集、差集) Druid支持地理查询 • 矩形查找 • 圆形查找 • 任意多边形查找 Ø 滴滴贡献给了社区 Ø 包含在Druid 0.9.2版本 滴滴实时订单热力图 为何选用Samza? Samza是一个分布式的实时计算框架; 支持低延时的、有状态的实时计算 Samza运行机制介绍 Node Manager Samza job Container 1 Host 1 Samza Job on YARN YARN AM Node Manager Samza job Container 2 Host 2 YARN AM Node Manager MR job Container 1 Host 1 Map Reduce Job on YARN YARN AM Node Manager MR job Container 2 Host 2 YARN AM Samza Job可看作一个实时计算版的Map/Reduce Job VS Samza数据处理流程介绍 输入流 Partition 0 Partition 1 Partition 2 Task 0 Task 1 Task 2 Checkpoint Stream 输出流 Changelog Stream Container 1 Container 2 本地状态存储 (RocksDB) job Samza的高可用性 • 不会出现“雪崩” • 不会丢失数据 • 缓存队列:基于磁盘,不受内存限制 • YARN为Samza Job提供了容错机制 Log AKafka Log B Log C Log D Samza Job 1 Job 2 YARN Samza常见计算类型 • 处理单条信息 Ø Filter: 根据特定条件筛选匹配的记录 Ø Map: Log= f(Log) • 处理多条信息 Ø Join: 对多个数据流做关联计算 Ø Group:对记录进行分组 Ø Aggregate: 对处于相同Group的数据进行聚合计算 需要状态管理 Samza实现有状态的实时计算 • 基于过去的数据状态来处理当前的数据:本质是数据缓存机制 • Samza基于RocksDB实现本地状态存储 大数据实时计算场景下 移动数据,离计算资源近一点 DB DB Query Task1 Task2 Task3 DB DB DB DB 输入流 Change log Task1 Task2 Task3 输入流 滴滴实时监控可视化界面 • 监控覆盖滴滴全部核心业务线 滴滴业务智能预警系统 基于Holt-Winters时间序列分析模型 Holt-Winters时间序列分析模型介绍 议程 • 滴滴实时监控系统演变历程 • 当前架构及服务介绍 • 系统优化方向 Lambda架构的问题 • 同样的业务逻辑需要维护实时和离线计算两套代码 • 重新处理数据只能依赖离线计算,计算较慢 优化方向 • 实现“端到端”的Exactly-Once实时数据处理,不再需要离线修正 Ø Samza Local Cache Ø 智能感知Kafka Partiton变化 Ø Druid Kafka Indexing Service • 数据的重新处理机制: Ø Kappa : 新起一个实时计算任务,新旧任务并行处理 Ø Liquid :停止当前实时计算任务,修改Offset后,重启任务 THANK YOU 北京嘀嘀无限科技发展有限公司 北京市海淀区东北旺路8号院尚东·数字山谷B2号楼 www.xiaojukeji.com

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 2 人已下载

下载文档

相关文档