CN112799820A - 数据处理方法、装置、电子设备、存储介质及程序产品 - Google Patents
数据处理方法、装置、电子设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN112799820A CN112799820A CN202110163208.5A CN202110163208A CN112799820A CN 112799820 A CN112799820 A CN 112799820A CN 202110163208 A CN202110163208 A CN 202110163208A CN 112799820 A CN112799820 A CN 112799820A
- Authority
- CN
- China
- Prior art keywords
- data
- partition
- task
- data processing
- target partition
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 432
- 238000003672 processing method Methods 0.000 title abstract description 29
- 238000005192 partition Methods 0.000 claims abstract description 461
- 238000013507 mapping Methods 0.000 claims abstract description 112
- 238000000034 method Methods 0.000 claims abstract description 64
- 238000013523 data management Methods 0.000 claims description 160
- 230000015654 memory Effects 0.000 claims description 33
- 238000004590 computer program Methods 0.000 claims description 12
- 238000000638 solvent extraction Methods 0.000 claims description 8
- 239000000126 substance Substances 0.000 claims description 2
- 230000008569 process Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 20
- 208000022417 sinus histiocytosis with massive lymphadenopathy Diseases 0.000 description 20
- 238000004364 calculation method Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 230000003993 interaction Effects 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例公开了一种数据处理方法、装置、电子设备、存储介质及程序产品,方法包括:确定数据产生端在数据写阶段产生的数据分区中的数据量;将数据量大于或等于第一预设阈值的数据分区确定为目标分区;生成多个任务标识,并建立多个任务标识与目标分区中数据之间的映射关系;将多个任务标识分别分配给不同的数据处理任务,以便在数据读阶段由数据处理任务根据映射关系从目标分区读取所对应的数据。该技术方案可以通过启动多个数据处理任务并行对该目标分区中的数据进行处理的方式,解决Shuffle阶段由于某个数据分区中发生数据倾斜而导致对应的大数据处理作业效率低下的问题,提升了大数据处理作业的处理效率。
Description
技术领域
本公开实施例涉及计算机技术领域,具体涉及一种数据处理方法、装置、电子设备、存储介质及程序产品。
背景技术
Spark是一种基于内存计算的分布式大数据并行处理平台,它集批处理、实时流处理、交互式查询与图计算于一体,避免了各种运算场景下需要部署不同集群所带来的资源浪费。
Spark提出的分布式回弹数据集(Resilient Distributed Dataset,RDD)使得大数据的计算过程最大可能的在内存中进行。在执行逻辑上,Spark按照用户程序的逻辑从前向后生成RDD,每个RDD都会有自己的依赖。当用户的程序需要最终的输出结果时,Spark就会从最后一个RDD递归向前寻找,并且按照其中存在的Shuffle Dependency来划分Stage,而Stage之间的数据交互需要Shuffle来完成。在划分完Stage之后,Spark就会从前向后提交Stage,先提交没有缺失依赖的Stage,依次向后。这种调度逻辑使得数据自动流向需要计算的位置,并且让计算中间结果最大可能的保存在内存中。
而为了保证Stage之间的分割和本身框架的容错性,在划分每个阶段的ShuffleDependency时,Spark会将前驱Stage产生的中间结果存储到磁盘中,然后开始分配下一个Stage的任务,之后再由Stage的数据读取任务去远程读取磁盘上的数据,然后进行计算。
但是,在进行shuffle的时候,必须将在前驱Stage的各个节点上产生的相同Key数据拉取到下一Stage的某个节点上的一个task来进行处理。如果某个key对应的数据量特别大的话,则会发生数据倾斜。比如大部分 key对应10条数据,但个别key却对应了100万条数据,那么大部分task 会只分配到10条数据,而个别task可能会分配了100万数据。整个spark 作业的运行进度是由运行时间最长的那个task决定的。因此出现数据倾斜的时候,spark作业看起来会运行得非常缓慢,甚至可能因为某个task处理的数据量过大导致内存溢出。因此,如何解决Spark的Shuffle阶段数据倾斜的问题是当前需要解决的技术问题之一。
发明内容
本公开实施例提供一种数据处理方法、装置、电子设备、存储介质及程序产品。
第一方面,本公开实施例中提供了一种数据处理方法,包括:
确定数据产生端在数据写阶段产生的数据分区中的数据量;
将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区;
生成多个任务标识,并建立所述多个任务标识与所述目标分区中数据之间的映射关系;其中,所述映射关系中每条数据对应一个任务标识,一个任务标识对应一条数据或者多条数据;
将多个所述任务标识分别分配给不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据。
进一步地,确定数据产生端在数据写阶段产生的数据分区中的数据量,包括:
从所述数据产生端获取在数据写阶段所产生的所述数据分区的数据量。
进一步地,生成多个任务标识,并建立所述多个任务标识与所述目标分区中数据之间的映射关系,包括:
根据所述目标分区的所述数据量确定处理所述目标分区中的数据所需要的所述数据处理任务的目标数量;
根据所述目标数量生成多个所述任务标识,一个所述数据处理任务对应一个所述任务标识。
进一步地,将多个所述任务标识分别分配给不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据,包括:
针对所述目标分区,启动目标数量个所述数据处理任务;
响应于所述数据处理任务的数据信息请求,将所述映射关系以及分配给所述数据处理任务的所述任务标识发送给所述数据处理任务。
进一步地,生成多个任务标识,并建立所述多个任务标识与所述目标分区中数据之间的映射关系,还包括:
将所述映射关系发送给所述数据产生端。
进一步地,将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区,包括:
在所述数据分区的数据量大于或等于所述第一预设阈值时,确定在下一阶段对所述数据分区中的数据所要执行的数据处理类型;
在所述数据处理类型满足预设条件时,将所述数据分区确定为所述目标分区。
进一步地,所述预设条件包括所述数据处理类型为无需对同一键值的全量数据进行数据处理的类型。
进一步地,在所述数据处理类型满足预设条件时,将所述数据分区确定为所述目标分区,包括:
在所述数据处理类型为数据的分类处理时,将所述数据分区确定为所述目标分区。
第二方面,本公开实施例中提供了一种数据处理方法,包括:
将一个或多个数据产生任务产生的数据进行划分,得到多个数据分区;
统计划分后每个所述数据分区的数据量;
将所述数据分区的数据量提供给数据管理端。
进一步地,将所述数据分区的数据量提供给数据管理端,包括:
存储所述数据分区的数据量;
响应于所述数据管理端的请求,将所述数据分区的数据量发送给所述数据管理端。
进一步地,所述方法还包括:
接收所述数据管理端发送的映射关系;所述映射关系包括目标分区中的数据与任务标识之间的对应关系;其中,所述映射关系中针对同一所述目标分区中的数据包括多个不同的所述任务标识。
进一步地,所述方法还包括:
接收数据处理任务的数据读取请求;其中,所述数据读取请求包括所要读取的所述目标分区中数据对应的所述任务标识;
根据所述映射关系将所述目标分区中对应于所述任务标识的数据的读取信息发送给所述数据处理任务。
第三方面,本公开实施例中提供了一种数据处理方法,包括:
接收数据管理端发送的数据读取信息;
向数据产生端发送数据读取请求;其中,所述数据读取请求包括所述数据读取信息;所述数据读取信息包括所要读取的目标分区中的数据对应的任务标识;
接收所述数据产生端发送的所要读取的目标分区中的数据对应的任务标识的数据信息;
根据所述数据信息获取所要读取的数据。
第四方面,本公开实施例中提供了一种数据处理方法,包括:
数据产生端将一个或多个数据产生任务在数据写阶段产生的数据进行划分,并确定划分后对应于不同数据处理任务的数据分区的数据量;其中,所述数据分区的数据量为对应于一个所述数据处理任务的所有数据量;
所述数据产生端将所述数据分区的数据量提供给数据管理端;
所述数据管理端将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区,并生成多个任务标识,以及建立所述多个任务标识与所述目标分区中数据之间的映射关系;其中,所述映射关系中每条数据对应一个任务标识,一个任务标识对应一条数据或者多条数据;
所述数据管理端将多个所述任务标识分别分配给不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据。
进一步地,生成多个任务标识,以及建立所述多个任务标识与所述目标分区中数据之间的映射关系,包括:
所述数据管理端根据所述目标分区的所述数据量确定处理所述目标分区中的数据所需要的所述数据处理任务的目标数量,以及根据所述目标数量生成多个所述任务标识,一个所述数据处理任务对应一个所述任务标识。
进一步地,所述数据管理端将多个所述任务标识分别分配给不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据,包括:
所述数据管理端针对所述目标分区,启动目标数量个所述数据处理任务,并响应于所述数据处理任务的数据读取请求,将所述映射关系以及分配给所述数据处理任务的所述任务标识发送给所述数据处理任务。
进一步地,所述数据管理端将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区,包括:
所述数据管理端在所述数据分区的数据量大于或等于所述第一预设阈值时,确定在下一阶段对所述数据分区中的数据所要执行的数据处理类型,在所述数据处理类型满足预设条件时,将所述数据分区确定为所述目标分区。
进一步地,所述预设条件包括所述数据处理类型为无需对同一键值的全量数据进行数据处理的类型。
进一步地,在所述数据处理类型满足预设条件时,将所述数据分区确定为所述目标分区,包括:
所述数据管理端在所述数据处理类型为数据的分类处理和/或数量统计类型时,将所述数据分区确定为所述目标分区。
进一步地,所述数据产生端将所述数据分区的数据量提供给数据管理端,包括:
所述数据产生端存储所述数据分区的数据量,并响应于所述数据管理端的请求,将所述数据分区的数据量发送给所述数据管理端。
进一步地,生成多个任务标识,以及建立所述多个任务标识与所述目标分区中数据之间的映射关系,还包括:
所述数据管理端将所述映射关系发送给所述数据产生端。
进一步地,所述方法还包括:
所述数据管理端向所述数据读取任务发送数据读取信息;其中,所述数据读取信息包括所要读取的目标分区中的数据对应的任务标识;
所述数据处理任务接收所述数据管理端发送的所述数据读取信息,并向所述数据产生端发送数据读取请求;其中,所述数据读取请求包括所述数据读取信息;
所述数据产生端接收所述数据处理任务的数据读取请求,并根据所述映射关系将所述目标分区中对应于所述任务标识的数据的读取信息发送给所述数据处理任务;其中,所述数据读取请求包括所要读取的所述目标分区中数据对应的所述任务标识。
第五方面,本公开实施例中提供了一种数据处理装置,包括:
第一确定模块,被配置为确定数据产生端在数据写阶段产生的数据分区中的数据量;
第二确定模块,被配置为将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区;
生成模块,被配置为生成多个任务标识,并建立所述多个任务标识与所述目标分区中数据之间的映射关系;其中,所述映射关系中每条数据对应一个任务标识,一个任务标识对应一条数据或者多条数据;
分配模块,被配置为将多个所述任务标识分别分配给不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据。
第六方面,本公开实施例中提供了一种数据处理装置,包括:
划分模块,被配置为将一个或多个数据产生任务产生的数据进行划分,得到多个数据分区;
统计模块,被配置为统计划分后每个所述数据分区的数据量;
提供模块,被配置为将所述数据分区的数据量提供给数据管理端。
第七方面,本公开实施例中提供了一种数据处理装置,包括:
第一接收模块,被配置为接收数据管理端发送的数据读取信息;
发送模块,被配置为向数据产生端发送数据读取请求;其中,所述数据读取请求包括所述数据读取信息;所述数据读取信息包括所要读取的目标分区中的数据对应的任务标识;
第二接收模块,被配置为接收所述数据产生端发送的所要读取的目标分区中的数据对应的任务标识的数据信息;
获取模块,被配置为根据所述数据信息获取所要读取的数据。
所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一个可能的设计中,上述装置的结构中包括存储器和处理器,所述存储器用于存储一条或多条支持上述装置执行上述对应方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。上述装置还可以包括通信接口,用于上述装置与其他设备或通信网络通信。
第八方面,本公开实施例中提供了一种数据处理系统,包括:数据产生端、数据管理端和数据处理端;
所述数据产生端将一个或多个数据产生任务在数据写阶段产生的数据进行划分,并确定划分后对应于不同数据处理任务的数据分区的数据量;其中,所述数据分区的数据量为对应于一个所述数据处理任务的所有数据量;
所述数据产生端将所述数据分区的数据量提供给所述数据管理端;
所述数据管理端将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区,并生成多个任务标识,以及建立所述多个任务标识与所述目标分区中数据之间的映射关系;其中,所述映射关系中每条数据对应一个任务标识,一个任务标识对应一条数据或者多条数据;
所述数据管理端将多个所述任务标识分别分配给运行在所述数据处理端的不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据。
第九方面,本公开实施例提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条支持上述任一装置执行上述对应方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。上述任一装置还可以包括通信接口,用于与其他设备或通信网络通信。
第十方面,本公开实施例提供了一种计算机可读存储介质,用于存储上述任一装置所用的计算机指令,其包含用于执行上述任一方法所涉及的计算机指令。
第十一方面,本公开实施例提供了一种计算机程序产品,其包含计算机指令,该计算机指令被处理器执行时用于实现上述任一方面所述方法的步骤。
本公开实施例提供的技术方案可包括以下有益效果:
本公开实施例提出的上述技术方案适用于大数据计算处理流程中的 shuffle阶段,Shuffle阶段可以进一步划分为Shuffle write阶段和Shuffle read阶段。在shufflewrite阶段,数据产生端产生数据后,将产生的数据进行分区得到数据分区,数据产生端还可以统计所产生的各个数据分区中的数据量,并记录每个数据分区中的数据量;数据管理端可以通过数据产生端获取每个数据分区中的数据量,并在确定存在数据量大于或等于第一预设阈值的数据分区时,将该数据分区确定为目标分区。之后数据管理端可以在数据处理端启动多个数据处理任务,对数据产生端的数据进行处理。数据管理端针对目标分区可以启动多个并行执行的数据处理任务,以便该多个数据处理任务能够并行对一个目标分区中的数据进行并行处理。数据管理端可以基于目标分区中的数量确定所要启动的数据处理任务的数量,并根据针对目标分区所要启动的数据处理任务的数量生成任务标识,每个数据处理任务对应生成一个任务标识。数据管理端还可以建立目标分区中每条数据与任务标识之间的映射关系,例如可以通过将目标分区中的数据按照任务标识的数量进行分组,每个分组中的数据被映射至同一个任务标识。同时,所生成的任务标识还可以分配给所启动的多个数据处理任务,不同的数据处理任务分配不同的任务标识。数据管理端还可以将上述映射关系发送给数据产生端,以便每个数据处理任务在启动之后根据分配给自身的任务标识从数据产生端的目标分区中拉取所对应的数据。通过这种方式,针对数据产生端中某个数据量较大的目标分区,可以通过启动多个数据处理任务并行对该目标分区中的数据进行处理的方式,解决Shuffle阶段由于某个数据分区中发生数据倾斜而导致对应的大数据处理作业效率低下的问题,提升了大数据处理作业的处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开实施例。
附图说明
结合附图,通过以下非限制性实施方式的详细描述,本公开实施例的其它特征、目的和优点将变得更加明显。在附图中:
图1示出根据本公开一实施方式的数据处理方法的流程图;
图2示出根据本公开另一实施方式的数据处理方法的流程图;
图3示出根据本公开另一实施方式的数据处理方法的流程图;
图4示出根据本公开另一实施方式的数据处理方法的流程图;
图5示出根据本公开一实施方式的数据处理方法的应用场景示意图;
图6示出根据本公开一实施方式的数据处理装置的结构框图;
图7示出根据本公开一实施方式的数据处理装置的结构框图;
图8示出根据本公开一实施方式的数据处理装置的结构框图;
图9示出根据本公开一实施方式的数据处理系统的结构框图;
图10是适于用来实现根据本公开一实施方式的数据处理方法的计算机系统的结构示意图。
具体实施方式
下文中,将参考附图详细描述本公开实施例的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
在本公开实施例中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开实施例。
本公开实施例提供的技术方案适用于大数据计算处理流程中的 shuffle阶段,Shuffle阶段可以进一步划分为Shuffle write阶段和Shuffle read阶段。在shufflewrite阶段,数据产生端产生数据后,将产生的数据进行分区得到数据分区,数据产生端还可以统计所产生的各个数据分区中的数据量,并记录每个数据分区中的数据量;数据管理端可以通过数据产生端获取每个数据分区中的数据量,并在确定存在数据量大于或等于第一预设阈值的数据分区时,将该数据分区确定为目标分区。之后数据管理端可以在数据处理端启动多个数据处理任务,对数据产生端的数据进行处理。数据管理端针对目标分区可以启动多个并行执行的数据处理任务,以便该多个数据处理任务能够并行对一个目标分区中的数据进行并行处理。数据管理端可以基于目标分区中的数量确定所要启动的数据处理任务的数量,并根据针对目标分区所要启动的数据处理任务的数量生成任务标识,每个数据处理任务对应生成一个任务标识。数据管理端还可以建立目标分区中每条数据与任务标识之间的映射关系,例如可以通过将目标分区中的数据按照任务标识的数量进行分组,每个分组中的数据被映射至同一个任务标识。同时,所生成的任务标识还可以分配给所启动的多个数据处理任务,不同的数据处理任务分配不同的任务标识。数据管理端还可以将上述映射关系发送给数据产生端,以便每个数据处理任务在启动之后根据分配给自身的任务标识从数据产生端的目标分区中拉取所对应的数据。通过这种方式,针对数据产生端中某个数据量较大的目标分区,可以通过启动多个数据处理任务并行对该目标分区中的数据进行处理的方式,解决Shuffle阶段由于某个数据分区中发生数据倾斜而导致对应的大数据处理作业效率低下的问题,提升了大数据处理作业的处理效率。
图1示出根据本公开一实施方式的数据处理方法的流程图,如图1所示,所述数据处理方法包括以下步骤S101-S104:
在步骤S101中,确定数据产生端在数据写阶段产生的数据分区中的数据量;
在步骤S102中,将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区;
在步骤S103中,生成多个任务标识,并建立所述多个任务标识与所述目标分区中数据之间的映射关系;其中,所述映射关系中每条数据对应一个任务标识,一个任务标识对应一条数据或者多条数据;
在步骤S104中,将多个所述任务标识分别分配给不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据。
上文提及,Spark提出的分布式回弹数据集(Resilient Distributed Dataset,RDD)使得大数据的计算过程最大可能的在内存中进行。在执行逻辑上, Spark按照用户程序的逻辑从前向后生成RDD,每个RDD都有自己的依赖。当用户的程序需要最终的输出结果时,Spark就会从最后一个RDD递归向前寻找,并且按照其中存在的Shuffle Dependency来划分Stage,而 Stage之间的数据交互需要Shuffle来完成。在划分完Stage之后,Spark就会从前向后提交Stage,先提交没有缺失依赖的Stage,依次向后。这种调度逻辑使得数据自动流向需要计算的位置,并且让计算中间结果最大可能的保存在内存中。
而为了保证Stage之间的分割和本身框架的容错性,在划分每个阶段的ShuffleDependency时,Spark会将前驱Stage产生的中间结果存储到磁盘中,然后开始分配下一个Stage的任务,之后再由Stage的数据读取任务去远程读取磁盘上的数据,然后进行计算。
但是,在进行shuffle的时候,必须将在前驱Stage的各个节点上产生的相同Key数据拉取到下一Stage的某个节点上的同一个task来进行处理。如果某个key对应的数据量特别大的话,则会发生数据倾斜。比如大部分key对应10条数据,但个别key却对应了100万条数据,那么大部分task只会分配到10条数据,而个别task可能会分配100万条数据。整个spark作业的运行进度是由运行时间最长的那个task决定的。因此出现数据倾斜的时候,spark作业看起来会运行得非常缓慢,甚至可能因为某个 task处理的数据量过大而导致内存溢出。
考虑到上述问题,在该实施方式中,提出一种数据处理方法,该方法适用于大数据计算处理流程中的shuffle阶段,Shuffle阶段可以进一步划分为Shuffle write阶段和Shuffle read阶段。在shuffle write阶段,数据产生端产生数据后,将产生的数据进行分区得到数据分区,数据产生端还可以统计所产生的各个数据分区中的数据量,并记录每个数据分区中的数据量;数据管理端可以通过数据产生端获取每个数据分区中的数据量,并在确定存在数据量大于或等于第一预设阈值的数据分区时,将该数据分区确定为目标分区。之后数据管理端可以在数据处理端启动多个数据处理任务,对数据产生端的数据进行处理。数据管理端针对目标分区可以启动多个并行执行的数据处理任务,以便该多个数据处理任务能够并行对一个目标分区中的数据进行并行处理。数据管理端可以基于目标分区中的数量确定所要启动的数据处理任务的数量,并根据针对目标分区所要启动的数据处理任务的数量生成任务标识,每个数据处理任务对应生成一个任务标识。数据管理端还可以建立目标分区中每条数据与任务标识之间的映射关系,例如可以通过将目标分区中的数据按照任务标识的数量进行分组,每个分组中的数据被映射至同一个任务标识。同时,所生成的任务标识还可以分配给所启动的多个数据处理任务,不同的数据处理任务分配不同的任务标识。数据管理端还可以将上述映射关系发送给数据产生端,以便每个数据处理任务在启动之后根据分配给自身的任务标识从数据产生端的目标分区中拉取所对应的数据。通过这种方式,针对数据产生端中某个数据量较大的目标分区,可以通过启动多个数据处理任务并行对该目标分区中的数据进行处理的方式,解决Shuffle阶段由于某个数据分区中发生数据倾斜而导致对应的大数据处理作业效率低下的问题,提升了大数据处理作业的处理效率。
在本公开一实施方式中,该数据处理方法可适用于大数据处理平台中的数据管理端。
在本公开一实施方式中,数据产生端可以是运行Map任务的Map节点,在shufflewrite阶段也即数据写阶段Map任务在执行过程中产生的中间数据,会被写入内存中,内存溢出之后会将数据写入磁盘文件中。Map 任务所产生的数据为(key,value)数据对,在执行同一Spark作业的所有 Map任务均执行完成之后,数据产生端可以将所有磁盘文件和内存中的数据进行分区,通常情况下会按照key进行分区,同一个key对应的所有数据会被分到同一数据分区或者多个数据分区,而不同key对应的数据会被分到不同的数据分区。通过这种方式,在shuffle read阶段也即数据读取阶段,可以将同一key对应的数据分区中的所有数据都读取到同一个数据处理任务,使得该数据处理任务能够针对同一个key对应的数据进行处理,而不同key对应的数据则由不同的数据处理任务进行处理。
在本公开一实施方式中,数据管理端可以是大数据处理平台中用于管理数据产生端和数据读取端的节点,例如可以是资源管理器。数据管理端可以用于对数据产生端和数据读取端进行管理。
在本公开一实施方式中,数据产生端在对数据进行分区之后,可以针对每个数据分区统计数据量,并记录统计结果。
在本公开一实施方式中,数据管理端可以针对数据产生端所产生的数据分区的数据量确定目标分区,也即将数据量大于或等于第一预设阈值的数据分区确定为目标分区。第一预设阈值可以根据实际需要设定,在一些实施例中,第一预设阈值可以根据以往的经验确定每个数据分区的平均数据量,并根据该平均数据量确定第一预设阈值,比如将第一预设阈值设置为大于平均数据量的一个数值。在另一些实施例中,可以在确定了数据产生端所产生的所有数据分区的数据量之后,根据各数据分区的数据量的平均值设置第一预设阈值。
在本公开一实施方式中,如果数据产生端产生的数据分区中存在目标分区,则数据管理端针对目标分区生成多个任务标识,该任务标识可以用于唯一标识用于处理目标分区中数据的数据处理任务。需要说明的是,针对每个目标分区可以生成多个任务标识。任务标识的数量可以基于目标分区中的数据量来确定,且任务标识的数量与用于并行处理目标分区中的数据的数据处理任务的数量对应一致。每个数据处理任务对应一个任务标识。
在本公开一实施方式中,数据管理端针对目标分区生成多个任务标识之后,可以建立任务标识与数据之间的映射关系。例如可以将目标分区中的数据平均分配给多个数据处理任务,因此建立该映射关系时,也可以按照平均分配的形式将数据划分成多组,每组分配一个不同的任务标识。
在本公开一实施方式中,数据管理端针对目标分区中的数据启动多个不同的数据处理任务,并且将任务标识分配给该多个不同的数据处理任务,每个数据处理任务对应一个不同的任务标识。需要说明的是,数据处理任务在数据处理端执行,数据管理端通过向数据处理端发送命令的方式启动针对目标分区的多个数据处理任务。还需要说明的是,在数据处理端还会针对其他目标分区或者非目标分区启动数据处理任务,在大数据处理平台中,通常情况下一个非目标分区对应一个数据处理任务,而目标分区则对应多个数据处理任务。
在本公开一实施方式中,数据处理任务启动之后,在Shuffle read阶段也即数据读阶段,由数据处理任务从数据产生端的数据分区中拉取对应的数据。针对目标分区所启动的多个数据处理任务,则会基于数据管理端为其分配的任务标识从目标分区中拉取具有上述映射关系的数据,而针对非目标分区的数据处理任务,则可以直接拉取所对应的非目标分区中的所有数据。因此,本公开实施例中,针对目标分区,数据处理任务需要根据任务标识以及key从目标分区中拉取任务,并且多个数据处理任务从同一个目标分区拉取数据,而针对非目标分区,数据处理任务直接根据key将属于该非目标分区的所有数据拉取过去,并且一个非目标分区的数据仅被一个数据处理任务拉取。
在本公开一实施方式中,步骤S101,即确定数据产生端在数据写阶段产生的数据分区中的数据量的步骤,可以进一步包括以下步骤:
从所述数据产生端获取在数据写阶段所产生的所述数据分区的数据量。
该可选的实现方式中,数据产生端针对所产生的数据分区进行数据量的统计,并且针对各个分区所统计出的数据量可以提供给数据管理端,以便数据管理端根据从数据产生端获取的数据分区中的数据量来确定目标分区。
在本公开一实施方式中,步骤S103,即生成多个任务标识,并建立所述多个任务标识与所述目标分区中数据之间的映射关系的步骤,可以进一步包括以下步骤:
根据所述目标分区的所述数据量确定处理所述目标分区中的数据所需要的所述数据处理任务的目标数量;
根据所述目标数量生成多个所述任务标识,一个所述数据处理任务对应一个所述任务标识。
该可选的实现方式中,在确定存在目标分区的情况下,针对目标分区,可以根据目标分区中的数据量确定对目标分区中的数据进行处理所需要的数据处理任务的目标数量。在目标分区中的数据量较大时,可以多开启几个数据处理任务,而在目标分区中的数据量较小时,可以少开启几个数据处理任务。目标数量的确定原则可以基于使得无论是处理目标分区中数据的数据处理任务,还是处理非目标分区中数据的数据处理任务,其处理数据量的大小较为均衡为准,使得各数据处理任务能够在大致相同的时间内处理完所分配到的数据。在确定了目标数量之后,可以为目标分区生成目标数量个任务标识,每个任务标识对应一个数据处理任务。
在本公开一实施方式中,步骤S104,即将多个所述任务标识分别分配给不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据的步骤,可以进一步包括以下步骤:
针对所述目标分区,启动目标数量个所述数据处理任务;
响应于所述数据处理任务的数据信息请求,将所述映射关系以及分配给所述数据处理任务的所述任务标识发送给所述数据处理任务。
该可选的实现方式中,在确定了目标分区之后,数据管理端可以在数据处理端启动目标数量个数据处理任务,该目标数量个数据处理任务用于对目标分区中的数据进行处理,并且每个数据处理任务仅针对与所分配的任务标识具有对应关系的数据。数据处理任务在被启动之后,可以根据数据管理端所分配的任务标识从数据产生端读取数据,因此,数据处理任务在启动之后首先向数据管理端发送数据信息请求,数据管理端将分配给该数据处理任务的任务标识和映射关系发送给该数据处理任务,该数据处理任务则可以根据映射关系和任务标识确定需要从数据产生端拉取的数据的key,进而可以根据key从数据产生端拉取所需的数据。
在本公开一实施方式中,步骤S103,即生成多个任务标识,并建立所述多个任务标识与所述目标分区中数据之间的映射关系的步骤,可以进一步包括以下步骤:
将所述映射关系发送给所述数据产生端。
该可选的实现方式中,数据管理端还可以将映射关系发送给数据产生端。数据产生端在接收到数据处理任务的数据读取请求之后,可以根据映射关系以及分配给该数据处理任务的任务标识将对应的数据发送给数据处理任务。
在本公开一实施方式中,步骤S102,即将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区的步骤,可以进一步包括以下步骤:
在所述数据分区的数据量大于或等于所述第一预设阈值时,确定在下一阶段对所述数据分区中的数据所要执行的数据处理类型;
在所述数据处理类型满足预设条件时,将所述数据分区确定为所述目标分区。
该可选的实现方式中,上文提及,在Spark中shuffle阶段可以用于划分stage,也即每个shuffle阶段位于两个stage中间,shuffle阶段的前驱 stage包括数据产生端,而shuffle阶段的后继stage包括数据处理端,前驱 stage的数据产生端所产生的数据通过shuffle阶段提供给后续stage使用。在一些应用场景下,如果后继stage用于对从前驱stage获取的数据进行排序、汇总等操作时,由于这类操作中针对同一key的数据必须由同一个数据处理任务来完成,因此不适用于本公开实施例提出的针对目标分区使用多个数据处理任务来处理的方式。因此,在确定目标分区时,数据管理端除了判断目标分区的数据量是否大于或等于第一预设阈值外,还可以判断后继stage也即下一阶段对数据分区中的数据所要执行的数据处理类型,在该数据处理类型满足预设条件,例如不属于数据排序、汇总等操作类型时,可以将该数据分区确定为目标分区。而相反地,如果下一阶段对数据分区中的数据所要执行的是类似数据排序、汇总等处理,则即使该数据分区中的数据量大于或等于第一预设阈值,也不能将该数据分区确定为目标分区,该数据分区可以按照非目标分区的方式进行处理。
在本公开一实施方式中,所述预设条件包括所述数据处理类型为无需对同一键值的全量数据进行数据处理的类型。该可选的实现方式中,对同一键值的全量数据进行数据处理的类型可以认为是针对同一key的所有数据需要进行处理的数据类型,例如排序、汇总等。
在本公开一实施方式中,在所述数据处理类型满足预设条件时,将所述数据分区确定为所述目标分区的步骤,可以进一步包括以下步骤:
在所述数据处理类型为数据的分类处理和/或数量统计类型时,将所述数据分区确定为所述目标分区。
该可选的实现方式中,分类处理类型可以是对数据分区中的数据进行分类处理的数据类型,其不需要针对同一key的全量数据进行处理,因此可以将同一key对应的数据分配至多个不同的数据处理任务分别进行处理。因此在下一阶段需要对数据分区中的数据进行分类处理时,可以将该数据分区确定为目标分区。
图2示出根据本公开另一实施方式的数据处理方法的流程图,如图2 所示,所述数据处理方法包括以下步骤S201-S203:
在步骤S201中,将一个或多个数据产生任务产生的数据进行划分,得到多个数据分区;
在步骤S202中,统计划分后每个所述数据分区的数据量;
在步骤S203中,将所述数据分区的数据量提供给数据管理端。
上文提及,Spark提出的分布式回弹数据集(Resilient Distributed Dataset,RDD)使得大数据的计算过程最大可能的在内存中进行。在执行逻辑上, Spark按照用户程序的逻辑从前向后生成RDD,每个RDD都会有自己的依赖。当用户的程序需要最终的输出结果时,Spark就会从最后一个RDD 递归向前寻找,并且按照其中存在的Shuffle Dependency来划分Stage,而 Stage之间的数据交互需要Shuffle来完成。在划分完Stage之后,Spark就会从前向后提交Stage,先提交没有缺失依赖的Stage,依次向后。这种调度逻辑使得数据自动流向需要计算的位置,并且让计算中间结果最大可能的保存在内存中。
而为了保证Stage之间的分割和本身框架的容错性,在划分每个阶段的ShuffleDependency时,Spark会将前驱Stage产生的中间结果存储到磁盘中,然后开始分配下一个Stage的任务,之后再由Stage的数据读取任务去远程读取磁盘上的数据,然后进行计算。
但是,在进行shuffle的时候,必须将在前驱Stage的各个节点上产生的相同Key数据拉取到下一Stage的某个节点上的一个task来进行处理。如果某个key对应的数据量特别大的话,则会发生数据倾斜。比如大部分 key对应10条数据,但个别key却对应了100万条数据,那么大部分task 会只分配到10条数据,而个别task可能会分配了100万数据。整个spark 作业的运行进度是由运行时间最长的那个task决定的。因此出现数据倾斜的时候,spark作业看起来会运行得非常缓慢,甚至可能因为某个task处理的数据量过大导致内存溢出。
考虑到上述问题,在该实施方式中,提出一种数据处理方法,该方法适用于大数据计算处理流程中的shuffle阶段,Shuffle阶段可以进一步划分为Shuffle write阶段和Shuffle read阶段。在shuffle write阶段,数据产生端产生数据后,将产生的数据进行分区得到数据分区,数据产生端还可以统计所产生的各个数据分区中的数据量,并记录每个数据分区中的数据量;数据管理端可以通过数据产生端获取每个数据分区中的数据量,并在确定存在数据量大于或等于第一预设阈值的数据分区时,将该数据分区确定为目标分区。之后数据管理端可以在数据处理端启动多个数据处理任务,对数据产生端的数据进行处理。数据管理端针对目标分区可以启动多个并行执行的数据处理任务,以便该多个数据处理任务能够并行对一个目标分区中的数据进行并行处理。数据管理端可以基于目标分区中的数量确定所要启动的数据处理任务的数量,并根据针对目标分区所要启动的数据处理任务的数量生成任务标识,每个数据处理任务对应生成一个任务标识。数据管理端还可以建立目标分区中每条数据与任务标识之间的映射关系,例如可以通过将目标分区中的数据按照任务标识的数量进行分组,每个分组中的数据被映射至同一个任务标识。同时,所生成的任务标识还可以分配给所启动的多个数据处理任务,不同的数据处理任务分配不同的任务标识。数据管理端还可以将上述映射关系发送给数据产生端,以便每个数据处理任务在启动之后根据分配给自身的任务标识从数据产生端的目标分区中拉取所对应的数据。通过这种方式,针对数据产生端中某个数据量较大的目标分区,可以通过启动多个数据处理任务并行对该目标分区中的数据进行处理的方式,解决Shuffle阶段由于某个数据分区中发生数据倾斜而导致对应的大数据处理作业效率低下的问题,提升了大数据处理作业的处理效率。
在本公开一实施方式中,该数据处理方法可适用于大数据处理平台中的数据产生端。
在本公开一实施方式中,数据产生端可以是运行Map任务的Map端,在shufflewrite阶段也即数据写阶段Map任务在执行过程中产生的中间数据,会被写入内存中,内存溢出之后会将数据写入磁盘文件中。Map任务所产生的数据为(key,value)数据对,在执行同一Spark作业的所有Map 任务均执行完成之后,数据产生端可以将所有磁盘文件和内存中的数据进行分区,通常情况下会按照key进行分区,同一个key对应的所有数据会被分到同一数据分区或者多个数据分区,而不同key对应的数据会被分到不同的数据分区。通过这种方式,在shuffle read阶段也即数据读取阶段,可以将同一key对应的数据分区中的所有数据都读取到同一个数据处理任务,使得该数据处理任务能够针对同一个key对应的数据进行处理,而不同key对应的数据则由不同的数据处理任务进行处理。
在本公开一实施方式中,数据产生端上可以运行多个数据产生任务,也即Map任务,Map任务所产生的数据被存储在内存和磁盘文件中,在 Map端执行的所有Map任务均完成之后,Map端会将Map任务存储在一个或多个内存和磁盘文件中的数据进行划分。在Spark系统中,Map端可以根据HashShuffleManager引擎的运行机制对数据进行划分,例如可以对数据中的key进行哈希运算之后划分成不同的数据分区,每个数据分区中的数据的对应的都是同一个key,而不同数据分区对应的key不同。
在本公开一实施方式中,数据产生端在将数据划分成不同的数据分区之后,针对每个数据分区统计数据分区中的数据量。
在本公开一实施方式中,数据产生端还将每个数据分区的数据量提供给数据管理端。在一些实施例中,数据产生端可以在统计得到数据分区的数据量之后发送给数据管理端。在另一些实施例中,数据产生端可以将统计得到的数据分区的数据量记录下来,数据管理端在需要时可以从数据产生端请求获得该数据量。
在本公开一实施方式中,所述方法还包括以下步骤:
接收所述数据管理端发送的映射关系;所述映射关系包括目标分区中的数据与任务标识之间的对应关系;其中,所述映射关系中针对同一所述目标分区中的数据包括多个不同的所述任务标识。
该可选的实现方式中,数据管理端为每个数据处理任务生成任务标识后,建立目标分区中数据与任务标识之间的映射关系。数据管理端还将该映射关系发送给数据产生端,数据产生端可以将该映射关系存储下来,在数据处理任务请求获取数据时,可以根据该映射关系以及数据处理任务的任务标识将对应的数据发送给数据处理任务。
在本公开一实施方式中,所述方法还包括以下步骤:
接收数据处理任务的数据读取请求;其中,所述数据读取请求包括所要读取的所述目标分区中数据对应的所述任务标识;
根据所述映射关系将所述目标分区中对应于所述任务标识的数据的读取信息发送给所述数据处理任务。
该可选的实现方式中,数据产生端可以接收数据管理端发送的映射关系并存储,数据处理任务可以直接向数据产生端请求读取数据,并在数据读取请求中携带数据管理端分配给其的任务标识。数据产生端接收到数据读取请求之后,可以根据任务标识以及映射关系,将对应数据发送给数据处理任务。
图2所示及相关实施方式中涉及的技术术语和技术特征与图1所示及相关实施方式中提及的技术术语和技术特征相同或相似,对于图2所示及相关实施方式中涉及的技术术语和技术特征的解释和说明可参考上述对于图1所示及相关实施方式的解释的说明,此处不再赘述。
图3示出根据本公开另一实施方式的数据处理方法的流程图,如图3 所示,所述数据处理方法包括以下步骤S301-S304:
在步骤S301中,接收数据管理端发送的数据读取信息;
在步骤S302中,向数据产生端发送数据读取请求;其中,所述数据读取请求包括所述数据读取信息;所述数据读取信息包括所要读取的目标分区中的数据对应的任务标识;
在步骤S303中,接收所述数据产生端发送的所要读取的目标分区中的数据对应的任务标识的数据信息;
在步骤S304中,根据所述数据信息获取所要读取的数据。
上文提及,Spark提出的分布式回弹数据集(Resilient Distributed Dataset,RDD)使得大数据的计算过程最大可能的在内存中进行。在执行逻辑上, Spark按照用户程序的逻辑从前向后生成RDD,每个RDD都会有自己的依赖。当用户的程序需要最终的输出结果时,Spark就会从最后一个RDD 递归向前寻找,并且按照其中存在的Shuffle Dependency来划分Stage,而 Stage之间的数据交互需要Shuffle来完成。在划分完Stage之后,Spark就会从前向后提交Stage,先提交没有缺失依赖的Stage,依次向后。这种调度逻辑使得数据自动流向需要计算的位置,并且让计算中间结果最大可能的保存在内存中。
而为了保证Stage之间的分割和本身框架的容错性,在划分每个阶段的ShuffleDependency时,Spark会将前驱Stage产生的中间结果存储到磁盘中,然后开始分配下一个Stage的任务,之后再由Stage的数据读取任务去远程读取磁盘上的数据,然后进行计算。
但是,在进行shuffle的时候,必须将在前驱Stage的各个节点上产生的相同Key数据拉取到下一Stage的某个节点上的一个task来进行处理。如果某个key对应的数据量特别大的话,则会发生数据倾斜。比如大部分 key对应10条数据,但个别key却对应了100万条数据,那么大部分task 会只分配到10条数据,而个别task可能会分配了100万数据。整个spark 作业的运行进度是由运行时间最长的那个task决定的。因此出现数据倾斜的时候,spark作业看起来会运行得非常缓慢,甚至可能因为某个task处理的数据量过大导致内存溢出。
考虑到上述问题,在该实施方式中,提出一种数据处理方法,该方法适用于大数据计算处理流程中的shuffle阶段,Shuffle阶段可以进一步划分为Shuffle write阶段和Shuffle read阶段。在shuffle write阶段,数据产生端产生数据后,将产生的数据进行分区得到数据分区,数据产生端还可以统计所产生的各个数据分区中的数据量,并记录每个数据分区中的数据量;数据管理端可以通过数据产生端获取每个数据分区中的数据量,并在确定存在数据量大于或等于第一预设阈值的数据分区时,将该数据分区确定为目标分区。之后数据管理端可以在数据处理端启动多个数据处理任务,对数据产生端的数据进行处理。数据管理端针对目标分区可以启动多个并行执行的数据处理任务,以便该多个数据处理任务能够并行对一个目标分区中的数据进行并行处理。数据管理端可以基于目标分区中的数量确定所要启动的数据处理任务的数量,并根据针对目标分区所要启动的数据处理任务的数量生成任务标识,每个数据处理任务对应生成一个任务标识。数据管理端还可以建立目标分区中每条数据与任务标识之间的映射关系,例如可以通过将目标分区中的数据按照任务标识的数量进行分组,每个分组中的数据被映射至同一个任务标识。同时,所生成的任务标识还可以分配给所启动的多个数据处理任务,不同的数据处理任务分配不同的任务标识。数据管理端还可以将上述映射关系发送给数据产生端,以便每个数据处理任务在启动之后根据分配给自身的任务标识从数据产生端的目标分区中拉取所对应的数据。通过这种方式,针对数据产生端中某个数据量较大的目标分区,可以通过启动多个数据处理任务并行对该目标分区中的数据进行处理的方式,解决Shuffle阶段由于某个数据分区中发生数据倾斜而导致对应的大数据处理作业效率低下的问题,提升了大数据处理作业的处理效率。
在本公开一实施方式中,该数据处理方法可适用于大数据处理平台中的数据处理端。
在本公开一实施方式中,数据处理端可以是运行Reduce任务也即数据处理任务的Reduce端,在shuffle read阶段也即数据读阶段Reduce任务从Map端的相应数据分区中拉取数据,并针对拉取的数据进行相应的处理。
在本公开一实施方式中,数据管理端可以针对一个目标分区在数据处理端启动多个数据处理任务,而针对非目标分区则启动一个数据处理任务。对应于目标分区的数据处理任务启动之后,可以从数据管理端获取数据读取信息,该数据读取信息中可以包括但不限于分配给该数据处理任务的任务标识以及目标分区的信息。例如,数据读取信息可以包括任务标识和键值key。数据处理任务将数据读取信息发送给数据产生端,以请求对应于任务标识和键值key的数据。数据产生端可以预先存储数据管理端发送的映射关系,并依据数处理任务发送的数据读取信息中的键值key确定对应的目标分区,进而再根据任务标识以及映射关系将该目标分区中对应于任务标识的数据提供给数据处理任务。
在本公开一实施方式中,数据产生端可以将数据处理任务所请求数据所在的目标分区中对应于该数据处理任务的任务标识的数据信息发送给数据处理任务。该数据信息可以包括但不限于数据的存储地址。数据产生任务可以根据数据信息获取对应的数据。
图3所示及相关实施方式中涉及的技术术语和技术特征与图1-图2所示及相关实施方式中提及的技术术语和技术特征相同或相似,对于图3所示及相关实施方式中涉及的技术术语和技术特征的解释和说明可参考上述对于图1-图2所示及相关实施方式的解释的说明,此处不再赘述。
图4示出根据本公开另一实施方式的数据处理方法的流程图,如图4 所示,所述数据处理方法包括以下步骤S401-S404:
在步骤S401中,数据产生端将一个或多个数据产生任务在数据写阶段产生的数据进行划分,并确定划分后对应于不同数据处理任务的数据分区的数据量;其中,所述数据分区的数据量为对应于一个所述数据处理任务的所有数据量;
在步骤S402中,所述数据产生端将所述数据分区的数据量提供给数据管理端;
在步骤S403中,所述数据管理端将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区,并生成多个任务标识,以及建立所述多个任务标识与所述目标分区中数据之间的映射关系;其中,所述映射关系中每条数据对应一个任务标识,一个任务标识对应一条数据或者多条数据;
在步骤S404中,所述数据管理端将多个所述任务标识分别分配给不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据。
上文提及,Spark提出的分布式回弹数据集(Resilient Distributed Dataset,RDD)使得大数据的计算过程最大可能的在内存中进行。在执行逻辑上, Spark按照用户程序的逻辑从前向后生成RDD,每个RDD都会有自己的依赖。当用户的程序需要最终的输出结果时,Spark就会从最后一个RDD 递归向前寻找,并且按照其中存在的Shuffle Dependency来划分Stage,而 Stage之间的数据交互需要Shuffle来完成。在划分完Stage之后,Spark就会从前向后提交Stage,先提交没有缺失依赖的Stage,依次向后。这种调度逻辑使得数据自动流向需要计算的位置,并且让计算中间结果最大可能的保存在内存中。
而为了保证Stage之间的分割和本身框架的容错性,在划分每个阶段的ShuffleDependency时,Spark会将前驱Stage产生的中间结果存储到磁盘中,然后开始分配下一个Stage的任务,之后再由Stage的数据读取任务去远程读取磁盘上的数据,然后进行计算。
但是,在进行shuffle的时候,必须将在前驱Stage的各个节点上产生的相同Key数据拉取到下一Stage的某个节点上的一个task来进行处理。如果某个key对应的数据量特别大的话,则会发生数据倾斜。比如大部分 key对应10条数据,但个别key却对应了100万条数据,那么大部分task 会只分配到10条数据,而个别task可能会分配了100万数据。整个spark 作业的运行进度是由运行时间最长的那个task决定的。因此出现数据倾斜的时候,spark作业看起来会运行得非常缓慢,甚至可能因为某个task处理的数据量过大导致内存溢出。
考虑到上述问题,在该实施方式中,提出一种数据处理方法,该方法适用于大数据计算处理流程中的shuffle阶段,Shuffle阶段可以进一步划分为Shuffle write阶段和Shuffle read阶段。在shuffle write阶段,数据产生端产生数据后,将产生的数据进行分区得到数据分区,数据产生端还可以统计所产生的各个数据分区中的数据量,并记录每个数据分区中的数据量;数据管理端可以通过数据产生端获取每个数据分区中的数据量,并在确定存在数据量大于或等于第一预设阈值的数据分区时,将该数据分区确定为目标分区。之后数据管理端可以在数据处理端启动多个数据处理任务,对数据产生端的数据进行处理。数据管理端针对目标分区可以启动多个并行执行的数据处理任务,以便该多个数据处理任务能够并行对一个目标分区中的数据进行并行处理。数据管理端可以基于目标分区中的数量确定所要启动的数据处理任务的数量,并根据针对目标分区所要启动的数据处理任务的数量生成任务标识,每个数据处理任务对应生成一个任务标识。数据管理端还可以建立目标分区中每条数据与任务标识之间的映射关系,例如可以通过将目标分区中的数据按照任务标识的数量进行分组,每个分组中的数据被映射至同一个任务标识。同时,所生成的任务标识还可以分配给所启动的多个数据处理任务,不同的数据处理任务分配不同的任务标识。数据管理端还可以将上述映射关系发送给数据产生端,以便每个数据处理任务在启动之后根据分配给自身的任务标识从数据产生端的目标分区中拉取所对应的数据。通过这种方式,针对数据产生端中某个数据量较大的目标分区,可以通过启动多个数据处理任务并行对该目标分区中的数据进行处理的方式,解决Shuffle阶段由于某个数据分区中发生数据倾斜而导致对应的大数据处理作业效率低下的问题,提升了大数据处理作业的处理效率。
在本公开一实施方式中,该数据处理方法可适用于大数据处理平台中数据产生端、数据处理端和数据管理端之间的数据处理。
在本公开一实施方式中,数据产生端的数据产生任务执行完成之后,将所产生的数据进行分区。在一些实施例中,可以按照数据的key进行分区,也即将同一key的数据划分为同一个数据分区。在一些场景下,某个或者某些key对应的数据可能会比较多,会远远多于其他key对应的数据,如果按照传统的方式,将同一key对应的数据分区分配给同一个数据处理任务进行处理,可能会存在一个问题,即某个或某些数据分区的数据量由于远远大于其他数据分区的数据量,进而导致其对应的数据处理任务的处理时间远远大于其他数据分区对应的数据处理任务的处理时间,因此会影响到整个作业在数据处理时间(这是因为作业的处理时间由最后执行完成的处理任务的处理时间为准)。
因此,本公开实施例中,数据产生端在将数据划分成多个数据分区之后,还会统计每个数据分区的数据量,并将每个分区的数据量提供给数据管理端。
数据管理端则根据每个数据分区的数据量确定该数据分区是否为目标分区,也即该数据分区的数据量是否大于或等于第一预设阈值,在该数据分区的数据量大于或等于第一预设阈值的情况下,该数据分区被确定为目标分区。
数据管理端还针对目标分区生成多个任务标识。该任务标识对应于分配给对应于该目标分区的数据处理任务。数据管理端根据目标分区的数据量可以启动多个并行执行的数据处理任务,该多个并行执行的数据处理任务共同处理同一目标分区的数据。通过这种方式,可以将数据量远远大于其他数据分区的目标分区的数据分配给多个数据处理任务,从而平衡各个数据处理任务的数据处理时间,最终加快整个作业在数据处理端的处理时间。
数据管理端产生多个任务标识之后,建立目标分区中每条数据与任务标识之间的映射关系,也即将目标分区中的数据通过分组的方式,将每组数据映射至一个任务标识,不同组数据映射不同的任务标识,使得对应于任务标识的数据处理任务处理具有映射关系的数据。通过这种方式,相当于将目标分区中的数据进行了进一步划分,划分后的数据分别分配给不同的数据处理任务进行处理。
数据管理端将任务标识分配给不同的数据处理任务之后,在数据读阶段,由数据处理任务从数据产生端获取与分配给其的任务标识具有映射关系的数据,并进行相应地处理。
图4所示及相关实施方式中涉及的技术术语和技术特征与图1-图3所示及相关实施方式中提及的技术术语和技术特征相同或相似,对于图4所示及相关实施方式中涉及的技术术语和技术特征的解释和说明可参考上述对于图1-图3所示及相关实施方式的解释的说明,此处不再赘述。
在本公开一实施方式中,生成多个任务标识,以及建立所述多个任务标识与所述目标分区中数据之间的映射关系的步骤,进一步包括以下步骤:
所述数据管理端根据所述目标分区的所述数据量确定处理所述目标分区中的数据所需要的所述数据处理任务的目标数量,以及根据所述目标数量生成多个所述任务标识,一个所述数据处理任务对应一个所述任务标识。
该可选的实现方式中,在确定存在目标分区的情况下,针对目标分区,可以根据目标分区中的数据量确定对目标分区中的数据进行处理所需要的数据处理任务的目标数量。在目标分区中的数据量较大时,可以多开启几个数据处理任务,而在目标分区中的数据量较小时,可以少开启几个数据处理任务。目标数量的确定的原则可以基于使得无论是处理目标分区中数据的数据处理任务,还是处理非目标分区中数据的数据处理任务,其处理数据量的大小较为均衡,使得各数据处理任务能够在大致相同的时间内处理完所分配到的数据。在确定了目标数量之后,可以为目标分区生成目标数量个任务标识,每个任务标识对应一个数据处理任务。
在本公开一实施方式中,所述数据管理端将多个所述任务标识分别分配给不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据的步骤,进一步包括以下步骤:
所述数据管理端针对所述目标分区,启动目标数量个所述数据处理任务,并响应于所述数据处理任务的数据读取请求,将所述映射关系以及分配给所述数据处理任务的所述任务标识发送给所述数据处理任务。
该可选的实现方式中,在确定了目标分区之后,数据管理端可以在数据处理端启动目标数量个数据处理任务,该目标数量个数据处理任务用于对目标分区中的数据进行处理,并且每个数据处理任务仅针对与所分配的任务标识具有对应关系的数据。数据处理任务在被启动之后,可以根据数据管理端所分配的任务标识从数据产生端读取数据,因此,数据处理任务在启动之后首先向数据管理端发送数据信息请求,数据管理端将分配给该数据处理任务的任务标识和映射关系发送给该数据处理任务,该数据处理任务则可以根据映射关系和任务标识确定需要从数据产生端拉取的数据的key,进而可以根据key从数据产生端拉取所需的数据。
在本公开一实施方式中,所述数据管理端将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区的步骤,进一步包括以下步骤:
所述数据管理端在所述数据分区的数据量大于或等于所述第一预设阈值时,确定在下一阶段对所述数据分区中的数据所要执行的数据处理类型,在所述数据处理类型满足预设条件时,将所述数据分区确定为所述目标分区。
该可选的实现方式中,上文提及,在Spark中shuffle阶段可以用于划分stage,也即每个shuffle阶段位于两个stage中间,shuffle阶段的前驱 stage包括数据产生端,而shuffle阶段的后继stage包括数据处理端,前驱 stage的数据产生端所产生的数据通过shuffle阶段提供给后续stage使用。在一些应用场景下,如果后继stage用于对从前驱stage获取的数据进行排序、汇总等操作时,由于这类操作中针对同一key的数据必须由同一个数据处理任务来完成,因此不适用于本公开实施例提出的针对目标分区使用多个数据处理任务来处理的方式。因此,在确定目标分区时,数据管理端除了判断目标分区的数据量是否大于或等于第一预设阈值外,还可以判断后继stage也即下一阶段对数据分区中的数据所要执行的数据处理类型,在该数据处理类型满足预设条件,例如不属于数据排序、汇总等操作类型时,可以将该数据分区确定为目标分区。而相反地,如果下一阶段对数据分区中的数据所要执行的是类似数据排序、汇总等处理,则即使该数据分区中的数据量大于或等于第一预设阈值,也不能将该数据分区确定为目标分区,该数据分区可以按照非目标分区的方式进行处理。
在本公开一实施方式中,所述预设条件包括所述数据处理类型为无需对同一键值的全量数据进行数据处理的类型。该可选的实现方式中,对同一键值的全量数据进行数据处理的类型可以认为是针对同一key的所有数据需要进行处理的数据类型,例如排序、汇总等。
在本公开一实施方式中,在所述数据处理类型满足预设条件时,将所述数据分区确定为所述目标分区的步骤,进一步包括以下步骤:
所述数据管理端在所述数据处理类型为数据的分类处理和/或数量统计类型时,将所述数据分区确定为所述目标分区。
该可选的实现方式中,分类处理类型可以是针对的分区中的数据进行分类的数据类型,其不需要针对同一key的全量数据进行处理,因此可以将同一key对应的数据分配至多个不同的数据处理任务分别进行处理。因此在下一阶段需要对数据分区中的数据进行分类处理时,可以将该数据分区确定为目标分区。
在本公开一实施方式中,所述数据产生端将所述数据分区的数据量提供给数据管理端的步骤,进一步包括以下步骤:
所述数据产生端存储所述数据分区的数据量,并响应于所述数据管理端的请求,将所述数据分区的数据量发送给所述数据管理端。
该可选的实现方式中,数据产生端还将每个数据分区的数据量提供给数据管理端。在一些实施例中,数据产生端可以在统计得到数据分区的数据量之后发送给数据管理端。在另一些实施例中,数据产生端可以将统计得到数据分区的数据量之后记录下来,数据管理端在需要时可以从数据产生端请求获得该数据量。
在本公开一实施方式中,生成多个任务标识,以及建立所述多个任务标识与所述目标分区中数据之间的映射关系的步骤,进一步还包括以下步骤:
所述数据管理端将所述映射关系发送给所述数据产生端。
该可选的实现方式中,数据管理端还可以将映射关系发送给数据产生端。数据产生端在接收到数据处理任务的数据读取请求之后,可以根据映射关系以及分配给该数据处理任务的任务标识将对应的数据发送给数据处理任务。
在本公开一实施方式中,所述方法进一步还包括以下步骤:
所述数据管理端向所述数据读取任务发送数据读取信息;其中,所述数据读取信息包括所要读取的目标分区中的数据对应的任务标识;
所述数据处理任务接收所述数据管理端发送的所述数据读取信息,并向所述数据产生端发送数据读取请求;其中,所述数据读取请求包括所述数据读取信息;
所述数据产生端接收所述数据处理任务的数据读取请求,并根据所述映射关系将所述目标分区中对应于所述任务标识的数据的读取信息发送给所述数据处理任务;其中,所述数据读取请求包括所要读取的所述目标分区中数据对应的所述任务标识。
该可选的实现方式中,数据管理端为每个数据处理任务生成任务标识后,建立目标分区中数据与任务标识之间的映射关系。数据管理端还将该映射关系发送给数据产生端,数据产生端可以将该映射关系存储下来,在数据处理任务请求获取数据时,可以根据该映射关系以及数据处理任务的任务标识将对应的数据发送给数据处理任务。
数据产生端可以接收数据管理端发送的映射关系并存储,数据处理任务可以直接向数据产生端请求读取数据,并在数据读取请求中携带数据管理端分配给其的任务标识。数据产生端接收到数据读取请求之后,可以根据任务标识以及映射关系,将对应数据发送给数据处理任务。
图5示出根据本公开一实施方式的数据处理方法的应用场景示意图。如图5所示,Spark计算引擎包括多个节点,该多个节点包括数据管理节点、Map节点和Reduce节点等。Map节点上运行多个Map任务,用于执行大数据作业中的映射任务,在所有Map任务执行完成之后,Map节点将每个Map任务产生的数据进行分区,得到多个数据分区。Map节点还针对每个数据分区统计数据量,并记录每个数据分区的数据量。Reduce节点上运行多个Reduce任务,每个Reduce任务从Map节点上的数据分区拉取任务,并进行Reduce处理,Reduce处理的具体内容基于大数据作业的不同而不同,可以由客户端通过编写Reduce处理函数来确定。数据管理节点用于管理Spark计算引擎中的所有节点,这些节点包括Map节点和 Reduce节点,数据管理节点可以用于为Reduce节点和Map节点分配资源,用于管理Map任务和Reduce任务等。
数据管理节点在Map节点统计完成每个数据分区的数据量之后,从 Map节点获取数据量,并通过与第一预设阈值进行比较确定是否存在目标分区。如果存在目标分区,则针对目标分区在数据处理节点上启动多个数据处理任务,并为每个数据处理任务生成任务标识,一个任务标识唯一标识一个数据处理任务。数据管理节点还通过将目标分区中的数据划分成多个分组,并通过将每个分组中的数据映射至一个任务标识的方式建立映射关系。数据管理节点将该映射关系以及分配给数据处理任务的任务标识发送给数据处理任务。数据处理任务根据该映射关系以及任务标识从目标分区中获取数据,进而进行处理。
下述为本公开装置实施例,可以用于执行本公开方法实施例。
图6示出根据本公开一实施方式的数据处理装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图6所示,所述数据处理装置包括:
第一确定模块601,被配置为确定数据产生端在数据写阶段产生的数据分区中的数据量;
第二确定模块602,被配置为将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区;
生成模块603,被配置为生成多个任务标识,并建立所述多个任务标识与所述目标分区中数据之间的映射关系;其中,所述映射关系中每条数据对应一个任务标识,一个任务标识对应一条数据或者多条数据;
分配模块604,被配置为将多个所述任务标识分别分配给不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据。
在本公开一实施方式中,该数据处理装置可适用于在大数据处理平台中的数据管理端。
图7示出根据本公开另一实施方式的数据处理装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图7所示,所述数据处理装置包括:
划分模块701,被配置为将一个或多个数据产生任务产生的数据进行划分,得到多个数据分区;
统计模块702,被配置为统计划分后每个所述数据分区的数据量;
提供模块703,被配置为将所述数据分区的数据量提供给数据管理端。
在本公开一实施方式中,该数据处理装置可适用于在大数据处理平台中的数据产生端。
图8示出根据本公开另一实施方式的数据处理装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图8所示,所述数据处理装置包括:
第一接收模块801,被配置为接收数据管理端发送的数据读取信息;
发送模块802,被配置为向数据产生端发送数据读取请求;其中,所述数据读取请求包括所述数据读取信息;所述数据读取信息包括所要读取的目标分区中的数据对应的任务标识;
第二接收模块803,被配置为接收所述数据产生端发送的所要读取的目标分区中的数据对应的任务标识的数据信息;
获取模块804,被配置为根据所述数据信息获取所要读取的数据。
在本公开一实施方式中,该数据处理装置可适用于在大数据处理平台中的数据处理端。
图9示出根据本公开另一实施方式的数据处理系统的结构框图,该系统可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图9所示,所述数据处理系统包括:数据产生端901、数据管理端902 和数据处理端903;
所述数据产生端901将一个或多个数据产生任务在数据写阶段产生的数据进行划分,并确定划分后对应于不同数据处理任务的数据分区的数据量;其中,所述数据分区的数据量为对应于一个所述数据处理任务的所有数据量;
所述数据产生端901将所述数据分区的数据量提供给所述数据管理端 902;
所述数据管理端902将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区,并生成多个任务标识,以及建立所述多个任务标识与所述目标分区中数据之间的映射关系;其中,所述映射关系中每条数据对应一个任务标识,一个任务标识对应一条数据或者多条数据;
所述数据管理端902将多个所述任务标识分别分配给运行在所述数据处理端903的不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据。
在本公开一实施方式中,所述数据处理系统可适用于大数据计算引擎中数据产生端、数据管理端和数据处理端上的数据处理。
上述装置实施例所涉及的技术特征及其对应的解释和说明与上文所描述的方法实施例所涉及的技术特征及其对应的解释和说明相同、相应或相似,对于上述装置实施例所涉及的技术特征及其对应的解释和说明可参考上述方法实施例所涉及的技术特征及其对应的解释和说明,本公开在此不再赘述。
本公开实施例还公开了一种电子设备,所述电子设备包括存储器和处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现上述任一方法步骤。
图10是适于用来实现根据本公开一实施方式的数据处理方法的计算机系统的结构示意图。
如图10所示,计算机系统1000包括处理单元1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序而执行上述实施方式中的各种处理。在 RAM1003中,还存储有计算机系统1000操作所需的各种程序和数据。处理单元1001、ROM1002以及RAM1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1100也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1100上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。其中,所述处理单元1001可实现为CPU、GPU、TPU、 FPGA、NPU等处理单元。
特别地,根据本公开的实施方式,上文描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行所述数据传输方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。
本公开实施例还公开了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述任一方法步骤。
附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开实施例的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (10)
1.一种数据处理方法,包括:
确定数据产生端在数据写阶段产生的数据分区中的数据量;
将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区;
生成多个任务标识,并建立所述多个任务标识与所述目标分区中数据之间的映射关系;其中,所述映射关系中每条数据对应一个任务标识,一个任务标识对应一条数据或者多条数据;
将多个所述任务标识分别分配给不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据。
2.一种数据处理方法,包括:
将一个或多个数据产生任务产生的数据进行划分,得到多个数据分区;
统计划分后每个所述数据分区的数据量;
将所述数据分区的数据量提供给数据管理端。
3.一种数据处理方法,包括:
接收数据管理端发送的数据读取信息;
向数据产生端发送数据读取请求;其中,所述数据读取请求包括所述数据读取信息;所述数据读取信息包括所要读取的目标分区中的数据对应的任务标识;
接收所述数据产生端发送的所要读取的目标分区中的数据对应的任务标识的数据信息;
根据所述数据信息获取所要读取的数据。
4.一种数据处理方法,包括:
数据产生端将一个或多个数据产生任务在数据写阶段产生的数据进行划分,并确定划分后对应于不同数据处理任务的数据分区的数据量;其中,所述数据分区的数据量为对应于一个所述数据处理任务的所有数据量;
所述数据产生端将所述数据分区的数据量提供给数据管理端;
所述数据管理端将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区,并生成多个任务标识,以及建立所述多个任务标识与所述目标分区中数据之间的映射关系;其中,所述映射关系中每条数据对应一个任务标识,一个任务标识对应一条数据或者多条数据;
所述数据管理端将多个所述任务标识分别分配给不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据。
5.一种数据处理装置,包括:
第一确定模块,被配置为确定数据产生端在数据写阶段产生的数据分区中的数据量;
第二确定模块,被配置为将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区;
生成模块,被配置为生成多个任务标识,并建立所述多个任务标识与所述目标分区中数据之间的映射关系;其中,所述映射关系中每条数据对应一个任务标识,一个任务标识对应一条数据或者多条数据;
分配模块,被配置为将多个所述任务标识分别分配给不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据。
6.一种数据处理装置,包括:
划分模块,被配置为将一个或多个数据产生任务产生的数据进行划分,得到多个数据分区;
统计模块,被配置为统计划分后每个所述数据分区的数据量;
提供模块,被配置为将所述数据分区的数据量提供给数据管理端。
7.一种数据处理系统,包括:数据产生端、数据管理端和数据处理端;
所述数据产生端将一个或多个数据产生任务在数据写阶段产生的数据进行划分,并确定划分后对应于不同数据处理任务的数据分区的数据量;其中,所述数据分区的数据量为对应于一个所述数据处理任务的所有数据量;
所述数据产生端将所述数据分区的数据量提供给所述数据管理端;
所述数据管理端将所述数据量大于或等于第一预设阈值的所述数据分区确定为目标分区,并生成多个任务标识,以及建立所述多个任务标识与所述目标分区中数据之间的映射关系;其中,所述映射关系中每条数据对应一个任务标识,一个任务标识对应一条数据或者多条数据;
所述数据管理端将多个所述任务标识分别分配给运行在所述数据处理端的不同的数据处理任务,以便在数据读阶段由所述数据处理任务根据所述映射关系从所述目标分区读取所对应的数据。
8.一种电子设备,包括存储器和处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1-4任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机指令,其中,该计算机指令被处理器执行时实现权利要求1-4任一项所述方法的步骤。
10.一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现权利要求1-4任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110163208.5A CN112799820A (zh) | 2021-02-05 | 2021-02-05 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110163208.5A CN112799820A (zh) | 2021-02-05 | 2021-02-05 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112799820A true CN112799820A (zh) | 2021-05-14 |
Family
ID=75814440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110163208.5A Pending CN112799820A (zh) | 2021-02-05 | 2021-02-05 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112799820A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114237510A (zh) * | 2021-12-17 | 2022-03-25 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130297788A1 (en) * | 2011-03-30 | 2013-11-07 | Hitachi, Ltd. | Computer system and data management method |
US20140215178A1 (en) * | 2013-01-31 | 2014-07-31 | International Business Machines Corporation | Resource management in mapreduce architecture and architectural system |
CN106503058A (zh) * | 2016-09-27 | 2017-03-15 | 华为技术有限公司 | 一种数据加载方法、终端和计算集群 |
CN109308170A (zh) * | 2018-09-11 | 2019-02-05 | 北京北信源信息安全技术有限公司 | 一种数据处理方法及装置 |
CN110135184A (zh) * | 2018-02-09 | 2019-08-16 | 中兴通讯股份有限公司 | 一种静态数据脱敏的方法、装置、设备及存储介质 |
CN110287038A (zh) * | 2019-06-10 | 2019-09-27 | 天翼电子商务有限公司 | 提升Spark Streaming框架的数据处理效率的方法及系统 |
CN111008235A (zh) * | 2019-12-03 | 2020-04-14 | 成都四方伟业软件股份有限公司 | 一种基于Spark的小文件合并方法及系统 |
CN111966490A (zh) * | 2020-07-24 | 2020-11-20 | 广东技术师范大学 | 一种Spark分区负载均衡方法 |
-
2021
- 2021-02-05 CN CN202110163208.5A patent/CN112799820A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130297788A1 (en) * | 2011-03-30 | 2013-11-07 | Hitachi, Ltd. | Computer system and data management method |
US20140215178A1 (en) * | 2013-01-31 | 2014-07-31 | International Business Machines Corporation | Resource management in mapreduce architecture and architectural system |
CN106503058A (zh) * | 2016-09-27 | 2017-03-15 | 华为技术有限公司 | 一种数据加载方法、终端和计算集群 |
CN110135184A (zh) * | 2018-02-09 | 2019-08-16 | 中兴通讯股份有限公司 | 一种静态数据脱敏的方法、装置、设备及存储介质 |
CN109308170A (zh) * | 2018-09-11 | 2019-02-05 | 北京北信源信息安全技术有限公司 | 一种数据处理方法及装置 |
CN110287038A (zh) * | 2019-06-10 | 2019-09-27 | 天翼电子商务有限公司 | 提升Spark Streaming框架的数据处理效率的方法及系统 |
CN111008235A (zh) * | 2019-12-03 | 2020-04-14 | 成都四方伟业软件股份有限公司 | 一种基于Spark的小文件合并方法及系统 |
CN111966490A (zh) * | 2020-07-24 | 2020-11-20 | 广东技术师范大学 | 一种Spark分区负载均衡方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114237510A (zh) * | 2021-12-17 | 2022-03-25 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10558672B1 (en) | System and method for executing queries on multi-graphics processing unit systems | |
US20170255496A1 (en) | Method for scheduling data flow task and apparatus | |
US8726290B2 (en) | System and/or method for balancing allocation of data among reduce processes by reallocation | |
US6901446B2 (en) | System and method for describing and automatically managing resources | |
US9135041B2 (en) | Selecting provisioning targets for new virtual machine instances | |
US20060149915A1 (en) | Memory management technique | |
CN112579692B (zh) | 一种数据同步方法、装置、系统、设备及存储介质 | |
US9665512B2 (en) | Memory management in presence of asymmetrical memory transfer cost | |
CN112527848B (zh) | 基于多数据源的报表数据查询方法、装置、系统及存储介质 | |
CN112559165A (zh) | 内存管理方法、装置、电子设备及计算机可读存储介质 | |
US8903871B2 (en) | Dynamic management of log persistence | |
CN112799820A (zh) | 数据处理方法、装置、电子设备、存储介质及程序产品 | |
CN110597879A (zh) | 时序数据的处理方法和装置 | |
US20040059758A1 (en) | Method and apparatus for optimizing extent size | |
CN109788013B (zh) | 分布式系统中作业资源分配方法、装置及设备 | |
CN111400241B (zh) | 数据重构方法和装置 | |
CN115878910A (zh) | 线路查询方法、装置和存储介质 | |
CN113360481B (zh) | 一种数据处理方法、装置、设备及计算机可读存储介质 | |
CN111611243B (zh) | 数据处理方法及装置 | |
US20210373926A1 (en) | Resource use method, electronic device, and computer program product | |
CN110046040B (zh) | 分布式任务处理方法及系统和存储介质 | |
CN113986962A (zh) | 排行榜生成方法、装置、设备及存储介质 | |
CN113918271A (zh) | 一种资源管理方法、装置、电子设备及存储介质 | |
CN113760940A (zh) | 应用于分布式系统的配额管理方法、装置、设备及介质 | |
CN111796934A (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 |