流式计算介绍

流式计算诞生背景:

        在日常生活中,我们通常会先把数据存储在一张表中,然后再进行加工、分析,这里就涉及到一个时效性的问题。如果我们处理以年、月为单位的级别的数据,那么多数据的实时性要求并不高;但如果我们处理的是以天、小时,甚至分钟为单位的数据,那么对数据的时效性要求就比较高。在第二种场景下,如果我们仍旧采用传统的数据处理方式,统一收集数据,存储到数据库中,之后在进行分析,就可能无法满足时效性的要求。

        在传统的数据处理流程中,总是先收集数据,然后将数据放到数据库中。当人们需要的时候通过数据库对数据做查询,得到答案或进行相关的处理。这样看起来虽然非常合理,但是结果却非常的紧凑,尤其是在一些实时搜索应用环境中的某些具体问题。这就引出了一种新的数据计算结构---流计算方式。它可以很好地对大规模流动数据在不断变化的运动过程中实时地进行分析,捕捉到可能有用的信息,并把结果发送到下一计算节点。

        2011年在海量数据处理领域,Hadoop是人们津津乐道的技术,Hadoop不仅可以用来储存海量数据,还可以用来计算海量数据。因为其高吞吐、高可靠等特点,很多互联网公司都已经使用Hadoop来构建数据仓库,高频使用并促进了Hadoop生态圈的各项技术的发展。一般来讲,根据业务需求,数据的处理可以分为离线处理和实时处理,在离线处理方面Hadoop提供了很好的解决方案,但是针对海量数据的实时处理却一直没有比较好的解决方案。就在人们翘首以待的时间节点,storm横空出世,与生俱来的分布式、高可靠、高吞吐的特性,横扫市面上的一些流式计算框架,渐渐成为了流式计算的首选框架。

流式计算系统:

        流式系统:分布式消息系统 Kafka 提供高吞吐、可扩展的分布式消息队列服务,能够快速创建并方便管理Kafka集群。可用于日志收集、监控数据聚合、构建实时数据管道、流式数据处理等场景。

        流计算对于时效性要求比较严格,实时计算就是对计算的时效性要求比较强。流计算是利用分布式的思想和方法,对海量“流”式数据进行实时处理的系统,它源自对海量数据“时效”价值上的挖掘诉求。

那么,通常说的实时系统或者实时计算,严格意义上来说分成三大类:

ad-hoc computing(数据的实时计算):计算不可枚举,计算在查询时发生。

stream computing(实时数据的计算):计算可枚举,计算在数据发生变化时发生。

continuous computing(实时数据的实时计算):大数据集的在线复杂实时计算。

        流式计算系统就是因为流式计算具有很强的实时性,需要对应用源源不断产生的数据实时进行处理,使数据不积压、不丢失,常用于处理电信、电力等行业应用以及互联网行业的访问日志等。在Facebook 的 Scribe、 Apache的 Flume、Twitter的 Storm、 Yahoo的S4、UCBerkeley的SparkStreaming是常用的流式计算系统。

        下面我们分别说说scribe、flume、Storm、S4以及SparkStreaming。首先说说Flume。Flume其功能与Scribe相似,主要用于实时收集在海量节点上产生的日志信息,存储到类似于HDFS的网络文件系统中,并根据用户的需求进行相应的数据分析。而Scribe用于从海量服务器实时收集日志信息, 对日志信息进行实时的统计分析处理,应用在Facebook内部。Storm是基于拓扑的分布式流数据实时计算系统,现已经开放源代码,并应用于淘宝、百度、支付宝、Groupon、Facebook等平台,是主要的流数据计算平台之一。而S4:全称是Simple Scalable Streaming System,是由Yahoo开发的通用、分布式、可扩展、部分容错、具备可插拔功能的平台,s4其设计目的是根据用户的搜索内容计算得到相应的推荐广告,现已经开源,是重要的大数据计算平台。最后说一下SparkStreaming,这是构建在Spark上的流数据处理框架,将流式计算分解成一系列短小的批处理任务进行处理。

        网站流量统计是Spark Streaming的一种典型的使用场景,这种应用既需要具有实时性,还需要进行聚合、去重、连接等统计计算操作。如果使用Hadoop MapReduce框架,则可以很容易地实现统计需求,但无法保证实时性;如果使用Storm这种流式框架则可以保证实时性,但实现难度较大。Spark Streaming可以以准实时的方式方便地实现复杂的统计需求。

流式数据处理系统的优势:

l 快速部署:分钟级创建,节点分配、服务部署、性能优化全面自动化。

l 易于管理:硬件与软件的结合部署,无需担心整个服务的维护。

l 高性能:继承云主机的性能优势,并对Kafka服务的每项配置进行优化,提高了服务的整体表现,远远高于自建集群。

