`
壹佰案例
  • 浏览: 34703 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

TOP100summit:【分享实录-Microsoft】基于Kafka与Spark的实时大数据质量监控平台

 
阅读更多

本篇文章内容来自2016年TOP100summit Microsoft资深产品经理邢国冬的案例分享。
编辑:Cynthia

邢国冬(Tony Xing):Microsoft资深产品经理、负责微软应用与服务集团的大数据平台构建,数据产品与服务.

导读:微软的ASG (应用与服务集团)包含Bing,、Office,、Skype。每天产生多达5 PB以上数据,如何构建一个高扩展性的data audit服务来保证这样量级的数据完整性和实时性非常具有挑战性。本文将介绍微软ASG大数据团队如何利用Kafka、Spark以及Elasticsearch来解决这个问题。

一.案例简介

本案例介绍了微软大数据平台团队设计和部署的基于开源技术(Kafka、Spark、ElasticsSearch、Kibana)的大数据质量监控平台,这个平台具有实时、高可用、可扩展、高度可信的特性,成为微软Bing、Office365、Skype等年收入270+亿美元的业务在监控数据质量方面的可靠技术保障。同时,基于业务需要,我们在设计和实现中达成下面一系列的目标:

● 监控流式数据的完整性与时延;
● 需要监控的数据管道(pipeline)具有多个数据生产者、多处理阶段、多数据消费者的特性;
● 数据质量的监控需要近实时(near real time);
● 数据质量发生问题的时候,需要提供相应的诊断信息来帮助工程师迅速解决问题;
● 监控平台的服务本身需要超级稳定和高可用, 大于99.9%在线时间;
● 监控与审计本身是高度可信;
● 平台架构可以水平扩展 (Scale out)。

二、背景以及问题的引入

为了服务微软的Bing、Office 365以及Skype业务,我们的大数据平台需要处理每天高达十几PB级别的海量大数据,所有的数据分析、报表、洞见以及A/B测试都依赖于高质量的数据,如果数据质量不高的话,依赖数据做决策的业务都会受到严重影响。

与此同时,微软业务对于实时数据处理的需求也日益增加,以前监控批处理数据(batch data)的很多解决方案已经不再适用于实时的流式数据的质量监控。

在另外一个层面,基于历史原因,各个业务集团往往使用不同的技术、工具来做数据处理,怎么整合这样异构的技术、工具以及在此之上的数据质量监控也是一个急需解决的问题。

图1是我们数据处理平台的一个概念性架构。从数据生产者这端,我们通过在客户端以及服务端使用通用的SDK,按照通用的schema来产生数据,数据通过分布在全世界的数据收集服务(collectors)来分发到相应的Kafka,然后通过pub/sub模式由各种各样的计算以及存储框架来订阅。

 

 

这样各种团队就可以选择他们最熟悉或者一直以来使用的工具来做处理。例如,从实时处理的角度,各个业务团队可以选用比如Spark或者微软的USQL streaming处理框架,以及其他第三方的工具来做一些特定场景的分析,比如日志分析的Splunk、交互式分析的Interana等。在批处理框架上,用户可以选用开源社区的Hadoop,、Spark或者微软的Cosmos等。

 

 

如图2所示,我们在迁移大数据到图1架构的过程中,也看到实时流式数据的快速增长。每天峰值消息高达一万亿个以上,每秒处理一百三十万个消息, 每天处理3.5PB流式数据。

三、数据监控的场景以及工作原理

3.1数据监控场景

基于业务需求,我们总结概括了需要被监控的数据处理管道特性(如图3)
● 多数据生产者(multiple data producers),数据来自客户端和服务端;
● 多个数据消费者(multiple data consumers),这里特指各种数据处理框架;
● 多数据监控阶段(multiple stages),从数据产生到数据处理,数据往往流经多个数据管道的组件,我们需要通过监控确保每个阶段数据都不会发生丢失、高时延、以及异常。

 

 

3.2工作原理

基于图3的数据管道,我们把问题具体化为如何确保基于Kafka的数据管道上下游的数据完整性、实时性、数据异常的监测。图4是一个抽象化的监控架构以及工作原理。

蓝色组件是数据管道里数据流经的各个处理阶段;绿色组件是本文中实时数据质量监控的核心服务Audit Trail。在数据流经各个组件的同时,相应的审计(audit)数据也会同时发到Audit Trail, 这个审计数据可以看作是一种元数据(meta data),它包含关于数据流的信息,例如该消息是在哪个数据中心、哪台机器产生;该消息包含几条记录、大小、时间戳等。Audit Trail汇总了各个数据处理组件发来的元数据后,就可以实时做各种数据质量的评估,比如数据在此时刻的完整性如何、实时性如何、有无异常。

 

 

基于图5的审计元数据,一旦发生数据质量问题,工程师可以快速定位是哪个数据中心的哪台服务器在什么时间段发生了问题,然后快速采取相应行动来解决或缓解问题,并把对下游数据处理的影响降到最低。

 

 

可被监控的数据质量问题可以分为如下几类:
● 数据时延超出规定的SLA (service level agreement)

工程师可以通过如图6所示的时延状态图快速了解在数据质量时延这个维度是否正常,这对于对实时性要求比较严格的数据产品及应用非常重要,如果数据延迟到来,很多时候就失去了意义。

需要注意的是,图表在这里起到的只是辅助作用,在真正的生产环境中是通过系统API调用来定期检查SLA的符合情况,一旦超出时延阈值,会通过电话、短信等手段通知值班的工程师来实时解决问题。

 

 

● 数据在移动中发生丢失导致完整性不满足SLA (service level agreement)

工程师可以通过图7中所示简单图表来了解数据完整性的状态,图7所示包含两个数据处理阶段:一个数据生产者和两个数据消费者的应用案例。所以图表中实际上是三条线,绿色是生产者的实时数据量,蓝色和紫色线是两个数据消费者处理的数据量。如果在理想情况下,数据完整性没有问题,这三条线是完全重合。本例中在最后一个点出现了分叉,代表数据完整性出现问题,需要工程师进行干预。

 

 

● 数据本身发生异常-通过异常检测来实时监控

数据本身发生异常,我们由相应的基于统计元数据的异常检测(如图8)来做实时监控。异常检测是一个在工业界非常普遍的问题和挑战,几乎每个互联网公司都会有做异常检测的服务或平台,但是做好很不容易,这是一个可以单独写一篇文章的大题目,这里只是单辟一个章节做简单的算法介绍。

 

 

本例是通过对于数据量的异常检测来发现上游写log问题,或者其他数据生产的逻辑问题。

3.3异常检测

3.3.1异常检测算法1

 

 

我们采用了Holt-Winters算法(图9)来训练模型和做预测,并在此之上做了很多改进来增加算法的强健性和容错能力。

强健性上的改进包括:
● 使用Median Absolute Deviation (MAD) 得到更好的估值;
● 处理数据丢点和噪声 (例如数据平滑)。
功能上的改进包括:
● 自动获取趋势和周期信息;
● 允许用户人工标记和反馈来更好的处理趋势变化。
通过比较预测值和实际值,我们采用GLR (Generalized Likelihood Ratio) 来发现异常点。在这上面我们也做了相应的改进,包括:
● Floating Threshold GLR, 基于新的输入数据动态调整模型;
● 对于噪声比较大的数据做去除异常点。

3.3.2异常检测算法2

这是一个基于Exchangeability Martingale的在线时间序列的异常检测算法,其核心就是假设数据的分布是稳定的。如果新的数据点的加入导致数据的分布(distribution)发生比较大的变化,我们就认为异常发生了。所以基于历史数据,我们需要定义一个新值异常公式(New value strangeness)。下面是这些公式的构成,对数学不感兴趣的读者可以略去。

在某个时刻t, 我们收到一个新的数据点,对于历史每个数据i:
s[i] = strangeness function of (value[i], history)
Let p[t] = (#{i: s[i] > s[t]}+ r*#{i: s[i]==s[t]})/N, where r is uniform in (0,1)
Uniform r makes sure p is uniform
Exchangeability Martingale: Mt=i=1tϵpiϵ-1
EMtp1,p2,…pt-1=Mt-1
Integrate ϵpiϵ-1 over [0,1] and pi is uniform
报警触发门槛通过Doob’s maximal inequality控制
Prob (∃ t :Mt>λ)<1λ
对于异常点,Martingale的值就会大于门槛值。

3.3.3异常检测算法3

这是一个简单而非常有效的基于历史数据的指数平滑算法。
它首先基于历史数据生成动态上下界:

Threshold (width) = min(max(M1Mean, M2Standard Deviation), M3*Mean) (M1 Threshold
预测值 = S1+12S2+14S3+18S4+116S51+12+14+18+116
优点在于处理周期性数据的异常检测很好,并且允许用户反馈和标记来调整动态上下界。

四、系统设计概述

基于业务场景的需要,我们在设计和实现中需要达成一系列的目标以及处理相应的挑战:
● 监控流式数据的完整性与时延;
● 需要监控的数据管道(pipeline)具有多个数据生产者、多处理阶段、多数据消费者的特性;
● 数据质量的监控需要近实时(near real time);
● 数据发生问题的时候,提供相应的诊断信息来帮助工程师迅速解决问题;
● 监控平台的服务本身需要超级稳定和高可用, 99.9%以上在线时间;
● 监控与审计本身是高度可信;
● 平台架构可以水平扩展 (Scale out)。

4.1高可用可扩展的架构

 

 

如图10所示,审计元数据通过前端服务(front end web service)到达Kafka, 我们利用Kafka来实现高可用的临时存储(transient storage), 这样,我们的数据生产者和消费者在发送审计数据的同时,就不会发生阻塞进而影响更重要的数据流。

通过Spark streaming的应用,把审计数据按照时间窗口聚合,同时有相应的逻辑处理去重,晚到以及非顺序到来的数据,同时做各种容错处理保证高可用。

ElasticsSearch作为存储聚合的审计数据,通过Kibana做报表展示,进而通过Data Analysis service对外提供API来使得用户获取各种数据质量信息。

Data Analysis Service作为最终的API端,提供各种数据完整性、实时性、异常的信息。
上述组件,每个都设计成可以独立水平扩展(Scale out), 并且在设计上保证高容错已实现高可用性。

4.2异地双活的可靠性保障

通过双数据中心Active-Active灾备(Disaster recovery)如图11所示,来进一步保证高可用高可靠的服务。整体架构保证数据流同时通过两个同构的审计处理管道进行处理,即使一个数据中心因为各种原因下线,整体服务还是处于可用状态,进而保证全天候的数据质量审计与监控。

 

 

4.3高度可信的审计与监控服务

对于任何监控服务来说,经常被质疑的就是是否监控服务本身的结果是准确可信的。为了保证这一点,我们通过两种方式来保证服务的可信度:
● 用来审计自身(Audit for audit)(图12);
● Synthetic probe。

 

 

在基于Kafka/Spark/ES的管道之外,我们还有一套独立的经由ES的审计元数据的处理管道,通过比较上述两个管道的结果,我们就能保证审计数据的可靠性。
另外,基于synthetic probe的方式,我们每分钟会发送一组synthetic数据进入前端服务(front end web service), 然后试图从Data Analysis web service 读出,通过这种方式进一步保障数据的可靠性。

4.4辅助数据质量问题的诊断

当数据质量发生问题,Audit Trail提供了原始的审计元数据来帮助工程师进一步做问题的诊断。工程师可以使用这些元数据和他们自己的trace来进一步JOIN, 来提供一种交互式的诊断,如图13。

 

 

五、效果评估和总结

通过上述系统架构的设计与部署,我们实现了一系列支持公司Bing,、Office,、Skype业务发展的数据质量监控目标:
● 监控流式数据的完整性与时延;
● 需要监控的数据管道(pipeline)具有多个数据生产者、多处理阶段、多数据消费者的特性;
● 数据质量的监控需要近实时(near real time);
● 数据发生问题的时候,需要提供相应的诊断信息来帮助工程师迅速解决问题;
● 监控平台的服务本身需要超级稳定和高可用, 99.9%在线时间
● 监控与审计本身是高度可信;
● 平台架构可以水平扩展 (Scale out)。

11月9-12日,北京国家会议中心,第六届TOP100全球软件案例研究峰会,Microsoft Principal Product Designer Bill Zhong将分享《微软OneNote的敏捷UX转型实践》;微软 data scientist Kirk Lee将分享《reinforcement learning in azure customer engagement》;微软 亚洲研究院资深研究员郑宇将分享《用大数据和AI驱动智能城市》。

TOP100全球软件案例研究峰会已举办六届,甄选全球软件研发优秀案例,每年参会者达2000人次。包含产品、团队、架构、运维、大数据、人工智能等多个技术专场,现场学习谷歌、微软、腾讯、阿里、百度等一线互联网企业的最新研发实践。

大会开幕式单天体验票申请入口

分享到:
评论

相关推荐

    spark-summit-north-america-2018-06 全部 PPT -part2

    5. **Spark与大数据生态系统**:Spark可以与HDFS、Cassandra、Kafka等大数据存储和消息队列系统无缝集成,形成强大的大数据处理平台。峰会上可能会讨论这些集成方案的最新发展。 6. **性能优化与资源管理**:YARN或...

    TOP100Summit2017 爆款

    【标题】"TOP100Summit2017 爆款"指的是在2017年举办的科技界盛事——TOP100SUMMIT。这个活动每年都会聚焦并表彰100个最具影响力的科技创新与研发管理案例,旨在推动科技行业的进步和发展。 【描述】"TOP100SUMMIT...

    TOP100Summit2018-爆款架构

    5. 并行计算与大数据处理:Apache Hadoop、Spark等工具用于处理大数据,通过分布式计算提升处理效率。流式处理框架如Flink、Kafka则实时处理数据,适应实时业务需求。 6. 容器化与编排:Docker容器化技术使应用更易...

    spark-summit-north-america-2018-06 全部 PPT -part1

    spark-summit-north-america-2018-06 全部 PPT -part1部分。 spark-summit-north-america-2018-06 全部 PPT -part1部分

    2014top100summit案例征集

    **TOP100 Summit** 是一个致力于挖掘和分享科技创新与研发管理最佳实践的重要平台。该盛会每年在全球范围内筛选出100个具有代表性的技术创新和研发管理案例,旨在通过这些真实案例的分享,为参会者提供宝贵的学习...

    spark-summit-north-america-2018-06:spark-summit-north-america-2018-06,更多详细信息请访问

    spark-summit-north-america-2018-06(Finished) 日程及 slides =&gt; 详情 =&gt; CSDN 下载地址 =&gt; 、 关注 iteblog_hadoop 公众号 或 及时获取大数据相关信息。

    大数据技术分享 Spark技术讲座 Apache Spark 2.3概述 - 最新消息 共29页.pdf

    ### 大数据技术分享 Spark技术讲座 Apache Spark 2.3概述 #### 一、Apache Spark 2.3简介 在2018年的Spark Summit大会上,Sameer Agarwal介绍了Apache Spark 2.3版本的一些关键特性。作为Spark的Committer和2.3...

    Top100summit产品专场案例PPT汇总

    Top100summit全球软件案例研究峰会12月7-9日在北京九华山庄举行。大会分为5个专场:产品专场、团队专场、测试专场、开发专场、架构专场。大会主题以分享案例为主,从企业的研发管理设计案例出发,引用案例分享企业...

    Spark AI Summit Europe 2018 全部PPT - part1

    7. **Spark与大数据生态系统集成**:Spark可以很好地与Hadoop HDFS、Cassandra、Kafka等大数据存储和消息系统集成,构建端到端的大数据分析平台。 8. **未来发展趋势**:会议可能会预测Spark的未来发展方向,包括...

    Spark summit East 2017全部PPT.part02

    4. **Spark Streaming**:Spark的实时流处理框架,可能包括DStream的定义、窗口操作和状态管理,以及如何与其他流处理工具如Kafka、Flume集成。 5. **Spark MLlib**:Spark的机器学习库,涵盖了各种常见的机器学习...

    spark-summit-2018:Spark应用

    spark-summit-2018 Spark应用程序:Spark Summit 2018:流趋势发现 展示如何使用Spark结构化流构建统计聚合管道。 提供2018年6月6日在Apache Spark峰会上进行的Deep Dive参考主题演讲。 展示如何对结构化的流应用...

    spark-submit cluster模式时driver-class-path支持hdfs路径

    spark官方版本的driver-class-path不支持hdfs路径,只支持本地路径。本资源解决了这个问题,driver-class-path在cluster模式时可以支持hdfs路径,解决了cluster模式driver有大量jar依赖的问题。

    Apache Spark 中文实战攻略(下册)1

    在SPARK+AI SUMMIT 2020中,阿里巴巴高级技术专家章剑锋分享了YipitData公司如何基于Databricks搭建分析平台。Databricks是Spark的商业化平台,提供了集成的工作空间(Workspace),允许用户通过Notebook编写和运行...

    Spark summit East 2017全部PPT.part01

    此外,PPT可能涉及Spark的实时处理能力,Spark Streaming如何处理连续的数据流,并与其他实时处理框架如Kafka、Flume等集成,实现高效的数据摄入。Spark SQL也是重点,它是Spark与传统数据库交互的桥梁,支持Hive、...

    Top100summit个性化的双11-个性化推荐技术的应用——天猫张奇

    标题与描述均聚焦于“Top100summit个性化的双11-个性化推荐技术的应用”,这明确指出了文章的核心议题在于探讨个性化推荐技术在天猫双11活动中的实际应用,特别是通过张奇(得福)这位天猫推荐算法团队成员的视角...

    大数据技术分享 Spark技术讲座 Azure上的加速Spark和云中的可扩展硬件卸载 共51页.pdf

    ### 大数据技术分享:Spark技术讲座与Azure上的加速Spark及云中可扩展硬件卸载 #### 一、概述 本篇文章将基于“大数据技术分享 Spark技术讲座 Azure上的加速Spark和云中的可扩展硬件卸载 共51页.pdf”这一文档的...

    2021 Data &amp; Cloud Summit(云-数据-智能峰会)演讲PPT汇总.zip

    基于Linkis 打造连通融合的金融级大数据平台 技术融合赋能银行“数字化增长” 面向云上数据分析应用性能成本评估与优化的研究 平安银行零售智能化转型分享 释放数据的价值—Tableau助⼒企业数字化转型 数据资产服务...

    TOP100summit 2013 测试专场

    TOP100SUMMIT是科技界一年一度的案例研究盛会,每年甄选有代表的100个技术创新/研发管理案例,旨在揭幕100件案例背后的思考、长尾价值,为 听众提炼最佳学习路径(或看点),帮助他人的项目或团队获得启示、成长,...

    Scalable-Distributed-Decision-Trees-in-Spark-Made-Das-Sparks-Talwalkar

    2014年Spark Summit于6月30日至7月2日在美国旧金山举行。Spark、Shark、Spark流媒体和相关项目及产品的主要用户聚集一地,共同探讨Spark项目开发的方向,以及Spark在各种各样应用程序中的实践情况。

    TOP100summit 2013 架构专场

    TOP100SUMMIT是科技界一年一度的案例研究盛会,每年甄选有代表的100个技术创新/研发管理案例,旨在揭幕100件案例背后的思考、长尾价值,为 听众提炼最佳学习路径(或看点),帮助他人的项目或团队获得启示、成长,...

Global site tag (gtag.js) - Google Analytics