大数据流式计算系统综述
2017-01-17祝锡永庞培培
祝锡永,庞培培
(浙江理工大学 管理科学与工程研究所, 浙江 杭州 310018)
大数据流式计算系统综述
祝锡永,庞培培
(浙江理工大学 管理科学与工程研究所, 浙江 杭州 310018)
在阐述流式大数据特征及计算模式的基础上,介绍了大数据流式计算的3种典型平台,分析了它们的系统架构、特征及应用场景,并对其进行比较.总结并展望了大数据流式计算的发展前景.
大数据;大数据技术;流式计算;流式大数据
在大数据时代,数据的实时性日益突出,数据的流式特征更加明显,越来越多的应用场景需要部署在流式计算平台中.传统批量处理技术已难以满足数据处理实时性的需求,因此,构建大数据流式计算系统的重要性日渐突出.
大数据是从不同类型的数据中快速获得有价值信息的技术,是提升企业和国家竞争优势的重要方式[1].现有大数据技术的计算模式主要有批量计算和流式计算.其中,批量计算采用先存储再处理的模式,是对静态数据进行的计算和价值发现,实时性要求不高;流式计算采用先处理再存储的方式,避免了数据存储产生的延迟,可以对数据实时地分析和处理.
随着云计算、物联网等信息技术的应用和发展,数据量飞速增长.大数据时代的到来对数据的实时性有了更高的要求,越来越多的应用场景需要采用流式计算平台,如金融行业、互联网等领域.然而关于流式计算的研究尚处于初级阶段.尽管 Twitter、IBM及Yahoo等企业开发的流式计算平台,在一定程度上推动了大数据流式计算的发展[2],但仍存在很多限制,如系统的扩展性、负载均衡、系统容错、数据吞吐量等[3].如何构建低延迟、高吞吐并稳定运行的流式处理系统显得尤为重要.
1 流式大数据特征及计算模式
流式大数据重点关注数据的实时分析和处理,对数据流的时效性往往要求很高,数据的时间价值非常重要.在数据流到来后,不仅需要实时处理数据,实时产生相应结果,还需要及时反馈处理结果.
1.1 流式计算特征
(1)无限性.在流式计算中,数据的单位为元组,数据以增量的方式、连续数据流的形态,持续到达计算平台[4].
(2)无序性.数据源不唯一,在数据流重放的过程中,数据流中各元组间的顺序无法控制,要得到完全相同的数据流是很困难的,甚至是不可能的[5].
(3)实时性.数据流中元组在线到达后需要实时进行处理.
(4)突发性.数据流流速高,且随着时间推移而动态变化.这一方面要求系统能够根据数据流流速的变化弹性、动态地适应,实现资源、能耗的高效利用;另一方面,当数据流中各元组语义在不同时刻变化时,处理数据流的有向任务图不仅需要及时地识别这种语义变化,并且需要有效地适应语义变化,动态地更新数据.
(5)易失性.数据一旦经过处理,不被归档存储,则会直接丢失.因此,未被存到内存的数据将很难被检索[4].
1.2 流式计算模式
1.2.1 数据接入及系统架构
在流式计算系统中,数据有多种接入方式,如使用消息队列(MetaQ)、通过网络Socket传输数据、通过API接口采集前端业务系统数据以及对日志文件的监控等.在Storm系统中,Spout必须监控日志文件的编号,并及时将变化的数据写入系统.
系统架构是系统中各子系统之间的组合方式.当前,流式计算系统采用的系统架构可分为两种:对称式架构(S4、Puma等系统)和主从式架构(Storm系统).对称式架构无中心节点,各节点功能相同,具有良好的伸缩性.主从式系统架构存在一个主节点和若干个从节点,主节点主要用于系统资源管理和任务调配,从节点主要负责接收主节点的任务,并进行计算与反馈,其整个系统完全依赖主节点控制[6].
1.2.2 数据实时处理
数据的实时处理即数据流到达后进行实时处理、传输等操作,主要包括数据传输、高可用技术(状态备份和故障恢复策略)实现、资源调度和负载均衡策略实现等.
(1)数据传输是指各个计算节点直接的数据传输方式.在流式计算中,数据的传输方式分为主动推送和被动拉取两种.主动推送方式是指上游节点计算后的数据主动发送到相应的下游节点.它具有主动性和及时性的优点,但不考虑下游节点的负载状态,可能导致下游部分节点负载不均衡.被动拉取方式是指下游节点进行数据请求时,上游节点才会将数据传输下来.这一数据传输方式使下游节点可以根据自身负载状况进行工作,但上游节点的数据可能得不到及时计算.
(2)状态备份用于备份节点的计算状态,确保数据在计算过程中出现问题时能够从备份数据中快速恢复.故障恢复功能要求系统能够快速地实现从故障状态到正常状态的恢复,以确保系统的高效运行.
流式计算系统高可用技术的实现有3种备份策略,分别为主动等待、被动等待和上游备份,如图1所示.主动等待策略为系统同时给主节点和副节点(用于备份)传输数据,当主节点出现故障时,副节点接管主节点的工作.该策略虽然恢复时间短,但浪费系统资源.被动等待策略为系统定期地向副节点传输主节点的状态,当传输过程出现故障时,系统能够从备份数据中查找并恢复相应状态.该策略吞吐量大,负载高,但恢复时间较长[2].上游备份策略为各主节点将自身状态和输出数据记录在日志文件中,当某节点出现故障后,上游节点将日志文件发送到相应副节点,并可通过副节点重新计算数据.该策略资源占用少,效率高,但恢复时间相对长些,比较适用于资源稀缺、算子较少的系统[7-10].
图1 备份策略及对比
(3)系统资源调度策略可实现系统资源的最佳利用,保障任务完成及能耗节省.负载均衡策略实现对系统任务的动态及合理分配,以适应系统的负载变化,使系统均衡稳定地运行.为了系统均衡策略的高效率实现、数据稳定合理流动并被迅速处理,在任务拓扑中实现完善的路由策略尤为重要[11].
2 流式计算系统平台
目前,国内外存在的大数据流式计算技术平台有Twitter的Strom系统、IBM的StreamBase系统(多用于商业计算)、Yahoo的Simple Scalable Streaming System(即S4)、Microsoft的TimeStream系统、Berkeley的Spark系统(多用于交互式实时计算)、Facebook的Data Freeway and Puma系统、Linkedin的Kafka系统和Esper系统(Espar系统专门进行复杂事件处理)等[2].本文只介绍比较典型且广泛应用的3种系统.
2.1 Storm系统
Storm系统是一款开源的分布式实时计算系统[5].它能够处理持续流数据,支持任何编程语言开发及水平扩展,容错性高,能够确保所有信息被处理,主要应用于在线实时分析、机器学习、连续计算、分布式RPC、ETL等.此外,Storm系统部署便捷,易于操作[12-15].
2.1.1 拓扑结构
拓扑结构(Topology)是Storm系统的一个任务单元.它将任务拓朴委托给不同类型的组件,每个组件负责处理一项简单特定的任务.一个拓扑的输入流由一个Spout组件管理,Spout将数据以Tuple元组的形式传递给Bolt组件,Bolt组件不仅可以对数据流进行计算,将结果存储到某个存储器,也可以将数据传递给其他的Bolt来进一步计算.一个Storm拓扑相当于由一连串的Bolt组件协调处理Spout传过来的数据.
Storm系统对数据流中每个数据分组编号,通过系统组件Acker实现对数据流计算路径的跟踪,确保数据流被完全执行.图2所示的数据流A和B被分配在一个Spout中,当且仅当两个数据流分别通过Bolt1和Bolt2,最终都到达Bolt3,直到完全处理后,才表示数据流被完全执行.
图2 Acker数据流监控示意
2.1.2 系统架构
Storm系统采用主从式系统架构,由一个连续的、运行的主节点(master node)组织若干个从节点(worker nodes)进行工作.主节点运行着一个守护进程(Nimbus).守护进程用于集群中代码的分发,为工作节点(Supervisor)分配任务,并监控系统故障.Storm系统众多工作节点分布运行在不同的设备上,以此提高容错,保证系统正常运行.
Zookeeper主要应用于大型分布式系统,是一个协调服务和元数据的存储系统,具有很高的可靠性.将Zookeeper引入Storm系统,简化了主从节点及工作进行(Worker)之间的设计,提高了系统的稳定性.Nimbus在master环境中运行,无状态,进行全局资源分配、任务调度、状态监控和故障检测.Supervisor在slaves中运行,无状态,进行任务监听并接受主节点所分配的任务.当任务到达Nimbus后,主节点一方面验证任务并分配给从节点,另一方面将任务的元信息写入Zookeeper中,通过Zookeeper实时监控任务执行.Supervisor接到Nimbus分配的任务后,由Worker来协调执行,一个Worker有多个Executor,每个Executor对应一个或多个Task,进行数据的具体计算.
Storm系统具有以下主要特征:简化编程,降低计算复杂性;容错性高,能够保证每个数据流均被执行;速度快,采用ZeroMQ作为底层消息队列,使数据得到快速计算.
目前,使用Strom系统的公司有Twitter和The Weather Channel等.Strom系统的应用场景主要有3类:①信息流处理:Strom系统可用于实时新数据处理和数据库更新,兼顾容错性和可扩展性;②持续计算:Storm系统可进行持续Query并把查询结果及时反馈给客户端,比如把Twitter的热门话题发送到浏览器中;③分布式远程程序调用:Storm系统可用来并行处理密集查询,例如,Distributed RPC可以进行并行搜索或者处理大集合的数据[4].
Storm系统作为流式计算,在很大程度上解决了许多现实问题,但其集中的作业级容错机制限制了系统的扩展,在资源分配时忽略了任务拓扑的结构特征,当数据负载动态变化时,无法作出及时调整并适应.
2.2 StreamBase系统
StreamBase是由IBM开发,主要应用于商业的流式计算系统,如金融、政府部门等.StreamBase系统采用Java语言,其环境是基于Eclipse的二次开发,同时采用StreamSQL(一种类SQL语言)进行计算过程的描述.
2.2.1 技术要点
StreamBase系统提供了大量的功能模块.这些功能模块可划分为3类:Operators和Adapters、Data Constructs、Streams.
(1)Operators和Adapters模块主要用于数据流的处理和加工.其中,具有代表性的Operators模块为Query、Map、Filter和Iterate,用于提供逻辑控制和数据的增删改查.Adapter模块提供与外界信息传输的功能,分为输入适配器和输出适配器.StreamBase系统提供了上百个适配器,可用于不同应用场景,如证券市场的行情协议(FIX、UBS等)、读取文件(位文件、CSV文件等)、网络通信协议(Socket、JMS)等.
(2)Data Constructs模块提供数据流的存储,主要由查询表、数据库表、滑动窗口和锁构成.
(3)Streams模块是数据流输入和输出的接口,当StreamBase系统出错时,通过错误输入接口和错误输出接口进行数据信息的操作.
2.2.2 系统架构
StreamBase的系统架构如图3所示.它通过StreamBase Server在节点上启动管理进程,负责管理节点的Container.每个Container通过输入适配器将数据流交给应用逻辑进行计算,然后通过输出适配器完成输出.进行容错恢复的HA Container包括Heartbeat和HA Events两个部分.在容错过程中,HA Container监控应用逻辑的活动情况,将这些信息换成HA Events后交由Monitor处理.Monitor从System Container和HA Container中获取数据并进行处理.
图3 StreamBase系统架构
StreamBase系统可以进行大量数据的实时计算.一般数据都会存到内存或者内存数据库里,以提高运算速度.StreamBase系统被广泛应用于金融行业,如量化交易,通过它可以快速高效地形成交易订单,快速进行订单管理.目前,国内已经有券商基于StreamBase系统进行量化交易平台部署[16].
2.3 S4系统
S4系统是由Yahoo开发的一款分布式流处理系统,具有可扩展、可插拔、对称的典型特征.
2.3.1 任务拓扑
(1)处理单元(Processing Elements,PE),是S4系统的基本计算单元.一个PE可由函数、事件类型、主键和键值4个组件来表示:①函数,用于实现PE的类和相关配置;②事件类型,用于处理EventType;③主键,规定了该处理单元的事件主键;④键值,规定了PE所匹配的键值.PE只处理与其事件类型相匹配的事件,即只有事件类型、主键及键值全部匹配才会处理该类事件[17].
(2)处理节点(Processing Node,PN),主要用于监听事件.PN都是对等的,进而简化了集群的部署和后期维护.通讯层用来提供集群管理、将故障恢复到相应的备用节点,以及逻辑节点到物理节点的映射(图4).Event Listener用来监听事件并交由PE容器(PEC),当事件到达时,由PEC交由合适的PE处理,如果PE有输出,则需与通讯层合作进行事件的分发和输出.
图4 处理节点PE
2.3.2 系统架构
S4系统采用插件式架构进行传输协议的选择.它主要有两种:可靠方式(如TCP),用来保障控制信息传输的可靠性;不可靠方式(如UDP),用来确保数据信息的高吞吐量.S4系统采用Zookeeper进行任务创建和销毁集群等操作.
S4系统采用对等式架构,它由用户空间、处理节点和集群管理组成(图5),可由多个用户通过客户端驱动实现服务的请求.S4系统处理节点中有多个PN进行用户服务的计算,各节点间保持着独立、对等和高并发,极大地提高了系统的性能.其集群管理模块进行性能监控,资源调配,为用户提供客户适配器,多个用户可以并发地通过适配器处理服务请求.
S4系统主要用于个性化搜索广告,系统实时处理来自几百万用户每秒成千上万次的查询,并及时分析用户的会话特征,提高广告相关性预测模型的准确度.
图5 S4系统的对等式架构
S4系统中数据的传输稳定性不高,容易丢失数据.一旦节点出现故障,将会丢失所有数据,容错性不高;对于其扩展性,在对节点进行调整时,需要停下正在进行的工作,不能做到无缝调整;当数据量达到一定程度时,数据处理的错误率较高.
2.4 3种典型流式计算系统的对比
表1所示为Twitter的Storm系统、IBM的StreamBase系统和Yahoo的S4系统,3种典型的流式计算系统的性能及应用对比.
表1 流式系统平台对比
由表1可以看出:Strom系统和StreamBase系统均采用主从式系统架构,S4系统采用对称式系统架构;不同系统的主要应用领域不同;Storm系统和S4系统均采用MapReduce(简称MR)接口,可简化编程,而StreamBase系统采用的是StreamSQL接口和可拖拽的可视化接口;Java语言已被这3种系统所使用开发,Storm系统的核心语言为Clojure;除StreamBase系统外,其他流式计算系统均不支持精确恢复.
3 总结与展望
大数据流式计算在大数据处理中占有重要地位,在互联网、物联网、金融业等领域的应用中取得了显著成效.但流式数据无限性、突发性、无序性、实时性、易失性等特征使其与传统批量处理相比,在计算要求及方式等方面存在显著差异,使得当前流式计算系统平台难以应对流式大数据带来的诸多挑战.其主要表现在系统的伸缩性、在线资源调度、节点依赖环境下的容错策略、数据吞吐量、节点状态的一致性和系统的负载均衡等方面.
在广泛的应用市场前景下,大数据流式计算尚未能满足需求.为了促进大数据流式计算稳健发展,需进一步开展相关理论与实践的研究,在未来的研究中,可通过深化流式计算系统的框架及关键技术研究,对系统性能进行整体优化,来满足复杂的应用需求,进一步推动大数据流式计算的发展.
[1] 中华人民共和国国务院.促进大数据发展行动纲要[J].成组技术与生产现代化,2015,32(3):51-58.
[2] 孙大为, 张广艳,郑纬民. 大数据流式计算: 关键技术及系统实例[J]. 软件学报, 2014,25(4):839-862.
[3] 亓开元,赵卓峰,房 俊,等. 针对高速数据流的大规模数据实时处理方法[J]. 计算机学报, 2012,35(3):477-490.
[4] 李 圣, 黄永忠,陈海勇.大数据流式计算系统研究综述[J]. 信息工程大学学报, 2016,17(1):88-92.
[5] 佚 名.剖析大数据流式计算场景特征[EB/OL].[2016-06-12].http://mt.sohu.com/20160305/n439484116.shtml.
[6] 王春凯,孟小峰. 分布式数据流关系查询技术研究[J]. 计算机学报, 2016,39(1):80-96.
[7] 邹志勇. 分布式流计算框架容错功能的设计与实现[D].北京:北京邮电大学,2013.
[8] 刘子英,唐宏建,肖嘉耀,等, 基于流式计算的Web实时故障诊断分析与设计[J]. 华东交通大学学报, 2014,31(1):119-123.
[9] 董 斌,杨 迪,王 铮,等, 流计算大数据技术在运营商实时信令处理中的应用[J]. 电信科学, 2015(10): 172-178.
[10] Sharma S. Expanded cloud plumes hiding Big Data ecosystem[J]. Future Generation Computer Systems, 2016, 59: 63-92.
[11] Kshetri N. Big Data's role in expanding access to financial services in China[J]. International Journal of Information Management, 2016,36(3): 297-308.
[12] 李 川, 鄂海红,宋美娜. 基于Storm的实时计算框架的研究与应用[J]. 软件, 2014(10):16-20.
[13] 王润华, 毋建军,侯佳路. 分布式实时计算引擎—Storm研究[J]. 中国科技信息, 2015(6):68-69.
[14] 彭明喜. 基于Storm的实时数据平台研究[J]. 电信快报, 2015(7):24-28.
[15] 赵 菲, 林 穗,高西刚. 面向大数据的Storm框架研究与应用[J]. 微型机与应用, 2016(6):12-14.
[16] 陈 智. 基于StreamBase的量化交易平台的设计与实现[D]. 上海:东华大学,2014.
[17] Neumeger L,Robbins B,Nair A,et al.S4:Distributed stream computing platform[C]//IEEE International Conference on Icdmw.Washington:IEEE,2010:170-177.
Review of Big Data Stream Computing System
ZHU Xi-yong, PANG Pei-pei
(Institute of Management Science and Engineering,Zhejiang Sci-Tech University, Hangzhou 310018,China)
This paper elaborates the characteristics of Big Data stream and calculation model, and furtherly introduced three typical platforms of Big Data stream computing, analyzes their system architecture, features and application scenarios, and compares them. Finally, it summarizes and introduces the prospects of the development of the Big Data stream computing.
Big Data; Big Data technology; stream computing; stream Big Data
2016-09-20
祝锡永(1964-),男,浙江绍兴人,硕士,教授,研究方向为信息系统开发技术、知识管理、数据分析与挖掘技术.
1006-3269(2016)04-0049-06
TP311
A
10.3969/j.issn.1006-3269.2016.04.012