l 弹性伸缩:可根据性能与容量,通过调整节点配置对整个集群进行配置调整,支持动态伸缩,有效避免资源浪费。

l 安全稳定:集群方式部署在多个独立的物理服务器上,保证了无资源抢占以及服务的高可用。

l 全面兼容:与开源社区的Kafka版本完全兼容,用户无需更改代码,即可直接使用标准API进行开发作业。

流式数据处理系统的劣势:

l 不可控性:你不知道数据的到达时机以及相关数据的顺序,对于数据质量和规模也是不可控的。

l 时效性要求:在容错方案、体系架构和结构输出方面都与传统的计算是截然不同的。

l 体系缺失:传统学术领域已经对批量计算和离线计算的体系研究的非常成熟,而在实时领域如数据仓库中间层等领域都是缺失的,包括数据源管理、数据质量管理等等。

流式计算的价值:

        通过大数据处理我们获取了数据的价值,但是数据的价值是恒定不变的吗?显然不是,一些数据在事情发生后不久就有了更高的价值,而且这种价值会随着时间的推移而迅速减少。流处理的关键优势在于它能够更快地提供洞察力,通常在毫秒到秒之间。

        流式计算的价值在于业务方可在更短的时间内挖掘业务数据中的价值,并将这种低延迟转化为竞争优势。比方说,在使用流式计算的推荐引擎中,用户的行为偏好可以在更短的时间内反映在推荐模型中,推荐模型能够以更低的延迟捕捉用户的行为偏好以提供更精准、及时的推荐。

流式计算案例:

1)一淘-实时分析系统

        实时分析用户的属性,并反馈给搜索引擎。最初,用户属性分析是通过每天在云梯上定时运行的MRjob来完成的。为了满足实时性的要求,希望能够实时分析用户的行为日志,将最新的用户属性反馈给搜索引擎,能够为用户展现最贴切其当前需求的结果。

2)携程-网站性能监控

        实时分析系统监控携程网的网站性能。利用HTML5获得可用的指标,并记录日志。Storm集群实时分析日志和入库。使用DRPC聚合成报表,通过历史数据对比等判断规则,触发预警事件。

3)游戏实时运营

        一个游戏新版本上线,有一个实时分析系统,收集游戏中的数据,运营或者开发者可以在上线后几秒钟得到持续不断更新的游戏监控报告和分析结果,然后马上针对游戏的参数和平衡性进行调整。这样就能够大大缩短游戏迭代周期,加强游戏的生命力。

4)实时计算在腾讯的应用

        精准推荐(广告推荐、新闻推荐、视频推荐、游戏道具推荐);实时分析(微信运营数据门户、效果统计、订单画像分析);实时监控(实时监控平台、游戏内接口调用)

5)实时计算在阿里的应用

        为了更加精准投放广告,阿里妈妈后台计算引擎要维护每个用户的兴趣点(理想状态是?你对生么感兴趣,就对你投放哪类广告)。用户兴趣主要基于用户的历史行为,用户的实时查询、用户的实时点击、用户的地理信息而得,其中实时查询、实时点击、等用户行为都是实时数据。考虑到系统的实时性,阿里妈妈会用Storm维护用户兴趣数据,并在此基础上进行受众定向的广告投放。

流式计算的应用:

互联网领域的应用:

        随着互联网技术的不断发展,特别是Web 2.0时代的到来,用户可以实时分享和提供各类数据.不仅使得数据量大为增加,也使得数据更多地以半结构化和非结构化的形态呈现.据统计,目前互联网中75%的数据来源于个人,主要以图片、音频、视频数据形式存在,需要实时分析和计算这些大量、动态的数据。

在互联网领域中,大数据流式计算的典型应用场景包括:

        1)搜索引擎.搜索引擎提供商们往往会在反馈给客户的搜索页面中加入点击付费的广告信息.插入什么广告、在什么位置插入这些广告才能得到最佳效果,往往需要根据客户的查询偏好、浏览历史、地理位置等综合语义进行决定.而这种计算对于搜索服务器而言往往是大量的:一方面,每时每刻都会有大量客户进行搜索请求;另一方面,数据计算的时效性极低,需要保证极短的响应时间。

        2)社交网站.需要实时分析用户的状态信息,及时提供最新的用户分享信息到相关的朋友,准确地推荐朋友,推荐主题,提升用户体验,并能及时发现和屏蔽各种欺骗行为。

金融行业的应用:

        在金融银行领域的日常运营过程中,往往会产生大量数据,这些数据的时效性往往较短.因此,金融银行领域是大数据流式计算最典型的应用场景之一,也是大数据流式计算最早的应用领域.在金融银行系统内部,每时每刻都有大量的往往是结构化的数据在各个系统间流动,并需要实时计算.同时,金融银行系统与其他系统也有着大量的数据流动,这些数据不仅有结构化数据,也会有半结构化和非结构化数据.通过对这些大数据的流式计算,发现隐含于其中的内在特征,可以帮助金融银行系统进行实时决策.

