APP下载

大数据处理框架现状分析

2019-02-09丁雪红刘非凡

宜宾学院学报 2019年12期
关键词:批处理流式数据处理

陈 诚,石 莉,丁雪红,刘非凡

(淮北师范大学计算机科学与技术学院,安徽淮北235000)

近年来,大数据迅速发展成为关注热点,其5V特征在发展的潮流中显现出来[1],据国际数据公司(IDC)的研究结果表明,2008 年全球产生的数据量为0.49 ZB,2009 年的数据量为0.8 ZB,2010 年的数据量为1.2 ZB,2011 年的数量高达1.82 ZB,到2020年,全世界所产生的数据规模将达到一个暂时的顶峰期[2]. 面对急速增长的数据规模,如果不借助大数据处理分析工具,用户很难从形态多样的海量数据中高效、快速、及时地挖掘出有用的信息.

数据处理框架负责对数据系统中的数据进行计算,目前国内外出现的数据处理框架主要有批处理框架、流式处理框架、图处理框架[3]、迭代处理框架[4]和内存处理框架等[5],运用较多是批处理和流式处理框架. 最早出现的大数据处理方式是批处理,批处理是先进行存储再处理,是一种集中式的数据处理[6],随着数据不断的变化,流式处理框架成为一种趋势,流式处理是直接处理的,它将源源不断的数据组成了数据流,只要有新数据就及时处理,不需要做持久性的操作[7]. 两者在数据处理上都有自己的优点,但是也有一定的缺陷,为了更好满足用户对于多样化数据的处理,各种各样的处理框架涌现出来,其中多框架混合处理系统在处理数据上的优势最为明显. 面对众多的处理框架,弄清数据处理框架的种类以及如何选择合适的框架有一定的研究意义.

1 数据处理框架介绍

1.1 批处理框架

1.1.1 相关概念及特征

批处理是对批量的静态数据进行处理,从处理的结果中获得具体的含义,然后制定相关的决策来进行解决业务,得到有效应对策略[8]. 简单的批处理模型如图1所示,数据首先在硬盘中进行存储,然后进入内存并在内存中进行集中处理[9].

1.1.2 批处理核心技术及实现

批处理数据量非常大、数据精确度高和数据价值密度低[10]. 批处理的核心技术是Hadoop,其起源于Google 发 表 的BigTable[11]、MapReduce[12]和Google File System[13],Hadoop作为批处理框架,数据处理功能由MapReduce 并行处理技术实现. MapReduce 是典型的批处理技术,对数据采用分而治之的思想,MapReduce的执行流程如图2所示,具体实现过程在文献《海量数据上基于抽样的模式挖掘研究》[14]中有详细说明.批处理主要应用于互联网领域[15]、安全领域[16]和公共服务领域[17].

批处理典型的一个应用案例就是全球最大连锁超市Wal-Mart,它主要就是利用Hadoop 平台来分析顾客搜寻商品的行为,利用这些关键词的分析结果发掘顾客需求,以规画下一季商品的促销策略.

图1 批处理模型

图2 MapReduce执行流程

1.2 流式处理框架

1.2.1 相关概念及特征

流式处理对数据处理的实时性要求严格,不需要对数据的存储工作,是在数据到来后直接对数据进行处理并实时得到反馈结果.简单的流式处理模型如图3所示.

图3 流式处理模型

1.2.2 常见的流式处理框架

流式大数据指的是随着时间顺序无限增加的数据序列,也可将其看成是历史数据和不断增加的更新数据的并集[18]. 流式大数据主要具有以下五个特点:数据实时到达性、数据的无限性、数据的无序性、数据的突发性和数据的易失性等[19]. 理想的流式处理框架应该表现出低延迟、高吞吐、持续稳定运行和弹性可伸缩等特点[20]. 目前国内外使用最广泛的流式处理框架主要有Storm、Spark、Samza等.

(1)Apache Storm. Storm 是一个分布式的流式处理框架,它采用的是事件流的形式,多个输入和处理组件构成一个处理网络,中间的处理结果都存储在内存中,保证数据处理的时效性,有效的解决实时分析的用户需求[21].

