一种基于sparkstreaming的大数据流处理方法和系统的制作方法

文档序号:10569943阅读:177来源:国知局
一种基于spark streaming的大数据流处理方法和系统的制作方法
【专利摘要】本发明涉及一种基于spark streaming的大数据流处理方法和系统。其中方法包括:步骤S1,在约定位置处接收数据源发送的数据,若数据源为HDFS,则执行步骤S2,若数据源为FLUME,则执行步骤S3;步骤S2,将数据以文件形式存储,执行步骤S3;步骤S3,spark streaming对接收的数据或者文件进行处理;步骤S4,spark streaming按照时间间隔将文件或数据的处理结果写入结果目录。本发明在容错、数据保证方面,提供了更好的支持容错状态计算;在实现、编程API方面,以Scala编程,也支持Java;在集群管理集成方面,Spark Streaming可以运行在自己的集群上,在YARN和Mesos上也均能运行。
【专利说明】
一种基于spark streami ng的大数据流处理方法和系统
技术领域
[0001 ] 本发明涉及大数据流处理领域,尤其涉及一种基于spark streaming的大数据流处理方法和系统。
【背景技术】
[0002]现有技术中经常使用Storm实现数据流模型,使用Storm实现数据流模型时,其中数据持续地流经一个转换实体网络。一个数据流的抽象称为一个流,这是一个无限的元组序列。元组就像一种使用一些附加的序列化代码来表示标准数据类型(比如整数、浮点和字节数组)或用户定义类型的结构。每个流由一个唯一 ID定义,这个ID可用于构建数据源和接收器的拓扑结构。
[0003]但是Storm有其自身的缺陷,例如:在容错、数据保证方面,Storm中每个单独的记录通过系统时必须被跟踪,所以Storm能够至少保证每个记录将被处理一次,但是在从错误中恢复过来时候允许出现重复记录,这意味着可变状态可能不正确地被更新两次;在实现、编程API方面,由于Storm的内核是clo jure编写的(不过大部分的拓展工作都是java编写的),为我们理解它的实现带来了一定的困难;在集群管理集成方面,Storm可以运行在自己的集群上,Storm还能运行在Mesos上,但是运行在YARN时,需要有一个第三方支持组件Storm on YARN,并不是原生支持。

【发明内容】

