实时BI监控架构与实践

实时BI监控架构与实践
展开查看详情

1.实时BI监控架构与实践 杨旋 陶然

2.目录 1. BI实时监控背景 2. BI实时监控架构 3. Spark Streaming实践 4. Druid实践 5. 未来规划

3.1 实时BI监控项目背景 • 滴滴每天会有上千万的成交单量,所以要面对非常复杂的业务场景。 • 如何满足滴滴各个业务线获取实时业务指标需求进行运营和决策? • 如何对复杂业务场景进行高效,精准,多维度组合和细粒度的实时数据监控,并针 对各种不同情况进行实时的风险控制和报警提醒呢?

4.数据处理流程 实时计算和实时数据处理的数据流程包括:数据采集, 数据清洗,数据计算,数据应 用。数据应用通常会让数据有如下几个应用出口:Sink到持久化存储系统以便后续进 行离线分析,实时监控大盘,实时API调用。 数据存储 数 数 数 数 据 据 据 据 实时监控大盘 采 清 计 应 集 洗 算 用 实时API调用

5.2 实时BI监控架构 根据实时计算和实时数据处理的数据流程,构建了支撑实时BI监控系统整体方案。 Druid 实时计算平台 业 Spark 日志采 Streaming Flink Streaming 务 kafka HBase 集 系 YARN 统 HDFS ES

6.监控与告警 数据经过采集和计算后接入Druid, 通过创建DataSource以及配置指标进行监控和告警。 【流计算开发】 【数据源创建】 【指标构建】 【配置监控】 Mysql 原始采集 清洗后 实时监控 数据清洗 DataSource 实时指标 的topic 的topic 面板 日志 Hive表 监控报警 【配置报警】

7.实时双链路建设 1. 构建链路双活体系,提升BI监控稳定性。 2. 采用BI专用Kafka集群,提升集群稳定性。 3. 统一流计算引擎。 Binlog-Kafka 公共-Kafka 实时计算任务 实时计算任务 Spark-Streaming Spark-Streaming BI-kafka2 BI-kafka1 druid_1 druid_2 BI实时计算平台 查询 Druid网关

8.3 Spark Streaming实践 01 Spark Streaming在滴滴的应用 02 Spark Streaming与Kafka集成 03 Spark Streaming监控与告警 04 Spark Streaming最佳实践

9.01 Spark Streaming在滴滴的应用 主要场景 实时 ETL 1)海量异构数据处理,包括日志、binlog、事件消 报表 息等数据。 2)低延迟、高吞吐。 BI监 实时 3)监控系统,数据质量系统等实时系统 控 业务

10.Spark Streaming在滴滴的业务规模 1. 集群规模:约500台机器(Spark & Flink) 2. 400+Spark Streaming任务 3. 千万/s 以上的流量,承担核心BI监控的数据处理

11.Spark Streaming - BI监控中的多流Join问题

12. Spark Streaming - BI监控中的多流Join实践 多个不同流根据一定规则join的问题(例如:订单发单流与接单流join问题) 特点: • 不同流需要join的数据时间跨度较长(例如:发单与接单时间跨度最长一周之久) • 数据源格式不定 (例如:binlog数据和业务日志的join) • join规则多样化 • 系统要求吞吐量大(订单表流量是5M/s) 、延迟低(秒级)

13.Spark Streaming-BI监控中的多流Join方案 我们实现的多流Join的方案如下: 收益:保证了BI监控的核心链路高可用,为业务方提供了快速的流join方案

14.02 Spark Streaming与Kafka集成 这里不再讨论旧的基于Receiver的方式。 Kafka的offset保存,这里有几种方式: 1)开启checkpoint,保存在分布式文件存储中,缺点:代码发生变化后,不能很好的从 checkpoint恢复,甚至会丢失数据。 2)提交到Kafka中。(我们修改源码,实现了该方式) 3)保存到自定义的存储中。 收益:通过实现对Offset的存储,针对流计算任务的重新打包、运行或重启时,保证了数据 不会丢失,随时追回延迟数据,保障了BI监控数据的安全和准确性。

15.03 Spark Streaming监控与告警 1. Spark WebUI 增加OffsetLag

16.03 Spark Streaming监控与告警 2. Spark框架改造增加自定义metrics并接入Druid,作为监控指标

17.03 Spark Streaming监控与告警 延迟指标:OffsetLag、Batch堆积 告警方式:钉钉、邮件、电话、短信 收益:通过提供各个维度的告警服务(默认提供任务异常告警和任务延迟 告警), 可以做到对BI监控的各个任务及时响应、处理,为运营和决策人 员提供可靠、可用、及时的数据,支撑整个BI监控系统。

18.04 Spark Streaming最佳实践 解决大部分问题 1、开启反压:spark.streaming.backpressure.enabled 2、消费速度:spark.streaming.kafka.maxRatePerPartition 3、Kafka抖动导致 No leader found: spark.streaming.kafka.maxRetries 4、driver端oom:spark.driver.memory 5、包冲突:spark.driver/executor.userClassPathFirst 6、Spark-Streaming-Kafka : --executor-cores * --num-executors <=topicPartitons 7、job级别的并发: spark.streaming.concurrentJobs

19.4 Druid实践 01 Druid特性 02 Druid在BI监控的应用 03 Druid在BI监控的建设

20.01 Druid特性 为什么选择Druid呢??? • 对于大部分查询场景可以亚秒级响应。 • 事件流实时写入与批量数据导入兼备。 • 数据写入前预聚合节省存储空间,提升查询效率。 • 水平扩容能力强 • 社区活跃

21.02 Druid在BI监控的应用 Druid能够对数据进行实时聚合计算,支持TopN, GroupBy,Filter,Count等即时查询,也因 此非常适合BI实时监控的业务需求。 实时BI监控 Kafka Druid 实时BI报警

22.03 Druid在BI监控的建设 构建了Druid异地双活体系,多集群对业务透明,并且支撑了核心业务监控与报警。 1. 建设druid_manager以满足管理员运维druid集群。 2. 建设druid_proxy以满足用户管理自己的数据源。 3. 建设druid网关统一查询入口。 统一网关访问/druid_manager/druid_proxy 查询节点 查询节点 实时节点 历史节点 实时节点 历史节点 HDFS HDFS

23.03 Druid在BI监控的建设 随着业务的发展每个druid集群的数据源个达到360个左右,任务数量达到1000左右。 对于一个单节点的实时节点来说压力非常大,常常会产生任务调度过来从而产生数 据延迟。如何解决呢? overlord_1 Peon Druid_Prox MM Peon y overlord_2 Peon

24.03 Druid在BI监控的建设 druid消费是否有延时?数据本身有延时呢? 1. Druid的延时API,辅助BI报警。 2. Druid支持多粒度查询,提升BI监控报警的精确度。 BI实时监控和报警 查询Api Kafka Manager topic流量 Delay Check 消费流量 Grafana 中间存储 消费lag 消费lag Druid_1 Druid_2 MYSQL

25.实时BI监控—未来规划 • Druid-on-YARN,提升集群的资源利用率。 • 资源隔离,保证集群的稳定性。 • Streaming SQL开发流计算像写Hive SQL/Spark SQL一样简单。 • 流计算任务血缘体系构建。 • 实时计算诊断系统。

26.Thanks Q & A