在Storm 中,首先要设计一个拓扑(topology),如图4所示.

图4 Storm拓扑图

在拓扑中,包括Spout 和Bolt 两种角色,实现流程在文献《基于GPS 数据的实时路况特征分析系统设计与实现》[22]中有详细说明.此拓扑将会被提交到Storm 集群中,集群采用主从式架构,一个主控节点Nimbus,多个工作节点Supervisor,主控节点与工作节点之间所有的协调工作由zookeeper[23]实现,其架构图如图5所示,架构具体实现在文献《大数据流式计算系统研究综述》[24]中已有详细介绍. Storm 拥有编程简单、支持多种编程语言、容错性、可扩展性、可靠性、高效性等特性[25].

图5 Storm架构图

(2)Apache Spark. Spark 不是一次一个的处理数据,它在处理前按时间间隔预先将数据切分为一段一段的批处理作业[26].Spark持续性数据流的抽象称为DStream(DiscretizedStream),一个DStream是一个微批处理的RDD(Resilient Distributed Datasets)[27]. Spark 的架构图如图6 所示,框架组件及具体实现在文献《Hadoop 与Spark 应用场景研究》[28]中已有详细介绍. Spark 的流式处理是由Spark Streaming[29]实现的.

图6 Spark架构图

(3)Apache Samza. Samza[30]的流单位是消息,它处理每条收到的消息的时候是按照次数进行的.数据流来的时候会被切分开,每个部分都由一组只读消息的有序数列构成,每条消息都有特定的ID[31].它的执行与数据流模块是可插拔式的,依赖资源调度器Yarn 和Apache Kafka[32],Kafka 是一种分布式的存储器,同时作为一个高性能的消息队列系统.Samza的架构图如图7所示,当用户提交一个任务的时候,Yarn 中的Resource Manager 申请资源,同时Yarn 在Node Manager 节点上启动容器,供Samza 运行相应的任务.然后Samza进程从Kafka的不同分区中实时拉取数据,并进行相应的计算. 最后将处理后的结果再次存入Kafka进入下一轮的计算[33].

2.3 多框架混合处理系统

不管是批处理还是流式处理,一旦超过自身的应用领域就会出现一些问题. 随着时代的发展,数据处理的要求越来越高,单一的处理框架已经远远不能满足需求,多框架混合处理系统的出现能够很好的解决这个问题.

图7 Samza架构图

2.3.1 相关概念及特征

多框架混合处理系统核心思想是将单一框架经过一系列的设计进行组合,将它们的处理优点提炼出来进行组合. 但是组合过程需要解决很多的问题,如语言设计问题、兼容性问题等等.框架组合的方式有很多种,流式框架和批处理框架之间的结合是最典型的,能处理大数据中的绝大多数问题,应用场景比较广泛.

2.3.2 使用Lambda基础架构的多框架混合处理系统

流式处理框架和批处理框架结合主要使用的是Lambda 基础架构,此架构是由Twitter 工程师Nathan Marz 提出来的[34],将批处理和流式处理进行有效的结合.此架构划分为三层:批处理层、加速层和服务层[35],每一层负责的任务是不一样的,且相互之间都有联系,批处理层由Hadoop 实现,负责数据的存储和产生随意的视图数据.加速层的主要任务是负责处理最新的数据,通过数据处理得到视图,它由Storm实现,弥补了批处理的延迟问题.服务层主要负责索引批处理视图,建立索引和显示视图,便于用户的查找. Lambda 架构图如图8 所示. 目前引用Lambda 架构的多框架混合处理系统有很多,比如SummingBird[36]和Lambdoop[37]等.

图8 Lambda三层架构图

(1)SummingBird

SummingBird 是开源的处理框架,对于批处理和流式处理界限明显,利用SummingBird 来进行批处理和流式处理之间的调度,SummingBird 系统架构图如图9 所示. SummingBird 通过使用Scala 或者Java 语言描述,描述的任务可以同时在Hadoop 或者Storm 上执行. SummingBird 的特点有:开发模式比较简单,编程语言易于上手,主要利用接近原生的Java或Scala语言;开发成本低,只需一套查询逻辑就可以在两者之间进行使用;可用平台无关的语言描述一个任务,处理逻辑都是独立的,兼容性高.