在金融银行的实时监控场景中,大数据流式计算往往体现出了自身的优势.如:

1)风险管理.包括信用卡诈骗、保险诈骗、证券交易诈骗、程序交易等,需要实时跟踪发现;

2)营销管理.如,根据客户信用卡消费记录,掌握客户的消费习惯和偏好,预测客户未来的消费需求,并为其推荐个性化的金融产品和服务;

3)商业智能.如,掌握金融银行系统内部各系统的实时数据,实现对全局状态的监控和优化,并提供决策支持.

物联网领域的应用:

        在物联网环境中,各个传感器产生大量数据.这些数据通常包含时间、位置、环境和行为等内容,具有明显的颗粒性.由于传感器的多元化、差异化以及环境的多样化,这些数据呈现出鲜明的异构性、多样性、非结构化、有噪声、高增长率等特征.所产生的数据量之密集、实时性之强、价值密度之低是前所未有的,需要进行实时、高效的计算.

在物联网领域中,大数据流式计算的典型应用场景包括:

1)智能交通.通过传感器实时感知车辆、道路的状态,并分析和预测一定范围、一段时间内的道路流量情况,以便有效地进行分流、调度和指挥;

2)环境监控.通过传感器和移动终端,对一个地区的环境综合指标进行实时监控、远程查看、智能联动、远程控制,系统地解决综合环境问题;

这些对计算系统的实时性、吞吐量、可靠性等方面都提出很高要求。

与大数据批量计算不同,大数据流式计算中的数据流主要体现了如下5个特征:

(1)实时性

        流式大数据是实时产生、实时计算,结果反馈往往也需要保证及时性.流式大数据价值的有效时间往往较短,大部分数据到来后直接在内存中进行计算并丢弃,只有少量数据才被长久保存到硬盘中.这就需要系统有足够的低延迟计算能力,可以快速地进行数据计算,在数据价值有效的时间内,体现数据的有用性.对于时效性特别短、潜在价值又很大的数据可以优先计算.

(2)易失性

        在大数据流式计算环境中,数据流往往是到达后立即被计算并使用,只有极少数的数据才会被持久化地保存下来,大多数数据往往会被直接丢弃.数据的使用往往是一次性的、易失的,即使重放,得到的数据流和之前的数据流往往也是不同的.这就需要系统具有一定的容错能力,要充分地利用好仅有的一次数据计算机会,尽可能全面、准确、有效地从数据流中得出有价值的信息。

(3)突发性

        在大数据流式计算环境中,数据的产生完全由数据源确定,由于不同的数据源在不同时空范围内的状态不统一且发生动态变化,导致数据流的速率呈现出了突发性的特征.前一时刻数据速率和后一时刻数据速率可能会有巨大的差异,这就需要系统具有很好的可伸缩性,能够动态适应不确定流入的数据流,具有很强的系统计算能力和大数据流量动态匹配的能力.一方面,在突发高数据流速的情况下,保证不丢弃数据,或者识别并选择性地丢弃部分不重要的数据;另一方面,在低数据速率的情况下,保证不会太久或过多地占用系统资源.

(4)无序性

        在大数据流式计算环境中,各数据流之间、同一数据流内部各数据元素之间是无序的:一方面,由于各个数据源之间是相互独立的,所处的时空环境也不尽相同,因此无法保证数据流间的各个数据元素的相对顺序;另一方面,即使是同一个数据流,由于时间和环境的动态变化,也无法保证重放数据流和之前数据流中数据元素顺序的一致性.这就需要系统在数据计算过程中具有很好的数据分析和发现规律的能力,不能过多地依赖数据流间的内在逻辑或者数据流内部的内在逻辑.

(5)无限性

        在大数据流式计算中,数据是实时产生、动态增加的,只要数据源处于活动状态,数据就会一直产生和持续增加下去.可以说,潜在的数据量是无限的,无法用一个具体确定的数据实现对其进行量化.系统在数据计算过程中,无法保存全部数据:一方面,硬件中没有足够大的空间来存储这些无限增长的数据;另一方面,也没有合适的软件来有效地管理这么多数据;并且,需要系统具有很好的稳定性,保证系统长期而稳定地运行.

        理想的大数据流式计算系统应该表现出低延迟、高吞吐、持续稳定运行和弹性可伸缩等特性,这其中离不开系统架构、数据传输、编程接口、高可用技术等关键技术的合理规划和良好设计。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,200评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,526评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,321评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,601评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,446评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,345评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,753评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,405评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,712评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,743评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,529评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,369评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,770评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,026评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,301评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,732评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,927评论 2 336

推荐阅读更多精彩内容