CN110908788B - 基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质 - Google Patents

基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN110908788B
CN110908788B CN201911213201.9A CN201911213201A CN110908788B CN 110908788 B CN110908788 B CN 110908788B CN 201911213201 A CN201911213201 A CN 201911213201A CN 110908788 B CN110908788 B CN 110908788B
Authority
CN
China
Prior art keywords
executed
rdd
task
tasks
data processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911213201.9A
Other languages
English (en)
Other versions
CN110908788A (zh
Inventor
陶劲
程强
万月亮
冯宇波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Ruian Technology Co Ltd
Original Assignee
Beijing Ruian Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Ruian Technology Co Ltd filed Critical Beijing Ruian Technology Co Ltd
Priority to CN201911213201.9A priority Critical patent/CN110908788B/zh
Publication of CN110908788A publication Critical patent/CN110908788A/zh
Application granted granted Critical
Publication of CN110908788B publication Critical patent/CN110908788B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质。该方法包括:获取当前批次的至少两个第一待执行任务,并合并为第二待执行任务,其中,第一待执行任务封装在弹性分布式数据集RDD中;执行第二待执行任务并将执行结果数据存储至分布式文件系统。本发明实施例所提供的技术方案,解决了由于NameNode的处理请求能力下降而导致的Spark Streaming进行数据处理时吞吐量下降的问题,减少了任务生成的文件数,即减少了向NameNode发出的请求数量,进而提高了NameNode处理请求能力的稳定性,从而提高了Spark Streaming数据处理时的吞吐量。

Description

基于Spark Streaming的数据处理方法、装置、计算机设备及 存储介质
技术领域
本发明实施例涉及大数据实时计算技术领域,尤其涉及一种基于SparkStreaming的数据处理方法、装置、计算机设备及存储介质。
背景技术
Spark Streaming是一种流式处理框架,其具有准实时、微批处理、可扩展、高吞吐量及容错等特性,在大规模数据处理方面得到广泛的应用。在实际的数据处理过程中,通常需要获得结果数据并存储至分布式文件存储系统中,例如Hadoop分布式文件系统(HadoopDistributed File System,HDFS)。由于HDFS是开源的,在利用Spark Streaming进行数据处理的情况下也有较多的应用。但是Spark Streaming自带的应用程序接口(ApplicationProgramming Interface,API)通常会为每一个离散化流输出一波数据,输出的文件数取决于离散化流的最终分区数,分区数越高,处理速度越快,但同时也会形成更多的文件。当运行一段时间后,将会消耗HDFS的NameNode大量内存,使得NameNode的处理请求能力大大下降,从而导致Spark Streaming进行数据处理时的吞吐量也大大下降。
现有技术通常通过额外定期启动文件合并程序,在Spark Streaming数据处理完成之后合并一些批次的数据文件的方法来解决,但是该方法需要消耗额外的计算资源,同时也增加了输入/输出(Input/Output,IO)的开销。另一种解决方案是利用HDFS自有的追加写入功能,但由于分布式租约机制的限制,对于某个文件的写入同时只能存在一个客户端,而Spark Streaming的任务批次间是无缝衔接的,要保证租约长期稳定,最好的用法是对同一个文件不同批次的写入都由同一个客户端来操作,即需要保证相同的分区需要由相同的机器来操作。
由于上述两种现有技术存在的问题,同时在数据处理过程中易受到硬件波动及其他应用运行等的影响,虽然暂时相对缓解了NameNode的处理压力,但NameNode的处理请求能力还是会定期大幅下降,也就导致了原来Spark Streaming稳定的批次处理任务积压,仍会大大降低Spark Streaming进行数据处理时的吞吐量。
发明内容
本发明提供一种基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质,其目的在于解决由于NameNode的处理请求能力下降而导致的Spark Streaming进行数据处理时吞吐量下降的问题。
第一方面,本发明实施例提供了一种基于Spark Streaming的数据处理方法,该方法包括:
获取当前批次的至少两个第一待执行任务,并合并为第二待执行任务,其中,第一待执行任务封装在弹性分布式数据集RDD中;
执行第二待执行任务并将执行结果数据存储至分布式文件系统。
第二方面,本发明实施例提供了一种基于Spark Streaming的数据处理装置,该装置包括:
任务合并模块,用于获取当前批次的至少两个第一待执行任务,并合并为第二待执行任务,其中,第一待执行任务封装在弹性分布式数据集RDD中;
任务执行模块,用于执行第二待执行任务并将执行结果数据存储至分布式文件系统。
第三方面,本发明实施例还提供了一种计算机设备,该设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所提供的的数据处理方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所提供的数据处理方法。
本发明实施例提供了一种基于Spark Streaming的数据处理方案,通过将获取的当前批次的任务合并后执行,并将执行结果数据存储至分布式文件系统。解决了由于NameNode的处理请求能力下降而导致的Spark Streaming进行数据处理时吞吐量下降的问题,减少了任务生成的文件数,即减少了向NameNode发出的请求数量,进而提高了NameNode处理请求能力的稳定性,从而提高了Spark Streaming数据处理时的吞吐量。
附图说明
图1是本发明实施例一提供的基于Spark Streaming的数据处理方法的流程图;
图2是本发明实施例二提供的基于Spark Streaming的数据处理方法的流程图;
图3是本发明实施例三提供的基于Spark Streaming的数据处理装置的结构示意图;
图4是本发明实施例四提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1为本发明实施例一提供的基于Spark Streaming的数据处理方法的流程图。本实施例可适用于长时间利用Spark Streaming进行数据处理的情况,该方法可以由本发明实施例提供的基于Spark Streaming的数据处理装置来执行,该装置可以由硬件和/或软件的方式来实现,一般可集成于计算机设备中,例如个人计算机(Personal Computer,PC)中。如图1所示,具体包括如下步骤:
S11、获取当前批次的至少两个第一待执行任务,并合并为第二待执行任务,其中,所述第一待执行任务封装在弹性分布式数据集RDD中。
Spark是专为大规模数据处理而设计的快速通用的计算引擎,是一种开源的通用并行框架。Spark Streaming是对Spark核心应用程序接口(Application ProgrammingInterface,API)的拓展,从而支持对于实时数据流的可拓展、高吞吐量和容错性流处理。在内部,Spark Streaming接收实时数据流的同时将数据划分成批,这些数据将会按批次被Spark的引擎所处理,从而生成同样按批次形式的最终流。
Spark Streaming具体的处理流程通常为:实时监听数据源的数据,每隔一段时间将监听到的数据封装成一个批处理(Batch),然后将每个Batch封装成弹性分布式数据集(Resilient Distributed Dataset,RDD),再将一系列RDD封装成离散化流(Dstream),最后通过算子计算得到结果。具体的,RDD将数据存储在内存中,减少磁盘IO操作,提高数据处理的实时性。RDD存储的数据分布在多台计算机设备上,进行并行计算,可以提高并行效率。在计算处理过程中,保存中间结果提高容错性,同时,计算机设备的内存不够时,可以通过和硬盘进行数据交换,可以保证计算得以继续进行。
在按批次处理的基础上,还可设置并发执行的任务数,则当前批次可包括并发执行的多个第一待执行任务,示例性的,将并发执行的任务数设置为5,则有5个批次同时执行,即有5个RDD同时执行,每个RDD对应一个第一待执行任务。实际上,RDD中的数据为待处理的数据,例如,进行数据筛选处理,可以为每个RDD配置一个第一待执行任务进行处理,由此,一个RDD对应一个第一待执行任务。将第一待执行任务封装在RDD中,可以确保第一待执行任务可以正确执行,提高第一待执行任务的处理实时性以及处理效率。
获取到当前批次的第一待执行任务后,再将当前批次的第一待执行任务合并为第二待执行任务。第二待执行任务可以是指经过合并处理后的待执行任务,通常第二待执行任务的处理数据量大于第一待执行任务。
可选的,可根据第一待执行任务所属RDD在数据源中的存放位置,将连续存放位置的第一待执行任务合并为第二待执行任务。
其中,数据源可以是Kafka、Flume、ZMQ和Kinesis等。实际上,RDD中数据是分区化存储,以便执行并行操作。从而可以方便的按照第一待执行任务所属RDD在数据源中的存放位置,对RDD进行组合,形成新的RDD,也即形成新的第二待执行任务执行对RDD存储的数据的处理。实际上,还可以根据第一待执行任务的处理方式,将处理方式相同的第一待执行任务合并为第二待执行任务。此外,还可以根据第一待执行任务的其他参数进行合并,对此,本发明实施例不作具体限制。
通过将存放位置连续作为合并的依据,可以增强执行合并后任务的结果与原数据处理方法所得正确结果的一致性,且判断存放位置连续的过程较为简便,通常可以在数据源中直接获取存放位置的相关信息。
由于当前批次的多个第一待执行任务原是按时间先后的批次顺序处理,而在本实施例中,将多个第一待执行任务并行的同时进行处理,但多个第一待执行任务在数据源中的存放位置仍有先后顺序,所以为了便于判断多个第一待执行任务在数据源中的存放位置是否连续,可选的,可以在判断之前按照RDD的生成时间进行排序。也即根据RDD的生成时间进行排序,并根据排序结果确定连续存放位置的第一待执行任务。实际上,根据生成时间对RDD进行排序,先获取生成时间相近的RDD,再进一步在生成时间相近的多个RDD的存放位置是否连续,从而筛选出连续存放位置的多个RDD,确定连续存放位置的多个第一待执行任务。
S12、执行所述第二待执行任务并将执行结果数据存储至分布式文件系统。
将并发执行的至少两个第一待执行任务合并为一个第二待执行任务并执行,将执行结果存储在分布式文件系统。具体的,通过Spark Streaming进行数据处理,并将处理结果的数据存储至分布式文件系统。可选的,该分布式文件系统可以是Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)。具体的存储流程为:生成处理结果的文件后,向HDFS的NameNode提出请求,NameNode负责管理文件系统的命名空间,然后每个文件会在NameNode中生成一个文件对象及一个块对象,并为该文件分配可以写入的DataNode信息,再根据DataNode信息对该文件的文件对象及块对象进行存储。
在上述技术方案的基础上,可选的,获取当前批次的至少两个第一待执行任务,包括:接收数据源发送的数据;将预设时间内获取的数据封装成RDD,同一批次的至少两个RDD对应的第一待执行任务为并行任务;根据RDD和RDD生成时间,更新预先构建的RDD队列;从RDD队列中获取当前批次的至少两个RDD对应的第一待执行任务。
接收数据源发送的数据实际是数据源的流数据。流数据是一组顺序、大量、快速、连续到达的数据序列,一般情况下,数据流可被视为一个随时间延续而无限增长的动态数据集合。从而需要按照将不同时间内流数据分别封装成不同的RDD。预设时间可以根据需要进行设定,例如1小时。
RDD是按照批次进行处理,同一批次的RDD是指,处理时间相同的RDD。当前批次的RDD是指,当前系统时间需要处理的RDD。获取当前批次的至少两个RDD对应的第一待执行任务,实际上是获取当前系统时间需要执行的第一待执行任务。
其中,同一批次的RDD包括设置为并行执行的原串行执行的多个RDD。预先创建一个RDD队列,然后不断的将封装好的RDD及RDD生成时间推送到该队列中,同时创建一个相对于数据处理线程的后台线程,用于从该队列中抓取RDD对应的第一待执行任务,该后台线程保持工作直至主线程通知结束,从而不增加主线程的运行压力。在抓取的过程中,还要保证所抓取到的第一待执行任务是属于当前批次的,以用于合并为第二待执行任务。从而保证在第一待执行任务需要执行时,进行合并,减少当前批次处理的任务数,可以提高当前批次的处理效率。
通过创建RDD队列,可以方便的获取属于当前批次的第一待执行任务,在获取到不属于当前批次的第一待执行任务时,也可以方便的将其放回RDD队列而不影响处理的过程。
可选的,从RDD队列中获取当前批次的至少两个RDD对应的第一待执行任务,包括:按照预设周期获取RDD队列中的RDD,并提取第一待执行任务;如果获取的目标RDD不属于当前批次,则将目标RDD放回RDD队列,并等待预设时间后,继续按照预设周期获取RDD队列中的RDD。
预设周期可以是指从RDD队列中对RDD进行抓取的频率。可以理解的是,在抓取时,可能会抓取到非当前批次的RDD,可以将该RDD放回队列,同时,可以等待预设时间,避免增加抓取频率,造成后台线程的运行压力。
具体而言,按照预设周期从RDD队列中循环抓取RDD,从而获得RDD对应的第一待执行任务,如果所抓取的第一待执行任务不属于当前批次,则将抓取的结果放回RDD队列,并等待一段时间,再继续按照预设周期抓取RDD,等待的时间不宜过长,以避免当前批次处理完成后因等待而延迟下一批次的处理,即使又获取到不属于当前批次的第一待执行任务,将其再次放回RDD队列即可,同时等待的时间也不宜过短,以无端增加后台线程的运行压力。示例性的,等待时间为100ms,还可以具体根据需要进行设定。
通过将不属于当前批次的第一待执行任务放回RDD队列,可以保证用于合并的第一待执行任务属于当前批次,同时避免了丢失后续批次未处理的第一待执行任务的问题。
在上述技术方案的基础上,可选的,该数据处理方法还包括:如果当前批次的RDD的状态为完成状态,则在第二待执行任务执行完成时,为下一批次的RDD添加未处理状态。
具体而言,在原有的Spark Streaming数据处理过程中,后批次的数据开始处理必须等待前批次的数据处理完毕,为了便于判断处理状态,Spark Streaming中为RDD处理状态设置标签,包括:未处理状态、处理中状态及完成状态。原有处理方法是在当前处理的RDD状态为完成状态时,触发后批次的RDD进行处理。但由于Spark Streaming将把RDD和RDD生成时间更新至RDD队列视为任务完成,同时更新过程耗时极短,因此更新至RDD队列中的第一待执行任务可能尚未开始处理,对应的RDD便被Spark Streaming标记为已完成的状态,并触发标记下一批次的RDD的状态为未处理状态,从而触发下一批次的RDD对应的第一待执行任务执行。所以在将RDD和RDD生成时间更新至RDD队列后,可以加入一段等待代码,以等待当前批次的第一待执行任务真正处理完毕,并可以开始对下一批次第一待执行任务的处理,可以为下一批次第一待执行任务对应的RDD添加未处理状态。
通过对RDD状态进行修正,实现修正RDD的真实状态,从而使得数据处理可以准确有序的进行。
本发明实施例所提供的技术方案,通过将获取的当前批次的任务合并后执行,并将执行结果数据存储至分布式文件系统。解决了由于NameNode的处理请求能力下降而导致的Spark Streaming进行数据处理时吞吐量下降的问题,减少了任务生成的文件数,即减少了向NameNode发出的请求数量,进而提高了NameNode处理请求能力的稳定性,从而提高了Spark Streaming数据处理时的吞吐量。
实施例二
图2为本发明实施例二提供的基于Spark Streaming的数据处理方法的流程图。本实施例的技术方案在上述技术方案的基础上进一步细化,在本实施例中,针对数据源选择分布式发布订阅消息系统Kafka的情况进一步说明,利用Kafka特有的结构对技术方案进行细化。如图2所示,具体包括如下步骤:
S21、获取当前批次的至少两个第一待执行任务。
本实施例中的当前批次、第一待执行任务等可以参考上述实施例的描述。
S22、获取所述第一待执行任务所属RDD在分布式发布订阅消息系统中的分区信息及偏移量信息。
分区信息可以是指RDD在分布式发布订阅消息系统中的存放位置。偏移量信息可以是指RDD在分区信息中的具体存放位置。实际上,分区信息及偏移量信息共同确定在分布式发布订阅消息系统中的具体存放位置。
若数据源选用分布式发布订阅消息系统Kafka,在获取第一待执行任务后,对第一待执行任务对应的RDD执行映射操作,映射结果即为(分区信息,偏移量信息),每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic,每个Topic包含一个或多个分区,其中分区信息主要为Kafka的Topic加分区号,用于确定数据的分区位置。同时每个Topic会产生一个偏移量信息,且各偏移量信息之间不重叠,以保证顺序存储数据且不重复,其中偏移量信息为对应分区中的起始偏移量与结束偏移量,用于确定存储数据的具体位置。
S23、按照所述分区信息对各所述第一待执行任务进行划分,形成分区组。
分区组用于按照存放位置对第一待执行任务进行划分,具体是将分区信息相同的第一待执行任务聚合在一起。
在获取了第一待执行任务所属RDD在Kafka中的分区信息及偏移量信息之后,按照分区信息对第一待执行任务进行划分,使具有相同分区信息的第一待执行任务聚合到一起,形成分区组,即(分区信息,(相同分区信息包括的偏移量信息))。
S24、在各所述分区组中,将满足连续条件的偏移量信息进行合并,得到与所述第二待执行任务匹配的偏移量信息。
连续条件用于判断分区组内的相邻两个第一待执行任务的偏移量信息是否连续,具体的用于在相邻两个第一待执行任务中,判断前一第一待执行任务的结束偏移量与后一第一待执行任务的起始偏移量是否相邻。示例性的,在同一分区组内:前一第一待执行任务的偏移量信息为(1,2),后一第一待执行任务的偏移量信息为(3,5),因为2与3相邻,由此,该两个第一待执行任务分别对应的偏移量信息满足连续条件。
与二待执行任务匹配的偏移量信息可以是指两个偏移量信息合并形成的偏移量信息,同时作为两个偏移量信息对应的第一待执行任务合并后的第二待执行任务匹配的偏移量信息。如果后一偏移量信息的起始偏移量与前一偏移量信息结束偏移量首尾相连,则将这两个偏移量信息进行合并,即按顺序进行衔接为对应的偏移量信息。如前例,偏移量信息(1,2)和偏移量信息(3,5),可以合并为偏移量信息(1,5)。
在形成分区组之后,为了便于判断两个偏移量信息是否连续,可以预先对分区组内的偏移量信息进行排序。而且,由于各偏移量信息彼此不重叠,排序结果是唯一确定的。如果其中的偏移量信息均满足连续条件,即各偏移量信息的起始偏移量与结束偏移量均首尾相连,则将偏移量信息进行合并,即按顺序进行衔接,得到最终该分区对应的偏移量信息。
可以首先对同一分区信息包括的偏移量信息按照起始偏移量或结束偏移量的大小进行排序,如果其中的偏移量信息均满足连续条件,即各偏移量信息的起始偏移量与结束偏移量均首尾相连,则将偏移量信息进行合并,即按顺序进行衔接,得到最终该分区对应的偏移量信息。其中,如果相邻,则将偏移量信息连接合并,示例性的,同一分区信息包括两个偏移量信息,分别为:(1,2)和(3,5),因为2与3相邻,所以可以将两个偏移量信息合并为(1,5)。
如果同一分区组内的存在至少两个相邻的第一待执行任务的偏移量信息不满足连续条件的情况,也即其中一部分偏移量信息连续,则将连续的部分偏移量信息分别合并,从而得到该分区对应的多个偏移量信息。示例性的,同一分区信息包括三个偏移量信息,分别为:(1,2)、(3,5)和(7,9),则将偏移量信息合并为(1,5)和(7,9)。
此外,同一分区组内可能存在任意两个相邻偏移量信息均不满足连续条件的情况,则保持原来的状态不变。示例性的,同一分区组内的两个偏移量信息分别为:(1,2)和(7,9),则保持不合并,仍为偏移量信息(1,2)和偏移量信息(7,9)。
在将满足连续条件的偏移量信息进行合并之后,将偏移量信息匹配的第一待执行任务合并得到目标待执行任务,由于存在至少两个相邻的第一待执行任务的偏移量信息不满足连续条件的情况或任意两个相邻偏移量信息均不满足连续条件的情况,所以可能获得多个目标待执行任务以及未经合并的第一待执行任务,此时将未经合并的第一待执行任务视为目标待执行任务,因此,将目标待执行任务作为第二待执行任务还需要进行修正。
可选的,在得到与第二待执行任务匹配的偏移量信息之后,该方法还可包括:如果目标偏移量信息的数量为两个以上,则将各目标偏移量信息匹配的目标待执行任务进行合并,修正第二待执行任务。
如果发现分区组内的偏移量信息的数量为2个、3个甚至是更多,将该分区组内的偏移量信息作为目标偏移量信息,并将目标偏移量信息匹配的目标待执行任务进行合并。其中,目标待执行任务包括第一待执行任务和/或第二待执行任务。目标待执行任务用于进一步进行任务合并。修正第二待执行任务,实际是将目标待执行任务进行合并,直至仅剩下一个待执行任务,作为第二待执行任务,以实现修正第二待执行任务。
可选的,可使用coalesce函数对数据重新分区,从而将获得的目标待执行任务进一步合并,得到唯一的第二待执行任务。
通过二次合并使得最后只存在唯一的第二待执行任务,可以大大减少向NameNode请求的次数,降低NameNode处理请求的压力。
S25、执行所述第二待执行任务并将执行结果数据存储至分布式文件系统。
本发明实施例所提供的技术方案,通过将获取的当前批次的任务合并后执行,特别是利用Kafka中的分区信息及偏移量信息将任务合并后执行,并将执行结果数据存储至分布式文件系统。解决了由于NameNode的处理请求能力下降而导致的Spark Streaming进行数据处理时吞吐量下降的问题,减少了任务生成的文件数,即减少了向NameNode发出的请求数量,进而提高了NameNode处理请求能力的稳定性,从而提高了Spark Streaming数据处理时的吞吐量。
实施例三
图3为本发明实施例三提供的基于Spark Streaming的数据处理装置的结构示意图。该装置可以由硬件和/或软件的方式来实现,一般可集成于计算机设备中,例如个人计算机(Personal Computer,PC)中。如图3所示,该装置包括:
任务合并模块31,用于获取当前批次的至少两个第一待执行任务,并合并为第二待执行任务,其中,第一待执行任务封装在弹性分布式数据集RDD中;
任务执行模块32,用于执行第二待执行任务并将执行结果数据存储至分布式文件系统。
本发明实施例所提供的技术方案,通过将获取的当前批次的任务合并后执行,并将执行结果数据存储至分布式文件系统。解决了由于NameNode的处理请求能力下降而导致的Spark Streaming进行数据处理时吞吐量下降的问题,减少了任务生成的文件数,即减少了向NameNode发出的请求数量,进而提高了NameNode处理请求能力的稳定性,从而提高了Spark Streaming数据处理时的吞吐量。
可选的,任务合并模块31具体用于:
根据第一待执行任务所属RDD在数据源中的存放位置,将连续存放位置的第一待执行任务合并为第二待执行任务。
可选的,数据源包括分布式发布订阅消息系统;
相应的,该装置还包括:
信息获取子模块,用于获取第一待执行任务所属RDD在分布式发布订阅消息系统中的分区信息及偏移量信息;
分区组形成子模块,用于按照分区信息对各第一待执行任务进行划分,形成分区组;
偏移量信息合并子模块,用于在各分区组中,将满足连续条件的偏移量信息进行合并,得到与第二待执行任务匹配的偏移量信息。
可选的,任务合并模块31还包括:
修正子模块,用于在得到与第二待执行任务匹配的偏移量信息之后,如果目标偏移量信息的数量为两个以上,则将各目标偏移量信息匹配的目标待执行任务进行合并,修正第二待执行任务。
可选的,任务合并模块31还包括:
接收子模块,用于接收数据源发送的数据;
RDD封装子模块,用于将预设时间内获取的数据封装成RDD,同一批次的至少两个RDD对应的第一待执行任务为并行任务;
RDD队列更新子模块,用于根据RDD和RDD生成时间,更新预先构建的RDD队列;
任务获取子模块,用于从RDD队列中获取当前批次的至少两个RDD对应的第一待执行任务。
可选的,该装置还包括:
状态添加模块,用于如果当前批次的RDD的状态为完成状态,则在第二待执行任务执行完成时,为下一批次的RDD添加未处理状态。
可选的,任务获取子模块包括:
任务提取单元,用于按照预设周期获取RDD队列中的RDD,并提取第一待执行任务;
RDD放回单元,用于如果获取的目标RDD不属于当前批次,则将目标RDD放回RDD队列,并等待预设时间后,继续按照预设周期获取RDD队列中的RDD。
本发明实施例所提供的数据处理装置可执行本发明任意实施例所提供的数据处理方法,具备执行方法相应的功能模块和有益效果。
值得注意的是,在上述数据处理装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例四
图4为本发明实施例四提供的一种计算机设备的结构示意图,示出了适于用来实现本发明实施方式的示例性设备的框图。图4显示的设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图4所示,该设备包括处理器41、存储器42、输入装置43及输出装置44;设备中处理器41的数量可以是一个或多个,图4中以一个处理器41为例,设备中的处理器41、存储器42、输入装置43及输出装置44可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储器42作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据处理方法对应的程序指令/模块(例如,数据处理装置中的任务合并模块31及任务执行模块32)。处理器41通过运行存储在存储器42中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据处理方法。
存储器42可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器42可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器42可进一步包括相对于处理器41远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置43可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置44可包括显示屏等显示设备。
实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,该计算机可执行指令在由计算机处理器执行时用于执行一种基于Spark Streaming的数据处理方法,该方法包括:
获取当前批次的至少两个第一待执行任务,并合并为第二待执行任务,其中,第一待执行任务封装在弹性分布式数据集RDD中;
执行第二待执行任务并将执行结果数据存储至分布式文件系统。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到计算机系统。第二计算机系统可以提供程序指令给计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据处理方法中的相关操作。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (9)