图9 SummingBird系统架构图

(2)Lambdoop

Lambdoop 是一个严格遵循Lambda 架构的大数据处理框架,它可以提供长时间的批处理、流式处理以及两者之间的混合处理.Lambdoop系统架构图如图10所示.

通过图10 的架构图可看出此框架的批处理是使用Hadoop 进行实现的,使用HBase 进行存储,流式处理使用Storm 来实现,使用Redis 做存储. 原始数据进入之后使用kafka进行一个数据的过滤,经过聚合计算存储在各自的存储器中,整合成新的数据然后在进行批处理或者流式处理,最后将各自处理的结果聚合得出最后的处理结果. Lambdoop 的特点:具有良好的可扩展性,对所有数据处理模型提供完整的上层抽象,有完整的数据对象定义,统一的Java API接口,屏蔽流式处理和批处理之间的差异.

图10 Lambdoop系统架构图

2.3.3 使用资源调度的多框架混合处理系统

统一资源管理在多框架混合处理系统中有重要应用,目前比较流行的统一资源调度器为Yarn,它主要解决的是以下几个问题:支持多种处理框架,提高资源的利用率,有效的资源分配以及良好的可扩展性.常见的使用资源调度器多框架混合处理系统有Storm-Yarn和YarnPlus.

(1)Storm-Yarn. Yarn刚开始是为Hadoop服务的,之后研究人员开始将Storm 运行在Yarn 上用来实现统一资源管理,通过Yarn实现多框架混合处理计算,Storm-Yarn 系统架构图如图11 所示. Storm-Yarn 的特点如下:一是共享底层存储,二是节省资源,其主要的缺陷在Yarn的容错性上.

图11 Storm-Yarn系统架构图

(2)YarnPlus. YarnPlus 是一个使用统一资源调度器Yarn的多框架混合处理系统,它能够根据全局资源使用情况和任务资源请求在异构任务间动态分派资源,避免不同的任务在争夺相同的资源时出现错误.它主要运用于虚拟机(VM)生命周期的管理,可同时管理虚拟机和Hadoop 任务. 其系统架构如图12 所示,系统架构组件及实现过程在文献[38]中已有详细介绍.

图12 YarnPlus系统架构图

2 框架比较和选择

Hadoop 作为批处理框架在项目成熟度上有很大的优势,它擅长处理静态大数据,是一种专用于批处理的处理框架.因此本文将批处理与流式处理和多框架混合处理系统分开,着重研究流式框架和多框架混合处理系统的比较和选择.

2.1 常见的流式处理框架比较及选择

2.1.1 流式框架比较

Storm、Spark、Samza 都是开源的分布式系统,它们的共同特点在于:允许在运行数据流代码时,将任务分配到一系列具有容错能力的计算机上并行运行,具有低延迟、可扩展和容错性诸多优点.虽都是流式处理系统,但是它们之间也具有不同的特征,具体如表1所示.

(1)开发语言:开发系统使用的语言不同所产生的效果是有差异的. Storm 开发的核心语言是Clojure;Spark 刚开始提出使用的时候主要是用Scala 语言编写的,目前开发可以使用三种语言:Scala、Java、Python;Samza主要是Scala语言.

表1 Storm、Spark、Samza框架对比

(2)容错机制:Storm 处理容错性的机制是利用上游数据备份和消息确认机制,保障消息失败后能够重新处理[39]. Spark 可实现微批处理,自带容错机制.Samza善于利用消息系统Kafka的持久化和偏移量.Samza能够监控任务的偏移量,当任务处理完消息后,相应的偏移量就会被移除,而消息的偏移量会被checkpoint到持久化存储中,并在失败时恢复[40].

(3)延时:Spark 支持微批处理,响应速度最慢,延时高;Storm 的响应速度最快,延时低,其次是Samza,延时中等.

