7x24快讯 ·

面向未来的数据处理–实时流处理平台的实践分享

随着移动设备、物联网设备的持续增长,流式数据呈现了爆发式增长,同时,越来越多的业务场景对数据处理的实时性有了更高的要求,基于离线批量计算的数据处理平台已经无法满足海量数据的实时处理需求,在这个背景下,各种实时流处理平台应运而生。

本次邀请到了负责腾讯云大数据产品的技术专家邹建平,来为我们介绍实时计算领域的最前沿的现状,通过一些应用案例,来介绍实时计算所面临的一些技术挑战,以及腾讯大数据产品是如何解决这些问题的。

?

?

?

?

邹建平(以下称“Mike”)于09年加入腾讯,累积了近十年的互联网行业经验。最初负责QQ后台资料与存储服务。2013年负责SNG 后台框架研发和制定。2015年将孵化的通用存储系统推出腾讯云,做出先进的分布式Redis存储系统。近几年关注大数据相关的技术目前负责腾讯云大数据基础产品线的研发工作。

负责产品包括:EMR弹性MapReduce、流计算服务、ElasticSearch服务和云端数据仓库Snova。

?

?

不知道大家有没有看过一部精彩的反恐电视剧叫《24小时》,大家应该对里面的主角杰克·鲍尔的表现叹为观止。

但最令人印象深刻的是在反恐总部大楼里在摄像头里对人脸进行识别和匹配,快速找到恐怖分子的踪迹。这次跟大家分享的就是在大数据领域里类似的高大上技术——流计算。

?

?

本次的分享主要分三个部分:WHY WHAT HOW

希望大家能够通过这次分享能够了解流计算是什么,它能做什么,也会在中间跟大家介绍一些实际的操作案例。Mike还为大家带来了流计算内部的实现和技术特点做一些剖析。最后他还会为大家讲解腾讯云在做大数据产品的时候的一些优化思路。

?

?

首先我们们来回顾一些下大数据的历史。

什么是大数据?

?

?

?

?

?

?

介绍流计算之前我们先来看看大数据领域里常见的批量计算的工作原理。这里涉及了几个步骤:首先要将数据从数据源装载到大数据的存储里面,比如说HDFS这样的分布式文件系统。然后我们就可以用不同特点的分析引擎,如Hive、Spark等引擎对这个数据集进行全量的分析,从而得到一个结果。

批量计算有几个特点:

1、分析的数据是有边界的,静态的,通常是存储在文件系统上的一系列的文件

2、分析工具更多关注的是吞吐量,而对分析结果的延迟并不太关注。通常在分钟级,或是小时得出结果就好

3、 需要分析员主动发起分析任务

那么流计算的场景是怎么样的呢?

案例1:

我们看一下下图,这是QQ实时在线的一个真实展示:

?

?

输入右下角url也可查看

通过这样可视化的数据,可以很直观地看到业务的一个整体状况。QQ的上下线频率是非常高的,那么我们怎样对海量的QQ上下线的登录日志进行分析呢?还要快速输出按地域或其他维度汇总结果呢?

如果按前面所提到先存再算的方法是无法快速实现这个任务的。

案例2:

公司随着业务的上涨,都会和恶意的用户做对抗。比如做刷量投票的、做数据窃取的,甚至还有进行网络攻击的。比如我们大家所熟知的12306网站,会有黄牛刷票。

假设我们已经拿到了这个应用的的实时访问日志,我们怎样才能快速分析这些日志,并判断是否发生攻击,已经找到攻击的根源呢?

?

?

攻击的时间是非常快速的,如果我们还是用以往的批处理的方式来分析所得日志的话,即使我们事后得到一个报告,也是没有任何意义的,攻击所带来的伤害已经发生了。这也是体现流计算实施的一个典型场景。

?

?

前面给大家介绍的两个例子,对实时性要求非常高的数据处理中,原来先存后算的架构是无法满足要求的。所以在流式计算里,我们是希望能够随着数据的流动,实时地进行加工处理,并实时地吐出计算结果。

流计算的特点是:

1、数据不是静态的,而是随着时间的推移逐步流入系统中的一个动态数据流,通常会有非常多的数据源,不同数据源的数据都是根据自己的特点,实时产生的,并且不同的数据源之间的数据流的顺序是无法控制的。如果要存放这些数据流,是无法得到完全一样的数据流的。同时,这些数据都是由数据流实时产生的,数据的流速也是无法预测的。

2、数据流进入系统之后,它本身的数据价值和生命周期较短,所以相比之下处理时延就显得格外重要。