1.一种基于Spark Streaming的数据处理方法,其特征在于,包括:
获取当前批次的至少两个第一待执行任务,并合并为第二待执行任务,其中,所述第一待执行任务封装在弹性分布式数据集RDD中;
执行所述第二待执行任务并将执行结果数据存储至分布式文件系统;
所述获取当前批次的至少两个第一待执行任务,包括:
接收数据源发送的数据;
将预设时间内获取的数据封装成RDD,同一批次的至少两个RDD对应的第一待执行任务为并行任务;
根据RDD和RDD生成时间,更新预先构建的RDD队列,同时创建一个后台线程;
所述后台线程从所述RDD队列中获取所述当前批次的至少两个RDD对应的第一待执行任务。
2.根据权利要求1所述的数据处理方法,其特征在于,所述合并为第二待执行任务,包括:
根据所述第一待执行任务所属RDD在数据源中的存放位置,将连续存放位置的第一待执行任务合并为第二待执行任务。
3.根据权利要求2所述的数据处理方法,其特征在于,所述数据源包括分布式发布订阅消息系统;
所述基于Spark Streaming的数据处理方法,还包括:
获取所述第一待执行任务所属RDD在分布式发布订阅消息系统中的分区信息及偏移量信息;
按照所述分区信息对各所述第一待执行任务进行划分,形成分区组;
在各所述分区组中,将满足连续条件的偏移量信息进行合并,得到与所述第二待执行任务匹配的偏移量信息。
4.根据权利要求3所述的数据处理方法,其特征在于,在得到与所述第二待执行任务匹配的偏移量信息之后,还包括:
如果目标偏移量信息的数量为两个以上,则将各所述目标偏移量信息匹配的目标待执行任务进行合并,修正所述第二待执行任务。
5.根据权利要求1所述的数据处理方法,其特征在于,还包括:
如果所述当前批次的RDD的状态为完成状态,则在所述第二待执行任务执行完成时,为下一批次的所述RDD添加未处理状态。
6.根据权利要求1所述的数据处理方法,其特征在于,所述从所述RDD队列中获取所述当前批次的至少两个RDD对应的第一待执行任务,包括:
按照预设周期获取所述RDD队列中的RDD,并提取第一待执行任务;
如果获取的目标RDD不属于所述当前批次,则将所述目标RDD放回所述RDD队列,并等待预设时间后,继续按照所述预设周期获取所述RDD队列中的RDD。
7.一种基于Spark Streaming的数据处理装置,其特征在于,包括:
任务合并模块,用于获取当前批次的至少两个第一待执行任务,并合并为第二待执行任务,其中,所述第一待执行任务封装在弹性分布式数据集RDD中;
任务执行模块,用于执行所述第二待执行任务并将执行结果数据存储至分布式文件系统;
所述任务合并模块还包括:
接收子模块,用于接收数据源发送的数据;
RDD封装子模块,用于将预设时间内获取的数据封装成RDD,同一批次的至少两个RDD对应的第一待执行任务为并行任务;
RDD队列更新子模块,用于根据RDD和RDD生成时间,更新预先构建的RDD队列,同时创建一个后台线程;
任务获取子模块,用于所述后台线程从RDD队列中获取当前批次的至少两个RDD对应的第一待执行任务。
8.一种计算机设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的数据处理方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的数据处理方法。
CN201911213201.9A 2019-12-02 2019-12-02 基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质 Active CN110908788B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911213201.9A CN110908788B (zh) 2019-12-02 2019-12-02 基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911213201.9A CN110908788B (zh) 2019-12-02 2019-12-02 基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN110908788A CN110908788A (zh) 2020-03-24
CN110908788B true CN110908788B (zh) 2022-04-08