(4)数据流形式:在Storm 中,数据流以元组(Tuple)的形式进行发送;Spark 以DStream 形式发送;Samza数据流形式是消息(Message).

(5)设计理念:Storm 和Samza 的设计理念是将数据进行逐条处理,而Spark是微批处理.

(6)数据传递:Storm和Spark的数据传递至多一次,而Samza中涉及Kafka,它的数据至少传递一次.

2.1.2 流式框架选择

具体选择使用哪个框架进行处理没有严格的界限,关键在于它们服务的对象、业务的具体需求、待处理数据的状态、处理所需时间的需求以及希望得到的结果等因素.

Storm 具有编程模型简单、可使用多种编程语言、处理速度快等优势,当进行实时数据处理任务的时候,要求处理速度快以及使用编程语言种类多等特征时,可优先使用Storm. 大量阅读文献,从等的文献总结Storm典型的应用场景有:实时推荐系统、预警系统和实时的数据统计分析等[41].Storm的典型应用案例有很多,如国内一些大型互联网企业淘宝、阿里巴巴、百度、奇虎360 等等. 在这些大型互联网企业中,Storm 主要做实时的日志统计,从日志中获取有用的信息.

Spark 的优势在于可进行微批处理、图计算、迭代计算和交互式查询计算等.当一个项目除了实时处理之外,还涉及了离线批处理、图计算、机器学习和交互式查询等业务功能时,那么就应该首选Spark处理框架. Spark 主要应用于图数据的分析、实时推荐、实时分类以及各种算法之间的联系密切和实时的流量数据分析. Spark 的典型应用案例:如国内一些大型播放器企业爱奇艺、腾讯视频等都有使用Spark进行数据的处理分析.

当一个项目中存在有大量的状态需要处理,每个分区都有许多十亿位元组,那么可以选择Samza.通过大量的文献阅读发现Samza 理论研究较多,具体实际应用发表的文章很少,其典型的应用场景还有待研究.

2.2 典型的多框架混合处理系统比较及选择

2.2.1 多框架混合处理系统的比较

SummingBird 和Lambdoop 都严格遵循Lambda基础架构,它们之间的共性和区别如表2所示.

表2 SummingBird和Lambdoop对比

(1)语言:SummingBird主要就是通过Scala或者Java 来描述任务的;Lambdoop 提供统一的Java API接口,通过Java语言实现.

(2)容错性:SummingBird 和Lambdoop 都是完全遵循Lambda 基础架构的,批处理层具有高容错性,加速层的临时结果会用存储器进行存储,当加速层出错时,数据不会出现错误,具有高容错性.

(3)兼容性:SummingBird 和Lambdoop 可以很好的结合批处理与流式处理,兼容性很高.

(4)数据传递:SummingBird 将数据区分之后,要么进行批处理要么进行流式处理,得到的结果供用户查看,数据至多传递一次;Lambdoop 处理数据有一个组合成新数据然后再进行处理的过程,数据传递至少一次.

(5)数据存储:SummingBird 使用的数据存储技术为持久数据存储Kafka、分布式文件存储系统HDFS 和分布式数据库HBase;Lambdoop 使用的数据存储技术为Kafka、HBase和Redis.

(6)数据安全性:SummingBird 和Lambdoop 平台中的数据安全性是指数据存储安全.数据存储技术Kafka、HDFS、HBase 和Redis 均使用冗余存储机制,保证数据存储的安全性.

Storm-Yarn和YarnPlus都是通过资源调度实现的多框架处理系统,两者有共性,但也有很大的区别,最大的区别就是两者实现的功能差异,Storm-Yarn 是通过Hadoop 和Storm 来进行数据处理,而YarnPlus 是基于Yarn 的异构资源管理框架,特征对比如表3所示.

表3 Storm-Yarn和YarnPlus对比

(1)语言:Storm-Yarn 中有Storm 的处理过程,用Scala 或Java 语言进行设计;YarnPlus 中主要实现的是MapReduce 和虚拟机任务资源的调度,两者用Java语言实现.