3、流式qq不断发红包的群号码的任务通常是长期运行的,采用一种事件驱动,或消息驱动的方式来输出分析结果。

对比总结:

?

?

这里跟大家分享一下大家对于流计算的一些误区:

误区一:有些同学可能会以为流计算是用资源代价换来的实时性,可能会觉得资源不够,就不采用流计算这种实时的方式处理数据。

这种想法已经过时啦,设计精良的流计算系统它并不会比批量计算耗费更多资源,例如我们前面提到的T+1的报表实现,我们在凌晨需要对前一天落地的数据进行分析计算。一方面,整个数据的存储量非常大,另一方面我们需要准备非常多的计算和存储资源来完成这次批量计算。还会经常因为资源或是其他的一些原因导致计算失败,需要重算。

而流计算不同,它可以把计算平摊在前一天的时间段里,来一点数据就进行数据增量的计算。也就是说,我们把一个大计算量的工作,平均分布到了每分每秒去进行。这样做不仅不需要运用到太多的资源,对于流计算来说,数据也无需落地,只需少量的资源就可以完成计算了。最终输出结果的速度也会快很多。

误区二:有同学认为流数据它只是输出数据比较快,但无法保证结果的准确性。这其实也是因为过去的一些流式计算的引擎在计算准确度方面做得不够好。比如对于机器故障,数据乱序等情况下,它的处理能力较弱,但目前已经不再是这样的状况了。

?

?

接下来我们来看看流计算更多的应用场景已经技术挑战。大家也可以看看自己的业务场景能不能引用流计算来进一步挖掘业务价值。

?

?

金融行业

金融行业领域中会产生出大量的数据,这些数据的时效性也较短,例如风控(信用卡诈骗、证券交易诈骗、保险诈骗等)都需要实时跟踪发现问题。在这种情况下,时间就是金钱,只有在毫秒级完成数据处理,才能避免风险为业务上带来的损失。

在量化投资,股票交易的情况中,熟悉的同学都知道,这种情况一般拼的就是低时延来吃差价,所以我们一方面需要大量的数据参与算法的模型计算,这样才能更好地得到交易决策,另一方面,需要快速得到决策结果,完成交易,才能实现盈利。

?

?

互联网广告行业

我们在浏览网页的时候会看到网页上会有点击付费的广告,对于广告商来说,最重要的业务目标,就是在什么时候插入广告,插入什么样的广告来获得最佳的点击效果。过去我们是需要用户的社交属性,兴趣爱好,个人属性或者浏览历史这种时效性较长的信息来进行分析决策。而现在越来越重要的是需要浏览者最近的一些行为特点,比如说他最近浏览过什么样的商品,或者最近的网页浏览记录以及他的地理位置,这些都是时效性很低的一些信息参与计算,才能更好地得到推荐效果。这种场景是需要用到实时流的计算的。

?

?

网络安全及设备监控领域

这种领域一般是需要对数据快速分析,进行自动化告警,来提升监控时效。

?

?

互联网领域

互联网领域是目前相当火热的一个领域,也是有着流计算数据的特点。例如智能交通,是通过传感器实时反应道路,车辆的状态,并且实时反应一定时间一定范围内的道路交通情况,以便有效地进行分流调度。

互联网产生的数据量非常大,这个行业的要求也需要实时进行计算反馈,否则在现实生活中会酿成严重的后果。

?

?

从批转向流所面临的挑战:

批计算模型经过多年的发展,目前已经有相对成熟的平台和技术了,能保证计算的可靠性和后瞻性。

而流计算就是为了解决批计算实时性的问题所出现的,相对来说是一个比较新的技术,面临着比较多的技术挑战。

低延迟 高吞吐

通常我们认为一个批处理会处理较多的数据,所以整体的吞吐性会更大,但我们缓冲一个批次,就会增大输出结果的时延。高吞吐和低延迟其实是一个矛盾的特点,我们要怎样做才能兼得两者呢?

准确性

作为一个分布式系统,计算节点发生宕机是个常态,批处理计算比较容易实现容错,因为文件是可以重复访问的,当某一个任务失败之后,重启任务就可以了。但在流处理系统中,由于数据源是无限的数据流,一个流处理任务执行几个月都是非常常见的,将所有的数据缓存是不现实的,对于流数据来说,怎么样在发生故障的情况下,保证计算的准确性呢?

易用性

流计算是提供给数据和算法工程师的一计算工具,怎么样让最终客户无需关注底层实现,提供一套易于开发易于复用面向数据的编程接口?

其实面对这些挑战流计算是有做出相应对策的,我们会在后面提到。

参与评论