Family

ID=69821553

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911213201.9A Active CN110908788B (zh) 2019-12-02 2019-12-02 基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN110908788B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111367953A (zh) * 2020-03-30 2020-07-03 中国建设银行股份有限公司 一种资讯数据的流式处理方法及装置
CN111526188B (zh) * 2020-04-10 2022-11-22 北京计算机技术及应用研究所 基于Spark Streaming结合Kafka确保数据零丢失的系统和方法
CN111475317B (zh) * 2020-04-17 2023-09-15 上海中通吉网络技术有限公司 Spark批次时间修改方法、装置、设备和存储介质
CN113971166A (zh) * 2020-07-23 2022-01-25 北京达佳互联信息技术有限公司 内容数据存储方法、装置、服务器及存储介质
CN112286917B (zh) * 2020-10-22 2022-10-18 北京锐安科技有限公司 数据处理方法、装置、电子设备和存储介质
CN112328602B (zh) * 2020-11-17 2023-03-31 中盈优创资讯科技有限公司 一种数据写入Kafka的方法、装置及设备
CN112615773B (zh) * 2020-12-02 2023-02-28 海南车智易通信息技术有限公司 一种消息处理方法及系统
CN112822260B (zh) * 2020-12-31 2023-06-09 北京天融信网络安全技术有限公司 文件传输方法及装置、电子设备、存储介质
CN113778701A (zh) * 2021-01-07 2021-12-10 北京沃东天骏信息技术有限公司 消息处理方法和装置以及电子设备和介质
CN114153620B (zh) * 2022-02-08 2022-05-24 上海柯林布瑞信息技术有限公司 Hudi运行环境资源优化分配方法及装置
CN115150471B (zh) * 2022-06-27 2024-03-29 北京百度网讯科技有限公司 数据处理方法、装置、设备、存储介质及程序产品
CN116302616A (zh) * 2023-03-28 2023-06-23 之江实验室 一种数据处理的方法、装置、存储介质及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106843763A (zh) * 2017-01-19 2017-06-13 北京神州绿盟信息安全科技股份有限公司 一种基于hdfs系统的文件合并方法及装置
CN109918349A (zh) * 2019-02-25 2019-06-21 网易(杭州)网络有限公司 日志处理方法、装置、存储介质和电子装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106843763A (zh) * 2017-01-19 2017-06-13 北京神州绿盟信息安全科技股份有限公司 一种基于hdfs系统的文件合并方法及装置
CN109918349A (zh) * 2019-02-25 2019-06-21 网易(杭州)网络有限公司 日志处理方法、装置、存储介质和电子装置