[0004]本发明所要解决的技术问题是针对现有技术的不足,提供一种基于sparkstreaming的大数据流处理方法和系统。
[0005]本发明解决上述技术问题的技术方案如下:一种基于sparkstreaming的大数据流处理方法,包括如下步骤:
[0006]步骤SI,在约定位置处接收数据源发送的数据,若数据源为HDFS,则执行步骤S2,若数据源为FLUME,则执行步骤S3;
[0007]步骤S2,将数据以文件形式存储,执行步骤S3;
[0008]步骤S3,spark streaming对接收的数据或者文件进行处理;
[0009]步骤S4,spark streaming按照时间间隔将文件或数据的处理结果写入结果目录。[00?0]本发明的有益效果是:本发明通过spark streaming将接收到的文件或者数据按照时间间隔进行批量处理并且按照时间间隔写入结果目录,相较于现有技术中使用Storm对数据或者文件一次一个的处理,并且单独记录处理结果,本发明能够加快处理速度,提高处理效率,并且由于是按照时间间隔记录处理结果,因此容错性更佳。
[0011]在上述技术方案的基础上,本发明还可以做如下改进。
[0012]进一步地,步骤SI中,若数据源为HDFS,则所述约定位置为HDFS固定目录,若数据源为FLUME,则所述约定位置为约定主机的约定端口。
[0013]采用上述进一步方案的有益效果是:根据数据源的不同,合理的分配接收数据源的位置,能够避免数据遗漏,保证数据原始性和准确性。
[0014]进一步地,若数据源为HDFS,在执行步骤S3之前还包括:
[0015]spark streaming按照时间间隔监控HDFS固定目录下是否有新增的文件,如果有,则执行步骤S3,对新增的文件进行处理,否则继续监控。
[0016]采用上述进一步方案的有益效果是:在数据源是HDFS的情况下,按照时间间隔监控HDFS固定目录并判断是否有新增文件,可以将新增文件汇总,以便于对文件进行后续处理。
[0017]进一步地,若数据源为FLUME,且FLUME的模式为推模式,在执行步骤SI之前还包括:
[0018]启动spark streaming并基于spark streaming按照时间间隔监控约定主机的约定端口是否有新增的数据,如果有,则执行步骤SI,接收新增的数据,否则继续监控。
[0019]采用上述进一步方案的有益效果是:在数据源为FLUME且FLUME的模式为推模式的情况下,按照时间间隔监控约定端口并判断是否有新增数据,可以将新增数据汇总,以便于对数据进行后续处理。
[0020]进一步地,若数据源为FLUME,且FLUME的模式为拉模式,在执行步骤S3之前还包括:
[0021 ] 启动spark streaming并基于spark streaming按照时间间隔监控约定主机的约定端口是否有新增的数据,如果有,则执行步骤S3,对新增的数据进行处理,否则继续监控。
[0022]采用上述进一步方案的有益效果是:在数据源为FLUME且FLUME的模式为拉模式的情况下,按照时间间隔监控约定端口并判断是否有新增数据,可以将新增数据汇总,以便于对数据进行后续处理。
[0023]本发明解决上述技术问题的另一种技术方案如下:一种基于sparkstreaming的大数据流处理系统,包括数据接收模块、文件存储模块、处理模块和写入模块:
[0024]所述数据接收模块,用于在约定位置处接收数据源发送的数据,若数据源为HDFS,则调用所述文件存储模块,若数据源为FLUME,则调用所述处理模块;
[0025]所述文件存储模块,用于将数据以文件形式存储,并调用所述处理模块;
[0026]所述处理模块,用于基于sparkstreaming对接收的数据或者文件进行处理,并调用所述写入模块;
[0027]所述写入模块,用于基于spark streaming按照时间间隔将文件或数据的处理结果写入结果目录。
[0028]本发明的有益效果是:本发明通过sparkstreaming将接收到的文件或者数据按照时间间隔进行批量处理并且按照时间间隔写入结果目录,相较于现有技术中使用Storm对数据或者文件一次一个的处理,并且单独记录处理结果,本发明能够加快处理速度,提高处理效率,并且由于是按照时间间隔记录处理结果,因此容错性更佳。
[0029]在上述技术方案的基础上,本发明还可以做如下改进。
[0030]进一步地,若数据源为HDFS,则所述约定位置为HDFS固定目录,若数据源为FLUME,则所述约定位置为约定主机的约定端口。
[0031]采用上述进一步方案的有益效果是:根据数据源的不同,合理的分配接收数据源的位置,能够避免数据遗漏,保证数据原始性和准确性。
[0032]进一步地,若数据源为HDFS,则还包括:
[0033]第一监控模块,分别与所述文件存储模块和所述处理模块连接,用于基于sparkstreaming按照时间间隔监控HDFS固定目录下是否有新增的文件,如果有,则调用所述处理模块,否则继续监控。
[0034]采用上述进一步方案的有益效果是:在数据源是HDFS的情况下,按照时间间隔监控HDFS固定目录并判断是否有新增文件,可以将新增文件汇总,以便于对文件进行后续处理。
[0035]进一步地,若数据源为FLUME,且FLUME的模式为推模式,则还包括:
[0036]第二监控模块,与所述数据接收模块连接,用于启动sparkstreaming并基于spark streaming按照时间间隔监控约定主机的约定端口是否有新增的数据,如果有,则调用所述数据接收模块,否则继续监控。
[0037]采用上述进一步方案的有益效果是:在数据源为FLUME且FLUME的模式为推模式的情况下,按照时间间隔监控约定端口并判断是否有新增数据,可以将新增数据汇总,以便于对数据进行后续处理。
[0038]进一步地,若数据源为FLUME,且FLUME的模式为拉模式,则还包括:
[0039]第三监控模块,分别与所述数据接收模块和所述处理模块连接,用于启动sparkstreaming并基于spark streaming按照时间间隔监控约定主机的约定端口是否有新增的数据,如果有,则调用所述处理模块,否则继续监控。
[0040]采用上述进一步方案的有益效果是:在数据源为FLUME且FLUME的模式为拉模式的情况下,按照时间间隔监控约定端口并判断是否有新增数据,可以将新增数据汇总,以便于对数据进行后续处理。
【附图说明】
[0041 ]图1为本发明中所述基于spark streaming的大数据流处理方法流程图;
[0042]图2为本发明中数据源为HDFS时Spark Streaming进行流处理的流程图;
[0043]图3为本发明中数据源为FLUME时推模式时Spark Streaming进行流处理的流程图;
[0044]图4为本发明中数据源为FLUME时拉模式时Spark Streaming进行流处理的流程图;
[0045]图5为本发明中所述基于sparkstreaming的大数据流处理系统结构图;
[0046]图6为本发明中数据源为HDFS时SparkStreaming进行流处理的系统结构图;
[0047]图7为本发明中数据源为FLUME时推模式时SparkStreaming进行流处理的系统结构图;
[0048]图8为本发明中数据源为FLUME时拉模式时SparkStreaming进行流处理的系统结构图。
【具体实施方式】
[0049]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。[OO5O]Spark Streaming是spark核心API的扩展,可实现对实时数据流的高吞吐量、容错的流处理。Spark Streaming的数据源可以有很多,包括kafka、flume、twitter、ZeroMQ或者传统的TCP sockets ο
[0051 ] Spark Streaming是核心Spark API的一个扩展,它并不会像Storm那样一次一个地处理数据流,而是在处理前按时间间隔预先将其切分为一段一段的批处理作业。Spark针对持续性数据流的抽象称为DStream(DiscretizedStream),一个DStream是一个微批处理(micro-batching)的RDD (弹性分布式数据集);而RDD则是一种分布式数据集,能够以两种方式并行运作,分别是任意函数和滑动窗口数据的转换。
[0052]图1为本发明中所述基于spark streaming的大数据流处理方法流程图。
[°°53] 如图1所示,一种基于spark streaming的大数据流处理方法,包括如下步骤:
[0054]步骤SI,在约定位置处接收数据源发送的数据;若数据源为HDFS,则约定位置为HDFS固定目录,若数据源为FLUME,则约定位置为约定主机的约定端口。若数据源为HDFS,则执行步骤S2,若数据源为FLUME,则执行步骤S3;
[0055]步骤S2,将数据以文件形式存储,执行步骤S3;
[0056]步骤S3,spark streaming对接收的数据或者文件进行处理;
[0057]步骤S4,spark streaming按照时间间隔将文件或数据的处理结果写入结果目录。
[0058]图2为本发明中数据源为HDFS时SparkStreaming进行流处理的流程图。如图2所示,若数据源为HDFS,在执行步骤S3之前还包括:spark streaming按照时间间隔监控HDFS固定目录下是否有新增的文件,如果有,则执行步骤S3,对新增的文件进行处理,否则继续监控。
[0059]图3为本发明中数据源为FLUME时推模式时Spark Streaming进行流处理的流程图。如图3所示,若数据源为FLUME,且FLUME的模式为推模式,在执行步骤SI之前还包括:启动spark streaming并基于spark streaming按照时间间隔监控约定主机的约定端口是否有新增的数据,如果有,则执行步骤SI,接收新增的数据,否则继续监控。
[0060]图4为本发明中数据源为FLUME时拉模式时Spark Streaming进行流处理的流程图。如图4所示,若数据源为FLUME,且FLUME的模式为拉模式,在执行步骤S3之前还包括:启动spark streaming并基于spark streaming按照时间间隔监控约定主机的约定端口是否有新增的数据,如果有,则执行步骤S3,对新增的数据进行处理,否则继续监控。
[0061]图5为本发明中所述基于sparkstreaming的大数据流处理系统结构图。根据上述基于spark streaming的大数据流处理方法可以得出如图5所述的一种基于sparkstreaming的大数据流处理系统,包括数据接收模块、文件存储模块、处理模块和写入模块。数据接收模块,用于在约定位置处接收数据源发送的数据;若数据源为HDFS,则约定位置为HDFS固定目录,若数据源为FLUME,则约定位置为约定主机的约定端口。若数据源为HDFS,则调用文件存储模块,若数据源为FLUME,则调用处理模块。文件存储模块,用于将数据以文件形式存储,并调用处理模块;处理模块,用于基于spark streaming对接收的数据或者文件进行处理,并调用写入模块。写入模块,用于基于spark streaming按照时间间隔将文件或数据的处理结果写入结果目录。
[0062]图6为本发明中数据源为HDFS时SparkStreaming进行流处理的系统结构图。如图6所示,若数据源为HDFS,则系统还包括:第一监控模块,分别与文件存储模块和处理模块连接,用于基于spark streaming按照时间间隔监控HDFS固定目录下是否有新增的文件,如果有,则调用处理模块,否则继续监控。
[0063]图7为本发明中数据源为FLUME时推模式时SparkStreaming进行流处理的系统结构图。如图7所示,若数据源为FLUME,且FLUME的模式为推模式,则系统还包括:第二监控模块,与数据接收模块连接,用于启动spark streaming并基于spark streaming按照时间间隔监控约定主机的约定端口是否有新增的数据,如果有,则调用数据接收模块,否则继续监控。
[0064]图8为本发明中数据源为FLUME时拉模式时SparkStreaming进行流处理的系统结构图。如图8所示,若数据源为FLUME,且FLUME的模式为拉模式,则还包括:第三监控模块,分别与数据接收模块和处理模块连接,用于启动spark streaming并基于spark streaming按照时间间隔监控约定主机的约定端口是否有新增的数据,如果有,则调用处理模块,否则继续监控。
[0005]与现有技术的Storm相比,本发明的优点在于:在容错、数据保证方面,SparkStreaming提供了更好的支持容错状态计算;在实现、编程API方面,Spark Streaming是以Scala编程,也支持Java; Spark Streaming—个好的特性是其运行在Spark上,这样就能够编写批处理的同样代码,而不需要编写单独的代码来处理实时流数据和历史数据;在集群管理集成方面,Spark Streaming可以运行在自己的集群上,Spark Streaming在YARN和Mesos上也均能运行,Spark Streaming是原生适配YARN。
[0066]在本说明书的描述中,参考术语“实施例一”、“实施例二”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体方法、装置或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、方法、装置或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0067]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于sparkstreami ng的大数据流处理方法,其特征在于,包括如下步骤: 步骤SI,在约定位置处接收数据源发送的数据,若数据源为HDFS,则执行步骤S2,若数据源为FLUME,则执行步骤S3; 步骤S2,将数据以文件形式存储,执行步骤S3; 步骤S3,spark streami ng对接收的数据或者文件进行处理; 步骤S4,spark streami ng按照时间间隔将文件或数据的处理结果写入结果目录。2.根据权利要求1所述的基于sparkstreami ng的大数据流处理方法,其特征在于,步骤SI中,若数据源为HDFS,则所述约定位置为HDFS固定目录,若数据源为FLUME,则所述约定位置为约定主机的约定端口。3.根据权利要求2所述的基于sparkstreami ng的大数据流处理方法,其特征在于,若数据源为HDFS,在执行步骤S3之前还包括: spark streami ng按照时间间隔监控HDFS固定目录下是否有新增的文件,如果有,贝Ij执行步骤S3,对新增的文件进行处理,否则继续监控。4.根据权利要求2所述的基于sparkstreami ng的大数据流处理方法,其特征在于,若数据源为FLUME,且FLUME的模式为推模式,在执行步骤SI之前还包括: 启动spark streami ng并基于spark streami ng按照时间间隔监控约定主机的约定端口是否有新增的数据,如果有,则执行步骤SI,接收新增的数据,否则继续监控。5.根据权利要求2所述的基于sparkstreami ng的大数据流处理方法,其特征在于,若数据源为FLUME,且FLUME的模式为拉模式,在执行步骤S3之前还包括: 启动spark streami ng并基于spark streami ng按照时间间隔监控约定主机的约定端口是否有新增的数据,如果有,则执行步骤S3,对新增的数据进行处理,否则继续监控。6.—种基于spark streami ng的大数据流处理系统,其特征在于,包括数据接收模块、文件存储模块、处理模块和写入模块: 所述数据接收模块,用于在约定位置处接收数据源发送的数据,若数据源为HDFS,则调用所述文件存储模块,若数据源为FLUME,则调用所述处理模块; 所述文件存储模块,用于将数据以文件形式存储,并调用所述处理模块; 所述处理模块,用于基于spark streami ng对接收的数据或者文件进行处理,并调用所述写入模块; 所述写入模块,用于基于spark streami ng按照时间间隔将文件或数据的处理结果写入结果目录。7.根据权利要求6所述的基于sparkstreami ng的大数据流处理系统,其特征在于,若数据源为HDFS,则所述约定位置为HDFS固定目录,若数据源为FLUME,则所述约定位置为约定主机的约定端口。8.根据权利要求7所述的基于sparkstreami ng的大数据流处理系统,其特征在于,若数据源为HDFS,则还包括: 第一监控模块,分别与所述文件存储模块和所述处理模块连接,用于基于sparkstreami ng按照时间间隔监控HDFS固定目录下是否有新增的文件,如果有,则调用所述处理模块,否则继续监控。9.根据权利要求7所述的基于sparkstreami ng的大数据流处理系统,其特征在于,若数据源为FLUME,且FLUME的模式为推模式,则还包括: 第二监控模块,与所述数据接收模块连接,用于启动spark streami ng并基于sparkstreami ng按照时间间隔监控约定主机的约定端口是否有新增的数据,如果有,则调用所述数据接收模块,否则继续监控。10.根据权利要求7所述的基于spark streami ng的大数据流处理系统,其特征在于,若数据源为FLUME,且FLUME的模式为拉模式,则还包括: 第三监控模块,分别与所述数据接收模块和所述处理模块连接,用于启动sparkstreami ng并基于spark streami ng按照时间间隔监控约定主机的约定端口是否有新增的数据,如果有,则调用所述处理模块,否则继续监控。
【文档编号】G06F17/30GK105930373SQ201610228189
【公开日】2016年9月7日
【申请日】2016年4月13日
【发明人】杜旭苗
【申请人】北京思特奇信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1