(2)容错性:两者都是依靠资源管理器Yarn 实现的,一旦资源管理器出错,Yarn 会在其他节点重新运行应用管理器,导致服务混乱,所以两者的容错性都不太好. 面对这样的情形,在设计的时候可以设置一个备用资源管理器,当主资源管理器出错时可以调用备用资源管理器.

(3)资源调度层次:Storm-Yarn 只需要单层调度即可,而YarnPlus是对异构资源进行调度,需要双层调度.

(4)兼容性:Storm-Yarn和YarnPlus都可以兼容不同的处理形式,Storm-Yarn 可进行批处理和流式处理,YarnPlus 可以处理虚拟机和批处理任务,两者都有很好的兼容性.

(5)资源利用率:Storm-Yarn和YarnPlus都是用Yarn资源调度实现的,对资源的利用率很高.

2.2.2 多框架混合处理系统的选择

YarnPlus 解决的是异构任务问题,当数据处理任务涉及到VM与批处理任务的时候,需选择Yarn-Plus. SummingBird、Lambdoop、Storm-Yarn 都可以解决批处理和流式处理问题,这三者之间的选择有以下建议:

①Storm-Yarn是通过资源调度器Yarn实现的,数据处理资源使用度是最高的,当处理任务对资源利用率有很高的要求时,需选择Storm-Yarn,具体应用场景如铁道供电监控信息流的在线分析处理和实时响应能力的应用[42].

②当数据处理过程比较简单且对成本要求特别高的时候,需使用SummingBird框架,具体应用场景如SummingBird在能源互联网中的应用[43].

③当整个数据处理过程中数据至少传递一次的时候,需使用Lambdoop 框架,但是通过大量的文献查阅,作者没有查找到具体的应用场景,可能是查阅资源有限或者还在研究之中.

3 总结和展望

常见的数据框架有批处理框架、流式处理框架和多框架混合处理系统. Hadoop 作为批处理框架,在处理静态大数据上有很大的优势,相比较其他数据处理框架它的选择固定,只要项目判定为批处理,即可用Hadoop 作为批处理框架进行数据处理. 流式处理框架和多框架混合处理系统种类较多,选择上需要做出判断.流式处理框架选择上主要考虑的是功能和效率问题,多框架混合处理系统选择上需考虑功能、数据传递和资源使用率问题.

从Hadoop 出现到现在10 余年的时间中,大数据分布式计算技术得到了迅猛发展.但大数据处理技术还未成熟,数据处理框架的发展有一定的缺陷. 批处理框架实时性差且执行效率低,流式处理框架容错性差且内存使用不佳,多框架混合处理系统可解决的问题比较全面,但是框架的兼容性需要提高.各种框架都在不断改进,相互竞争.优化框架的性能是数据处理框架改进的一个重点方向,性能的提高很大程度上是让内存得到有效的利用.单一框架计算处理的局限性在时代发展中越发体现出来,多框架混合处理系统将是今后大数据处理的趋势,目前技术还有很大的欠缺,要加大对多框架混合处理系统的研究. 通过本文的研究和讨论,下一步的工作就是重点研究多框架混合处理系统.在具体的案例中,利用本文介绍的数据处理框架对数据进行处理,在多框架混合处理系统的选择上使用本文介绍的可选择方案,设置一些处理参数进行对比,验证多框架混合处理系统是否处理应用性更广以及介绍的选择方案是否准确.

猜你喜欢

批处理流式数据处理
2种6色流式细胞术试剂检测淋巴细胞亚群的性能比较
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
流式大数据数据清洗系统设计与实现
ILWT-EEMD数据处理的ELM滚动轴承故障诊断
恶意批处理文件导致电脑黑屏、反复重启、无响应的原因分析及应对思路
不装软件批处理为文件夹加锁
借助批处理 让Cortana变聪明
基于希尔伯特- 黄变换的去噪法在外测数据处理中的应用
自调流式喷管型ICD的设计与数值验证
高比转速轴流式和斜流式泵喷水推进器推进特性分析