Also Published As

Publication number Publication date
CN110908788A (zh) 2020-03-24

Similar Documents

Publication Publication Date Title
CN110908788B (zh) 基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质
CN107370667B (zh) 多线程并行处理方法和装置、可读介质和存储控制器
US11474874B2 (en) Systems and methods for auto-scaling a big data system
CN112148455B (zh) 一种任务处理方法、设备及介质
CN102456031B (zh) 一种MapReduce系统和处理数据流的方法
CN111209310B (zh) 基于流计算的业务数据处理方法、装置和计算机设备
CN107729138B (zh) 一种高性能分布式矢量空间数据的分析方法和装置
CN110569252B (zh) 一种数据处理系统及方法
US10498817B1 (en) Performance tuning in distributed computing systems
US11210277B2 (en) Distributing and processing streams over one or more networks for on-the-fly schema evolution
CN111367591B (zh) Spark任务处理方法及装置
Liu et al. Optimizing shuffle in wide-area data analytics
CN115454972A (zh) 一种数据处理方法、装置、设备及存储介质
US20220413906A1 (en) Method, device, and program product for managing multiple computing tasks based on batch
CN111435315A (zh) 分配资源的方法、装置、设备和计算机可读介质
CN108696559B (zh) 流处理方法及装置
WO2020147601A1 (zh) 用于对图进行学习的系统
CN114095571A (zh) 数据处理方法、数据服务总线、终端和存储介质
CN113760638A (zh) 一种基于kubernetes集群的日志服务方法和装置
CN110750362A (zh) 生物信息的分析方法、装置和存储介质
CN114610765B (zh) 流计算方法、装置、设备及存储介质
CN109684051A (zh) 一种混合式大数据任务异步提交的方法和系统
CN115361382A (zh) 基于数据群组的数据处理方法、装置、设备和存储介质
CN112818183A (zh) 一种数据合成方法、装置、计算机设备和存储介质
CN113821313A (zh) 一种任务调度方法、装置及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant