CN115809015A - 分布式系统中数据处理的方法以及相关系统 - Google Patents
分布式系统中数据处理的方法以及相关系统 Download PDFInfo
- Publication number
- CN115809015A CN115809015A CN202111076633.7A CN202111076633A CN115809015A CN 115809015 A CN115809015 A CN 115809015A CN 202111076633 A CN202111076633 A CN 202111076633A CN 115809015 A CN115809015 A CN 115809015A
- Authority
- CN
- China
- Prior art keywords
- data
- area
- intermediate data
- partition
- node
- 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 90
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000005192 partition Methods 0.000 claims abstract description 241
- 230000002776 aggregation Effects 0.000 claims abstract description 114
- 238000004220 aggregation Methods 0.000 claims abstract description 114
- 238000003860 storage Methods 0.000 claims abstract description 108
- 238000013507 mapping Methods 0.000 claims abstract description 26
- 230000009467 reduction Effects 0.000 claims abstract description 22
- 230000005540 biological transmission Effects 0.000 abstract description 13
- 230000015654 memory Effects 0.000 description 52
- 230000006870 function Effects 0.000 description 31
- 230000008569 process Effects 0.000 description 22
- 238000004891 communication Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 10
- 238000007726 management method Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 9
- 230000002457 bidirectional effect Effects 0.000 description 6
- 238000000638 solvent extraction Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 239000007787 solid Substances 0.000 description 3
- 239000012634 fragment Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种分布式系统中数据处理的方法,包括:管理节点将待处理的数据处理请求拆分为映射任务及归约任务,第一工作节点执行映射任务,并将执行映射任务得到中间数据写入共享存储区域,该中间数据根据第二工作节点的数量被划分为多个分区,每个分区归属于一个第二工作节点,聚合节点将共享存储区域中归属于相同分区的中间数据集中存储,第二工作节点获取对应分区的中间数据以执行归约任务。由此提升了拉取中间数据的效率,增大了传输尺寸,降低了传输次数,充分发挥网络性能。
Description
技术领域
本申请涉及大数据技术领域,尤其涉及一种分布式系统中数据处理的方法、分布式系统以及计算机集群、计算机可读存储介质、计算机程序产品。
背景技术
随着智能终端如智能手机、平板的普及以及互联网的不断发展,数据呈现爆炸增长的趋势。例如,大量用户通过智能手机进行在线社交、在线购物、在线娱乐,从而产生了海量数据。又例如,生产设备在产品生产过程中产生海量数据。
大数据处理在海量数据的分析、检索等场景中发挥着重要的作用。随着对处理时延需求的提升,数据处理系统大多采用分布式系统对数据处理过程进行加速。具体地,分布式系统可以通过映射归约MapReduce模型实现分布式处理。
具体地,分布式系统包括主节点(master)和多个工作节点(worker)。当一个作业被提交至分布式系统时,分布式系统中的主节点将该作业拆分为多个map任务以及多个reduce任务。主节点将上述多个map任务和多个reduce任务调度至多个工作节点。其中,被分配map任务的每个工作节点可以并行处理输入数据的部分数据,得到中间数据。上述中间数据可以包括归属于不同分区(partition)的数据。每个reduce任务可以用于处理指定分区的数据。基于此,被分配reduce任务的工作节点可以获取中间数据中该reduce任务需要的分区的数据,进行处理,得到处理结果。
然而,随着大数据应用对数据处理效率要求的提高,MapReduce模型的并发粒度越来越大,数据的分区越来越多,相应地,reduce任务的数量也越来越多,单个reduce任务从单个数据文件拉取的数据量越来越少。如此导致reduce任务拉取数据时,硬盘读写效率较低,并且,数据传输过程中的请求包的尺寸越来越小,无法充分发挥网络性能,此外,请求次数过多也可以导致网络拥塞和丢包,引起reduce任务的故障重试,进而影响整个大数据应用的处理性能。
发明内容
本申请提供了一种分布式系统中数据处理的方法,该方法通过将执行映射任务产生的中间数据写入共享存储区域,对共享存储区域中归属于相同分区的中间数据进行集中存储,使得执行归约任务的工作节点可以拉取相应分区的中间数据,由此提升拉取数据的效率,并通过增大传输尺寸,降低传输次数,充分发挥网络性能,如此避免请求次数过多导致网络拥塞和丢包,进而避免归约任务故障重试,保障了大数据应用的处理性能。本申请还提供了上述方法对应的分布式系统、计算机集群、计算机可读存储介质以及计算机程序产品。
第一方面,本申请提供了一种分布式系统中数据处理的方法。分布式系统包括管理节点、多个工作节点及聚合节点。其中,管理节点、工作节点、聚合节点可以是物理节点,例如是服务器,也可以是逻辑节点,例如是服务器中的虚拟机或容器等。
具体地,管理节点将待处理的数据处理请求拆分为映射任务及归约任务,多个工作节点中的第一工作节点执行所述映射任务,并将执行所述映射任务得到中间数据写入共享存储区域。其中,中间数据根据第二工作节点的数量被划分为多个分区,每个分区归属于一个第二工作节点。聚合节点将所述共享存储区域中归属于相同分区的中间数据集中存储。第二工作节点获取对应分区的中间数据以执行所述归约任务。
在该方法中,第一工作节点将执行映射任务产生的中间数据写入共享存储区域,然后聚合节点将写入共享存储区域中归属于相同分区的中间数据进行集中存储,使得第二工作节点可以拉取相应分区的中间数据执行归约任务,提升了拉取数据的效率。而且该方法通过传输相应分区的中间数据,可以减少传输次数、增大传输尺寸,因而可以充分发挥网络性能,避免请求次数过多导致网络拥塞和丢包,进而避免归约任务故障重试,保障了大数据应用的处理性能。
在一些可能的实现方式中,聚合节点可以对共享存储区域进行管理,例如聚合节点可以从共享存储区域中为第一工作节点分配缓冲区域。具体地,第一工作节点向所述聚合节点申请所述共享存储区域中的一段缓冲区域,然后第一工作节点可以将所述中间数据写入所述缓冲区域。当所述缓冲区域中不能写入,例如缓冲区域写满时,第一工作节点发送聚合任务至所述聚合节点,所述聚合节点执行所述聚合任务,将所述共享存储区域中归属于相同分区的中间数据集中存储。
该方法中,每个第一工作节点将中间数据写入各自的缓冲区域,聚合节点将不能写入的缓冲区域中归属于相同分区的中间数据集中存储,而不必等待所有中间数据均写入共享存储区域,如此可以提高数据集中存储的效率,使得执行归约任务的工作节点无需等待所有中间数据完成集中存储,缩短了拉取中间数据的时间,提高了拉取中间数据的效率。
在一些可能的实现方式中,所述中间数据中每个分区的数据具有分区标识。相应地,聚合节点可以根据所述分区标识,将所述中间数据中具有相同分区标识的数据进行集中存储。
该方法中,聚合节点可以基于分区标识快速确定归属于相同分区的数据,进而将属于相同分区的数据进行集中存储,提高了集中存储的效率,满足业务的需求。
在一些可能的实现方式中,所述缓冲区域包括数据区域和索引区域,所述数据区域用于存储所述中间数据,所述索引区域用于存储所述中间数据中每个分区写入所述数据区域的数据量。其中,数据区域根据不同的哈希值划分为多个子区域。
基于此,第一工作节点可以根据所述中间数据中每个分区的数据的分区标识确定哈希值,然后根据所述哈希值确定写入所述中间数据的子区域,将所述中间数据写入所述子区域,接着将所述中间数据中每个分区写入所述数据区域的数据量写入所述索引区域。
该方法通过将数据区域划分为多个子区域,如此可以增大写入中间数据的并发粒度,提高写入中间数据的效率。而且,该方法基于哈希值将中间数据写入相应的子区域,后续在对相同分区的中间数据进行存储时,可以通过哈希查找方式快速定位中间数据。
在一些可能的实现方式中,至少一个子区域用于存储归属于两个分区的中间数据,其中,归属于第一分区的中间数据按照缓冲区域的地址由低到高的方向被写入所述子区域,归属于第二分区的中间数据按照缓冲区域的地址由高到低的方向被写入所述子区域。也即第一工作节点可以通过双向写的方式追加写入两个分区的中间数据至子区域,由此提高空间利用率,满足了业务需求。
在一些可能的实现方式中,所述缓冲区域包括数据区域和索引区域。所述数据区域用于存储所述中间数据及其长度,所述索引区域用于存储所述中间数据中每条数据归属分区的分区标识以及每条数据在所述数据区域的偏移。
该方法中,数据区域不分区,因此,多个分区的数据可以共享该数据区域的存储空间,由此提高了空间利用率,满足了业务需求。
在一些可能的实现方式中,所述中间数据及其长度按照缓冲区域的地址由低到高的方向写入所述数据区域,所述分区标识和所述偏移按照缓冲区域的地址由高到低的方向写入所述索引区域;或者,所述中间数据及其长度按照缓冲区域的地址由高到低的方向写入所述数据区域,所述分区标识和所述偏移按照缓冲区域的地址由低到高的方向写入所述索引区域。
该方法中,中间数据及其长度、中间数据中每条数据归属分区的分区标识和偏移可以共享整个缓冲区域的存储空间,如此可以减少缓冲区域的存储空间浪费,提升缓冲区域的资源利用率。
第二方面,本申请提供了一种分布式系统。所述分布式系统包括管理节点、多个工作节点及聚合节点;
所述管理节点,用于将待处理的数据处理请求拆分为映射任务及归约任务;
所述多个工作节点中的第一工作节点,用于执行所述映射任务,并将执行所述映射任务得到中间数据写入共享存储区域,所述中间数据根据第二工作节点的数量被划分为多个分区,每个分区归属于一个第二工作节点;
所述聚合节点,用于将所述共享存储区域中归属于相同分区的中间数据集中存储;
所述第二工作节点,用于获取对应分区的中间数据以执行所述归约任务。
在一些可能的实现方式中,所述第一工作节点具体用于:
向所述聚合节点申请所述共享存储区域中的一段缓冲区域;
将所述中间数据写入所述缓冲区域;
所述第一工作节点还用于:
当所述缓冲区域中不能写入,发送聚合任务至所述聚合节点;
所述聚合节点具体用于:
执行所述聚合任务,将所述共享存储区域中归属于相同分区的中间数据集中存储。
在一些可能的实现方式中,所述中间数据中每个分区的数据具有分区标识;所述聚合节点具体用于:
根据所述分区标识,将所述中间数据中具有相同分区标识的数据进行集中存储。
在一些可能的实现方式中,所述缓冲区域包括数据区域和索引区域,所述数据区域用于存储所述中间数据,所述索引区域用于存储所述中间数据中每个分区写入所述数据区域的数据量,所述数据区域根据不同的哈希值划分为多个子区域;
所述第一工作节点具体用于:
根据所述中间数据中每个分区的数据的分区标识确定哈希值;
根据所述哈希值确定写入所述中间数据的子区域;
将所述中间数据写入所述子区域;
将所述中间数据中每个分区写入所述数据区域的数据量写入所述索引区域。
在一些可能的实现方式中,至少一个子区域用于存储归属于两个分区的中间数据,其中,归属于第一分区的中间数据按照缓冲区域的地址由低到高的方向被写入所述子区域,归属于第二分区的中间数据按照缓冲区域的地址由高到低的方向被写入所述子区域。
在一些可能的实现方式中,所述缓冲区域包括数据区域和索引区域,所述数据区域用于存储所述中间数据及其长度,所述索引区域用于存储所述中间数据中每条数据归属分区的分区标识以及每条数据在所述数据区域的偏移。
在一些可能的实现方式中,所述中间数据及其长度按照缓冲区域的地址由低到高的方向写入所述数据区域,所述分区标识和所述偏移按照缓冲区域的地址由高到低的方向写入所述索引区域;或者,所述中间数据及其长度按照缓冲区域的地址由高到低的方向写入所述数据区域,所述分区标识和所述偏移按照缓冲区域的地址由低到高的方向写入所述索引区域。
第三方面,本申请提供一种计算机集群,所述计算机集群包括至少一台计算机。至少一台计算机包括至少一个处理器和至少一个存储器。所述至少一个处理器、所述至少一个存储器进行相互的通信。所述至少一个存储器中存储有计算机可读指令,所述至少一个处理器读取并执行所述计算机可读指令,以使得计算机集群执行如第一方面或第一方面的任一种实现方式所述的分布式系统中数据处理的方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令指示计算机或计算机集群执行上述第一方面或第一方面的任一种实现方式所述的分布式系统中数据处理的方法。
第五方面,本申请提供了一种包含指令的计算机程序产品,当其在计算机或计算机集群上运行时,使得计算机或计算机集群执行上述第一方面或第一方面的任一种实现方式所述的分布式系统中数据处理的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本申请实施例的技术方法,下面将对实施例中所需使用的附图作以简单地介绍。
图1为本申请实施例提供的一种MapReduce模型的工作流程示意图;
图2为本申请实施例提供的一种分布式系统的架构图;
图3为本申请实施例提供的一种分布式系统中数据处理的方法的流程图;
图4为本申请实施例提供的一种数据写入机制示意图;
图5为本申请实施例提供的另一种数据写入机制示意图;
图6为本申请实施例提供的一种数据聚合的流程示意图;
图7为本申请实施例提供的一种聚合节点的结构示意图;
图8为本申请实施例提供的一种计算机集群的结构示意图。
具体实施方式
本申请实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
为了便于理解本申请实施例,首先,对本申请涉及的部分术语进行解释说明。
大数据,也称作海量数据,是一种来自各种来源的大量非结构化数据或结构化数据。例如,大数据可以是来自电子商务应用的交易数据、来自社交应用的社交数据或者是来自新闻阅读应用的浏览行为数据等等。
分布式处理(distributed processing),是指将不同地点的,或者具有不同功能的,或者拥有不同数据的多台计算机通过通信网络连接,在控制系统的统一管理控制下,协调地完成大规模信息处理任务。分布式处理方式可以用于处理大数据,例如对大数据进行分析、检索,从而实现数据处理加速。
映射归约(MapReduce)模型,是大数据分布式处理中经典的数据处理模型。该模型用于对大规模数据集,例如是大于1太字节(terabyte,TB)的数据集进行处理。该模型指定一个map函数和一个reduce函数。其中,map函数用于处理某个键值(key-value,KV)对,从而并发出一定数量的键值对。reduce函数用于处理相同键分组的值,得到新的键值对。例如,map函数的输入可以为<k1,v1>,map函数的输出可以为多个<k2,v2>。其中,多个<k2,v2>可以按照key进行合并,得到<k2,集合(v2)>。reduce函数的输入可以为<k2,集合(v2)>,reduce函数的输出可以为<k3,v3>。
为了便于理解,下面以网页词频统计(word count)场景对map函数和reduce函数进行示例说明。由于网页数量比较庞大,通过一个程序将所有网页读入内存进行词频统计通常难以实现,基于此,设置了map函数和reduce函数进行分布式地词频统计。具体地,map函数的输入为一个<key,value>对,其中,value可以是要统计的所有文本中的一行数据。map函数的计算过程是提取该行文本中的所有单词,针对每个单词输出一个新的键值对<word,1>。上述新的键值对可以按照word进行合并,形成键值集合对,例如为<word,<1,1,1……>>。reduce函数的输入为上述键值集合对,例如是<word,<1,1,1……>>。reduce函数的计算过程是将集合里的1求和,然后将键和求和结果形成新的键值对进行输出。reduce函数的输出可以表示为<word,sum>,其中,sum为求和结果。
MapReduce模型可以部署在分布式系统中,以加速数据处理。其中,分布式系统包括管理节节点和多个工作节点。管理节点也可以称作主节点。主节点负责分配任务,协调任务的运行,工作节点负责执行任务。参见图1所示的MapReduce模型的工作流程示意图,用户项目(user program)将作业下发至主节点,主节点将作业拆分为M个map任务和N个reduce任务,M、N为正整数。图1的示例中,M取值为3,N取值为2。然后,主节点将M个map任务和N个reduce任务调度至相应的工作节点。被分配了map任务的工作节点读取输入数据,从输入数据中抽取键值对,作为参数传递给map函数,map函数的输出结果(也称作中间数据)存储在本地磁盘。被分配了reduce任务的工作节点读取中间数据,对中间数据进行归约或化简,得到处理结果。进一步地,被分配了reduce任务的工作节点还可以将处理结果写入文件系统,以将处理结果以文件形式输出。
在图1中,MapReduce模型将数据处理分为map阶段、shuffle阶段和reduce阶段。map阶段用于对输入数据进行处理,获得中间数据。reduce阶段用于对中间数据进行处理,得到处理结果。shuffle阶段主要用于数据搬迁,例如是将中间数据由执行map任务的工作节点的本地磁盘拉取至执行reduce任务的工作节点。
中间数据可以包括多条数据,每条数据可以按照预设的分区规则分配至不同分区。也即每个map任务产生的中间数据可以包括归属于不同分区的数据。基于此,执行map任务的工作节点通常将该map任务产生的中间数据按照分区标识(partition id)写入该map任务对应的数据文件中的相应分区,并在索引文件中记录每个分区的数据量和起始偏移量。每个reduce任务通常用于处理指定分区的数据。基于此,在shuffle阶段,执行reduce任务的工作节点可以根据索引文件中记录的指定分区的数据量和起始偏移,从每个map任务对应的数据文件中读取指定分区的数据。
然而,随着大数据应用对数据处理效率要求的提高,MapReduce模型的并发粒度越来越大,数据的分区越来越多,相应地,reduce任务的数量也越来越多,单个reduce任务从单个数据文件拉取的数据量越来越少。如此导致reduce任务拉取数据时,硬盘读写效率较低。并且,数据传输过程中的请求包的尺寸越来越小,无法充分发挥网络性能。此外,请求次数过多也可以导致网络拥塞和丢包,引起reduce任务的故障重试,进而影响整个大数据应用的处理性能。
有鉴于此,本申请实施例提供了一种分布式系统中数据处理的方法。该方法通过将多个工作节点执行map任务产生的中间数据写入共享存储区域,然后将共享存储区域中归属于相同分区的中间数据进行集中存储,使得执行reduce任务的工作节点可以拉取相应分区的中间数据,提升了拉取数据的效率。而且该方法通过传输相应分区的中间数据,可以减少传输次数、增大传输尺寸,因而可以充分发挥网络性能,避免请求次数过多导致网络拥塞和丢包,进而避免reduce任务故障重试,保障了大数据应用的处理性能。
为了使得本申请的技术方案更加清楚、易于理解,下面结合附图对本申请实例的系统架构进行详细介绍。
参见图2所示的分布式系统的架构图,如图2所示,分布式系统100包括主节点10、多个工作节点20以及聚合节点30。其中,主节点10、工作节点20、聚合节点30可以是物理节点,例如是服务器或者终端。其中,服务器可以是云环境中的服务器(即云服务器),或者是边缘环境中的服务器(即边缘服务器),也可以是本地数据中心中的服务器(即本地服务器)。终端包括但不限于台式机、笔记本电脑、智能手机、智能穿戴设备(如智能手环、智能手表)等。在一些实施例中,主节点10、工作节点20、聚合节点30也可以是逻辑节点,例如是同一物理节点或不同物理节点上的虚拟机(virtual machine)、容器(container)等。
主节点10分别和多个工作节点20建立有通信连接。例如,主节点10可以通过光纤等有线通信方式和多个工作节点20建立通信连接。又例如,主节点10可以通过无线局域网(wireless local area network,WLAN)、第五代(the fifth generation,5G)移动通信网络、蓝牙或紫蜂(zigbee)等无线通信方式和多个工作节点20建立通信连接。
主节点10用于分配任务,协调任务的运行。工作节点20用于执行任务。聚合节点30用于对一些工作节点20执行任务产生的中间数据进行聚合,以将聚合后的中间数据提供给另一些工作节点20进行进一步处理。
具体地,主节点10接收数据处理请求,例如是接收大数据应用触发的数据处理请求,该数据处理请求也可以称作数据处理作业(可以简称为作业,job)。主节点10将上述待处理的数据处理请求拆分为map任务和reduce任务。例如主节点10可以将数据处理请求拆分为M个map任务和N个reduce任务。其中,M、N为正整数。考虑到并发粒度,M、N可以为大于1的正整数。
然后主节点10可以将map任务调度至多个工作节点20中的一些工作节点20,将reduce任务调度至多个工作节点20中的另一些工作节点20。为了便于区分,本申请实施例将map任务被调度到的工作节点20称作第一工作节点,reduce任务被调度到的工作节点20称作第二工作节点。每个工作节点20可以执行一个任务,基于此,第一工作节点的数量可以是M个,第二工作节点的数量可以是N个。本实施例假定M等于3,N等于2。
需要说明的是,第一工作节点和第二工作节点可以重合,也即多个工作节点20中可以存在一些工作节点20既被分配了map任务,又被分配了reduce任务,本实施例对此不作限定。
第一工作节点获取待处理的数据(例如是输入数据),执行所述映射任务,获得对所述待处理的数据进行处理所得的中间数据。其中,第一工作节点中的每个工作节点20分别获取待处理的数据的部分数据。例如待处理的数据为1TB,则M个工作节点20分别获取待处理数据的1/M。第一工作节点中的每个工作节点20执行映射任务,以对各自获取的待处理的数据进行处理,生成中间数据。该中间数据为临时数据。中间数据可以被划分为多个分区。在一些实施例中,中间数据可以根据reduce任务的数量划分为多个分区,每个分区归属于一个第二工作节点。。
第一工作节点可以将中间数据写入共享存储区域40。该共享存储区域40是指可以被工作节点20共享的存储区域,各个工作节点20均可以访问该共享存储区域40,以进行数据读写。其中,共享存储区域40可以是每个工作节点20分别提供部分内存形成的全局存储池。基于内存形成的全局存储池也可以称作全局内存池、共享内存。需要说明的是,用于形成全局存储池的存储介质也可以是硬盘驱动器(hard disk drive,HDD)、固态驱动器(solid state drive)等。上述存储介质可以是本地的存储介质,如本地的硬盘驱动器,也可以是远端的硬盘驱动器,例如是网络服务存储(network attached storage,NAS)。
聚合节点30可以将共享存储区域40中归属于相同分区的中间数据集中存储。例如,聚合节点30可以在共享存储区域设置每个分区的存储区域,然后聚合节点30可以将属于第一分区的中间数据拷贝至第一分区的存储区域,将属于第二分区的中间数据拷贝至第二分区的存储区域,以此类推,将属于第N分区的中间数据拷贝至第N分区的存储区域,由此实现将归属于相同分区的中间数据集中存储,也即实现中间数据的聚合。其中,中间数据中每个分区的数据具有分区标识(partition id)。聚合节点30可以基于该分区标识,将中间数据中具有相同分区标识的数据进行集中存储。
第二工作节点可以获取对应分区的中间数据,以执行reduce任务,获得处理结果。具体地,第二工作节点中的每个工作节点20可以根据各自对应的分区标识,获取对应分区的中间数据,以执行reduce任务,获得处理结果。需要说明的是,第二工作节点包括多个,每个第二工作节点可以获得处理结果的部分,每个工作节点20可以将处理结果的部分写入存储系统,例如是写入存储系统中的文件。如此,大数据应用可以读取上述文件,获得处理结果。
在图2所示实施例中,共享存储区域40也可以由聚合节点30的存储介质如内存、硬盘驱动器等形成。例如,聚合节点30可以提供部分内存,形成共享内存,以供给多个工作节点20读写数据。
图2对本申请实施例的分布式系统100的架构,进行详细说明。接下来,将结合附图,从分布式系统100的角度对本申请实施例提供的数据处理的方法进行详细说明。
参见图3所示的数据处理的方法的流程图,该方法包括:
S302:主节点10接收数据处理请求。
具体地,用户可以通过大数据应用触发数据处理请求,主节点10接收大数据应用发送的上述数据处理请求。该数据处理请求用于对大规模数据集进行处理。大规模数据集是指数据量大于预设值的数据集。
在一些实施例中,大规模数据集可以包括互联网中的网页的集合,电子商务应用中商品评论的集合,或者是社交应用中用户发布的原创内容的集合。基于此,数据处理请求可以为网页词频统计请求等等。
S304:主节点10将待处理的数据处理请求拆分为map任务和reduce任务。
具体实现时,数据处理请求中包括拆分信息。拆分信息可以包括用户配置的待处理的数据的多个分片的地址。基于此,主节点10可以根据数据处理请求拆分为多个map任务,map任务的数量等于分片的数量,每个map任务被执行时,用于对待处理的数据的一个分片进行处理。
拆分信息还可以包括分区规则。该分区规则可以是基于序号的分区规则。例如,将序号为奇数的中间数据分配至一个分区,将序号为偶数的中间数据分配至另一个分区。又例如,将序号为1至K的中间数据分配至第一个分区P1,将序号为K+1至2K的中间数据分配至第二个分区P2,以此类推,将序号为iK+1至(i+1)K的中间数据分配至第i个分区。其中,i为正整数。主节点10可以根据上述分区规则,确定分区数量。例如,分区规则为按照序号的奇偶性分区时,分区数量可以为2。主节点10可以将数据处理请求还拆分为多个reduce任务。其中,reduce任务的数量可以等于分区的数量,相应地,每个reduce任务被执行时,用于处理一个分区的中间数据。
为了便于理解,下面结合具体示例进行说明。在一个示例中,数据处理请求可以是某地区三个品牌的手机销量进行统计。则该作业可以拆分为4个map任务和3个reduce任务。4个map任务例如可以是对该区域的四个子区域中各品牌的手机销量进行统计,3个reduce例如可以是对每个品牌在四个子区域的手机销量进行归约求和。
S306:主节点10将map任务调度至第一工作节点,将reduce任务调度至第二工作节点。
第一工作节点是指用于执行map任务的工作节点20。第二工作节点是指用于执行reduce任务的工作节点20。当map任务数量为M,reduce任务数量为N时,主节点10可以随机选择M个工作节点20,将M个map任务分别调度至M个工作节点20,以及随机选择N个工作节点20,将N个reduce任务分别调度至N个工作节点20。其中,每个map任务可以对应一个工作节点20,每个reduce任务可以对应一个工作节点20。
S308:第一工作节点执行map任务,获得中间数据。
具体地,第一工作节点执行map任务时,map任务可以读取输入数据(即第一工作节点获取的待处理的数据),将输入数据逐条进行map处理,具体是通过map函数进行处理,获得中间数据。
其中,第一工作节点通常为多个,这多个节点上的map任务可以并发执行。具体地,存储系统可以存储输入数据集,每个map任务可以读取输入数据集的一个子集。例如,输入数据集包括1000条数据,该输入数据集可以包括10个子集,每个子集包括100条数据,10个map任务可以并发读取各自对应的子集中的100条输入数据。
map任务携带有map函数的处理逻辑。一个数据处理请求拆分的多个map任务的处理逻辑可以是相同的。每个map任务可以根据map函数的处理逻辑,对输入数据进行处理,从而获得中间数据。该中间数据为临时数据,也称作shuffle数据。
S310:第一工作节点向聚合节点30申请共享存储区域40中的一段缓冲区域。
具体地,聚合节点30设置有共享存储区域,该共享存储区域能够被多个工作节点20访问。聚合节点30可以对外暴露缓冲区域获取接口。每个第一工作节点可以调用该缓冲区域获取接口,申请共享存储区域40中的一段缓冲区域(buffer)。
在一些可能的实现方式中,执行本申请实施例的数据处理的方法,也可以不执行上述S310。例如,第一工作节点可以直接将中间数据写入共享存储区域,写入该共享存储区域的中间数据可以按照所属分区的分区标识被聚合。
S312:聚合节点30向第一工作节点返回申请成功通知。
聚合节点30可以响应于第一工作节点的申请操作,从共享存储区域如共享内存中确定一块内存资源作为缓冲区域。其中,共享内存可以统一编址。聚合节点30可以将从共享内存中确定的内存资源的地址,例如是起始地址和终止地址,或者是起始地址和长度携带在申请成功通知中,然后返回申请成功通知至第一工作节点,以便于第一工作节点可以根据该地址写入中间数据。
在本实施例中,聚合节点30对共享存储区域如共享内存进行统一管理。如此,上层的map任务在访问共享内存时,可以如同访问同一个节点(例如是计算节点)的内存,减少上层的map任务对不同节点上内存的精细化管理。
在一些可能的实现方式中,执行本申请实施例的数据处理的方法,也可以不执行上述S312。例如,第一工作节点可以直接在申请缓冲区域的请求中指定申请的缓冲区域的地址,如此,聚合节点30可以根据该地址分配相应的资源作为缓冲资源,而无需向第一工作节点返回申请成功通知。
S314:第一工作节点将缓冲区域分为数据区域和索引区域。
数据区域是指用于存储中间数据的区域,索引区域是指用于存储中间数据的元数据的区域。第一工作节点执行map任务时,map任务可以将缓冲区域分为数据区域和索引区域。其中,索引区域可以为读写数据区域中的相应数据提供帮助。
第一工作节点执行的map任务在划分缓冲区域时,可以设置定长的索引区域。例如索引区域记录的元数据包括每个分区(partition)写入到缓冲区域的中间数据的数据量时,则可以设置索引区域的大小为4*P比特。其中,每个分区使用4bit记录数据量,P为分区数量。分区数量可以根据reduce任务的数量确定,例如可以等于reduce任务的数量。
第一工作节点执行的map任务在划分缓冲区域时,也可以设置非定长的索引区域。例如,数据区域和索引区域可以分别从不同方向写入数据。假设缓冲区域的起始地址为1,终止地址为1000,则数据区域可以为1至x的区域,索引区域为x+1至1000的区域,x为可调整的整数。
S316:第一工作节点将map任务产生的中间数据写入数据区域,并更新索引区域的元数据。
第一工作节点执行map任务时,map任务可以将中间数据写入数据区域,并根据写入的中间数据更新索引区域的元数据。需要说明的是,本申请实施例提供了多种写入机制,下面分别对不同写入机制进行示例说明。
第一种写入机制,缓冲区域分为数据区域和索引区域。该数据区域用于存储中间数据,索引区域用于存储中间数据中每个分区写入数据区域的数据量。该实施中,数据区域和索引区域的长度可以是固定的。假设每个分区采用4比特记录,分区数量为P,则索引区域大小为4*P比特。假设缓冲区域大小为M比特,则数据区域大小可以为M-4*P比特。
其中,数据区域可以根据不同的哈希值分为多个子区域。子区域的划分方式可以根据需求设置,例如可以采用等比划分的方式划分多个子区域。第一工作节点在写入中间数据时,可以根据中间数据中每个分区的数据的分区标识确定哈希值。例如,第一工作节点可以将分区标识代入散列函数,获得哈希值。然后第一工作节点可以根据哈希值确定写入中间数据的子区域,将该中间数据写入上述子区域。接着第一工作节点可以将中间数据中每个分区写入数据区域的数据量写入索引区域。
为了提高子区域的存储空间利用率,归属于这两个分区的中间数据可以采用双向写方式写入子区域。具体地,两个分区包括第一分区和第二分区,归属于第一分区的中间数据可以按照缓冲区域的地址由低到高的方向写入子区域,归属于第二分区的中间数据可以按照缓冲区域的地址由高到低的方向写入子区域。
具体请参见图4所示的一种写入机制示意图,缓冲区域包括数据区域402和索引区域404,其中,数据区域402包括多个子区域4021。该示例中,分区数量可以为10,假设10个分区的分区标识分别为0至9,记作P0至P9,子区域数量可以为5,每个子区域用于存储两个分区的中间数据。例如,子区域1可以用于存储P0和P1的中间数据,子区域2可以用于存储P2和P3的中间数据,以此类推,在此不再赘述。为了提升存储空间利用率,第一工作节点可以采用双向写的方式向子区域写入两个分区的数据。例如,P0、P2等分区的中间数据可以从缓冲区域的地址由低到高的方向写入相应的子区域,P1和P3等分区的中间数据可以从地址由高到低的方向写入相应的子区域。
在一些实施例中,第一工作节点也可以对每个分区标识分别哈希,例如是将0至10分别除以5,然后取余,可以得到各分区对应的哈希值,例如P0、P5对应的哈希值可以为0,P1、P6的哈希值可以为1,P2、P7对应的哈希值可以为2,P3、P8的哈希值可以为3,P4、P9的哈希值可以为4,基于此,第一工作节点可以将P0和P5的中间数据写入子区域1,P1和P6的中间数据写入子区域2,P2和P7的中间数据写入子区域3,P3和P8的中间数据写入子区域4,P4和P9的中间数据写入子区域5。其中,写入同一子区域的两个分区的中间数据可以采用双向写的方式。
第二种写入机制,缓冲区域分为数据区域和索引区域。其中,数据区域不区分分区。数据区域用于存储中间数据及其长度,例如是所述中间数据中每条数据序列化后的长度以及每条数据的序列化数据。例如,map任务在写入中间数据时,可以按照如下格式追加写入:(length,k,v)。其中,length为中间数据序列化后的长度,k、v为中间数据序列化之后的键值对数据。所述索引区域用于存储中间数据中每条数据归属分区的分区标识以及每条数据在数据区域的偏移。例如,map任务可以按照如下格式在索引区域以追加写入方式写入元数据:(partitionId,dataPosition)。其中,partitionId表征数据标识,dataPosition表征中间数据在数据区域的偏移。
类似地,为了提高存储空间的利用率,中间数据以及元数据可以采用双向写方式写入。例如,中间数据及其长度可以按照缓冲区域的地址由低到高的方向写入数据区域,分区标识及偏移据可以按照缓冲区域的地址由高到低的方向写入索引区域。在一些实施例中,中间数据及其长度也可以按照缓冲区域的地址由高到低的方向写入所述数据区域,分区标识和偏移可以按照缓冲区域的地址由低到高的方向写入所述索引区域。
具体请参见图5所示的另一种写入机制示意图,缓冲区域包括数据区域502和索引区域504。数据区域502和索引区域504共享M比特存储空间。数据区域502和索引区域504大小不固定。map任务从缓冲区域的地址由低到高的方向追加写入中间数据及其长度,从缓冲区域的地址由高到低的方向追加写入分区标识和偏移。
S318:当缓冲区域不能写入,第一工作节点发送聚合任务至聚合节点30。
当采用第一种写入机制写入中间数据时,如果多个子区域中至少有一个子区域的剩余存储空间小于第一预设存储空间时,则该缓冲区域不能写入。当采用第二种写入机制写入中间数据时,缓冲区域的剩余存储空间小于第二预设存储空间时,则该缓冲区域不能写入。
其中,第一预设存储空间和第二预设存储空间可以根据经验值设置。第一预设存储空间不等于第二预设存储空间,例如第二预设存储空间可以大于第一预设存储空间。
聚合节点30对外暴露有数据聚合任务提交接口。当缓冲区域不能写入时,例如该缓冲区域写满时,第一工作节点可以根据该数据聚合任务提交接口,向聚合节点30提交聚合任务。
S320:聚合节点30执行聚合任务,将共享存储区域中属于相同分区的中间数据进行集中存储。
聚合节点30接收到聚合任务时,可以将该聚合任务指示的缓冲区域中的中间数据拷贝到各分区对应的存储区域,以将属于相同分区的中间数据进行集中存储。具体地,聚合节点30可以根据分区标识,将中间数据中具有相同分区标识的数据进行集中存储,从而实现对中间数据进行聚合。
需要说明的是,聚合节点30还可以通过异步方式对中间数据进行集中存储。例如,聚合节点30可以将聚合任务添加至队列。相应地,缓冲区域中的中间数据可以被删除,以支持第一工作节点写入新的中间数据。聚合节点30则可以按照先进先出的顺序从队列中取出聚合任务,将聚合任务指示的中间数据拷贝到各分区对应的存储区域,从而实现将属于相同分区的中间数据进行集中存储。
聚合节点30采用异步方式对中间数据进行集中存储,可以提升数据写入效率以及资源利用率。而且该方法无需锁机制进行并发控制,进一步提升了数据写入效率,满足了业务需求。
为了便于理解,本申请实施例还提供了一示例对数据聚合过程进行说明。参见图6所示的数据聚合的流程示意图,大数据应用触发数据处理请求,该数据处理请求可以被拆分为map任务和reduce任务,map任务可以对输入数据进行map处理产生中间数据,并将该中间数据写入缓冲区域。其中,该中间数据可以被划分为多个分区。该实施例中假定中间数据被划分为两个分区。该缓冲区域包括数据区域和索引区域,其中,两个分区的数据通过双向写的方式写入数据区域。图6采用两种不同图案表示归属于两个不同分区的中间数据,采用空白图案表示索引区域中的元数据,例如是每个分区写入数据区域的数据量。
当缓冲区域写满时,第一工作节点可以提交聚合任务,聚合节点30可以执行上述聚合任务,将缓冲区域中归属于相同分区的中间数据集中存储。
需要说明的是,map任务如果还有未处理的中间数据,则该map任务还可以继续申请一段缓冲区域,以用于写入上述未处理的中间数据,并对缓冲区域中归属于相同分区的中间数据集中存储。其中,申请缓冲区域,以及写入未处理的中间数据,对归属于相同分区的中间数据集中存储的具体实现可以参见上文相关内容描述,在此不再赘述。
S322:第二工作节点获取对应分区的中间数据,以执行归约任务。
具体地,第二工作节点执行reduce任务时,该reduce任务可以读取对应分区的中间数据,进行reduce处理,例如是通过reduce函数进行处理,从而获得处理结果。其中,每个reduce任务对一个分区的中间数据进行处理,获得处理结果的部分。每个reduce任务获得的处理结果的部分可以用于形成完整的处理结果。
在一些可能的实现方式中,reduce任务可以在所有map任务产生的中间数据按照所属分区集中存储完成后,启动读取对应分区的中间数据的操作。其中,第二工作节点中的每个工作节点20上的reduce任务可以并发读取对应分区的中间数据。
在另一些可能的实现方式中,第二工作节点上的reduce任务也可以在聚合节点30对中间数据按照所属分区进行集中存储的过程中,读取相应分区的中间数据,如此可以节省等待中间数据集中存储完成的时间,提高reduce任务获取中间数据的效率。
在图3所示实施例中,S314至S316为本申请实施例中map任务写入中间数据至缓冲区域的一种实现方式,在本申请实施例其他可能的实现方式中,也可以通过其他方式写入中间数据。S318至S320为本申请实施例中将共享存储区域中归属于相同分区的中间数据集中存储的一种实现方式,在本申请实施例中,也可通过其他方式实现。本申请实施例对此不作限定。
基于上述内容描述,本申请实施例提供了一种数据处理的方法。该方法通过将执行map任务产生的中间数据写入共享存储区域,并将共享存储区域中归属于相同分区的中间数据集中存储,使得reduce任务可以在需要使用中间数据时拉取相应分区后的中间数据,提升了reduce任务拉取数据的效率。而且传输各分区的中间数据,可以减少传输次数、增大传输尺寸,因而可以充分发挥网络性能,避免请求次数过多导致网络拥塞和丢包,进而避免reduce任务故障重试,保障了大数据应用的处理性能。
上文对本申请实施例提供的数据处理的方法进行了详细介绍,下面将结合附图对本申请实施例提供的分布式系统进行介绍。
参见图2所示的分布式系统的结构示意图,该系统100包括:主节点10、多个工作节点20及聚合节点30;
所述主节点10,用于将待处理的数据处理请求拆分为映射任务及归约任务;
所述多个工作节点20中的第一工作节点,用于执行所述映射任务,并将执行所述映射任务得到中间数据写入共享存储区域40,所述中间数据根据第二工作节点的数量被划分为多个分区,每个分区归属于一个第二工作节点;
所述聚合节点30,用于将所述共享存储区域40中归属于相同分区的中间数据集中存储;
所述第二工作节点,用于获取对应分区的中间数据以执行所述归约任务。
其中,主节点10用于执行图3所示实施例中的S304,第一工作节点用于执行图3所示实施例中的S308至S316,聚合节点30用于执行图3所示实施例中的S320,第二工作节点用于执行图3所示实施例中的322。
上述主节点10、工作节点20(包括第一工作节点、第二工作节点)、聚合节点30可以通过执行相应的功能模块,以执行上述方法步骤。本申请实施例实现数据拉取效率提升的关键在于聚合节点30,下面结合附图对聚合节点30的结构进行说明。
参见图7所示的聚合节点30的结构示意图,聚合节点30可以包括如下功能模块:
中间数据读写模块702,用于提供缓冲区域申获取接口以及数据聚合任务提交接口,其中缓冲区域获取接口用于申请缓冲区域,以及从缓冲区域读写数据;
中间数据聚合模块704,用于将共享存储区域40中归属于相同分区的中间数据集中存储。
其中,中间数据聚合模块704可以负责聚合任务的处理。具体地,中间数据聚合模块704可以维护聚合任务的队列,当接收到聚合任务时,可以将其加入队列,然后根据一定顺序,例如是先进先出的顺序,取出聚合任务,将聚合任务包括的缓冲区域中的中间数据拷贝到对应分区,从而实现将共享存储区域40中归属于相同分区的中间数据集中存储。
可选地,聚合节点30还可以包括元数据记录模块706,元数据记录模块706用于记录写入共享存储区域40的中间数据的元数据,该元数据可以包括分区标识、偏移或者数据量等等。
在一些可能的实现方式中,所述第一工作节点具体用于:
向所述聚合节点30申请所述共享存储区域40中的一段缓冲区域;
将所述中间数据写入所述缓冲区域;
所述第一工作节点还用于:
当所述缓冲区域中不能写入,发送聚合任务至所述聚合节点30;
所述聚合节点30具体用于:
执行所述聚合任务,将所述共享存储区域中归属于相同分区的中间数据集中存储。
其中,第一工作节点还用于执行图3所示实施例中的S310、S318,聚合节点30用于执行图3所示实施例中的S320,具体实现过程参见图3所示实施例中相关内容描述,在此不再赘述。
在一些可能的实现方式中,所述中间数据中每个分区的数据具有分区标识;所述聚合节点30具体用于:
根据所述分区标识,将所述中间数据中具有相同分区标识的数据进行集中存储。
其中,聚合节点30用于执行图3所示实施例中的S320,具体实现过程参见图3所示实施例中相关内容描述,在此不再赘述。
在一些可能的实现方式中,所述缓冲区域包括数据区域和索引区域,所述数据区域用于存储所述中间数据,所述索引区域用于存储所述中间数据中每个分区写入所述数据区域的数据量,所述数据区域根据不同的哈希值划分为多个子区域;
所述第一工作节点具体用于:
根据所述中间数据中每个分区的数据的分区标识确定哈希值;
根据所述哈希值确定写入所述中间数据的子区域;
将所述中间数据写入所述子区域;
将所述中间数据中每个分区写入所述数据区域的数据量写入所述索引区域。
其中,第一工作节点用于执行图3所示实施例中的S314、S316,具体实现过程参见图3所示实施例中相关内容描述,在此不再赘述。
在一些可能的实现方式中,至少一个子区域用于存储归属于两个分区的中间数据,其中,归属于第一分区的中间数据按照缓冲区域的地址由低到高的方向被写入所述子区域,归属于第二分区的中间数据按照缓冲区域的地址由高到低的方向被写入所述子区域。
在一些可能的实现方式中,所述缓冲区域包括数据区域和索引区域,所述数据区域用于存储所述中间数据及其长度,所述索引区域用于存储所述中间数据中每条数据归属分区的分区标识以及每条数据在所述数据区域的偏移。
在一些可能的实现方式中,所述中间数据及其长度按照缓冲区域的地址由低到高的方向写入所述数据区域,所述分区标识和所述偏移按照缓冲区域的地址由高到低的方向写入所述索引区域;或者,所述中间数据及其长度按照缓冲区域的地址由高到低的方向写入所述数据区域,所述分区标识和所述偏移按照缓冲区域的地址由低到高的方向写入所述索引区域。
根据本申请实施例的分布式系统100可对应于执行本申请实施例中描述的方法,并且分布式系统100的各个组成部分的上述和其它操作和/或功能分别为了实现图3所示实施例中的各个方法的相应流程,为了简洁,在此不再赘述。
本申请实施例还提供了一种计算机集群。该计算机集群用于实现图2所示的分布式系统的功能。下面结合附图,对计算机集群的硬件架构进行介绍。
参见图8所示的计算机集群的结构示意图,该计算机集群80包括至少一台计算机800。图8以包括多台计算机进行示例说明。该计算机800可以是笔记本电脑、台式机等端侧设备,也可以是云环境或边缘环境中的服务器等设备。
如图8所示,计算机800包括总线801、处理器802、通信接口803和存储器804。其中,处理器801、存储器802、通信接口803通过总线804进行通信,也可以通过无线传输等其他手段实现通信。该存储器802用于存储指令,该处理器801用于执行该存储器802存储的指令,执行以下操作:
将待处理的数据处理请求拆分为映射任务及归约任务;
执行所述映射任务,并将执行所述映射任务得到中间数据写入共享存储区域,所述中间数据根据第二工作节点的数量被划分为多个分区,每个分区归属于一个第二工作节点;
将所述共享存储区域中归属于相同分区的中间数据集中存储;
获取对应分区的中间数据以执行所述归约任务。
其中,上述操作可以由不同处理器801执行,也可以由相同处理器801执行,本实施例对此不作限定。
应理解,在本申请实施例中,该处理器801可以是中央处理单元(centralprocessing unit,CPU),该处理器801还可以是其他通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立器件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
该存储器802可以包括只读存储器和随机存取存储器,并向处理器801提供指令和数据。存储器802还可以包括非易失性随机存取存储器。该存储器802可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。
其中,非易失性存储器可以是只读存储器、可编程只读存储器、可擦除可编程只读存储器、电可擦除可编程只读存储器或闪存。易失性存储器可以是随机存取存储器,其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(randomaccess memory,RAM)可用,例如静态随机存取存储器、动态随机存取存储器、同步动态随机存取存储器、双倍数据速率同步动态随机存取存储器、增强型同步动态随机存取存储器、同步连接动态随机存取存储器和直接内存总线随机存取存储器。
该通信接口803用于与计算机800连接的其它设备进行通信。该总线804除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线804。
应理解,根据本申请实施例的计算机集群80可对应于本申请实施例中的分布式系统100,并可以对应于执行根据本申请实施例中图3所示方法中的相应主体,并且计算机集群80所实现的上述和其它操作和/或功能分别为了实现图3中的各个方法的相应流程,为了简洁,在此不再赘述。
此外,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机或计算机集群上运行时,使得计算机或计算机集群执行上述实施例所述的方法。
本申请实施例还提供了一种计算机程序产品,所述计算机程序产品被计算机或计算机集群执行时,所述计算机或计算机集群执行前述数据处理的方法的任一方法。该计算机程序产品可以为一个软件安装包,在需要使用前述数据处理的方法的任一方法的情况下,可以下载该计算机程序产品并在计算机上执行该计算机程序产品。
另外需说明的是,以上所描述的系统、装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的系统、装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、只读存储器(read-only memory,ROM)、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
Claims (14)
1.一种分布式系统中数据处理的方法,其特征在于,所述分布式系统包括管理节点、多个工作节点及聚合节点,所述方法包括:
所述管理节点将待处理的数据处理请求拆分为映射任务及归约任务;
所述多个工作节点中的第一工作节点执行所述映射任务,并将执行所述映射任务得到中间数据写入共享存储区域,所述中间数据根据第二工作节点的数量被划分为多个分区,每个分区归属于一个第二工作节点;
所述聚合节点将所述共享存储区域中归属于相同分区的中间数据集中存储;
所述第二工作节点获取对应分区的中间数据以执行所述归约任务。
2.根据权利要求1所述的方法,其特征在于,所述第一工作节点将执行所述映射任务得到中间数据写入共享存储区域,包括:
所述第一工作节点向所述聚合节点申请所述共享存储区域中的一段缓冲区域;
所述第一工作节点将所述中间数据写入所述缓冲区域;
所述方法还包括:
当所述缓冲区域中不能写入,所述第一工作节点发送聚合任务至所述聚合节点;
所述聚合节点将所述共享存储区域中归属于相同分区的中间数据集中存储包括:
所述聚合节点执行所述聚合任务,将所述共享存储区域中归属于相同分区的中间数据集中存储。
3.根据权利要求1或2所述的方法,其特征在于,所述中间数据中每个分区的数据具有分区标识;所述聚合节点将所述共享存储区域中归属于相同分区的中间数据集中存储,包括:
所述聚合节点根据所述分区标识,将所述中间数据中具有相同分区标识的数据进行集中存储。
4.根据权利要求2所述的方法,其特征在于,所述缓冲区域包括数据区域和索引区域,所述数据区域用于存储所述中间数据,所述索引区域用于存储所述中间数据中每个分区写入所述数据区域的数据量,所述数据区域根据不同的哈希值划分为多个子区域;
所述第一工作节点将所述中间数据写入所述缓冲区域,包括:
根据所述中间数据中每个分区的数据的分区标识确定哈希值;
根据所述哈希值确定写入所述中间数据的子区域;
将所述中间数据写入所述子区域;
将所述中间数据中每个分区写入所述数据区域的数据量写入所述索引区域。
5.根据权利要求4所述的方法,其特征在于,至少一个子区域用于存储归属于两个分区的中间数据,其中,归属于第一分区的中间数据按照缓冲区域的地址由低到高的方向被写入所述子区域,归属于第二分区的中间数据按照缓冲区域的地址由高到低的方向被写入所述子区域。
6.根据权利要求2所述的方法,其特征在于,所述缓冲区域包括数据区域和索引区域,所述数据区域用于存储所述中间数据及其长度,所述索引区域用于存储所述中间数据中每条数据归属分区的分区标识以及每条数据在所述数据区域的偏移。
7.根据权利要求6所述的方法,其特征在于,所述中间数据及其长度按照缓冲区域的地址由低到高的方向写入所述数据区域,所述分区标识和所述偏移按照缓冲区域的地址由高到低的方向写入所述索引区域;或者,所述中间数据及其长度按照缓冲区域的地址由高到低的方向写入所述数据区域,所述分区标识和所述偏移按照缓冲区域的地址由低到高的方向写入所述索引区域。
8.一种分布式系统,其特征在于,所述分布式系统包括管理节点、多个工作节点及聚合节点;
所述管理节点,用于将待处理的数据处理请求拆分为映射任务及归约任务;
所述多个工作节点中的第一工作节点,用于执行所述映射任务,并将执行所述映射任务得到中间数据写入共享存储区域,所述中间数据根据第二工作节点的数量被划分为多个分区,每个分区归属于一个第二工作节点;
所述聚合节点,用于将所述共享存储区域中归属于相同分区的中间数据集中存储;
所述第二工作节点,用于获取对应分区的中间数据以执行所述归约任务。
9.根据权利要求8所述的系统,其特征在于,所述第一工作节点具体用于:
向所述聚合节点申请所述共享存储区域中的一段缓冲区域;
将所述中间数据写入所述缓冲区域;
所述第一工作节点还用于:
当所述缓冲区域中不能写入,发送聚合任务至所述聚合节点;
所述聚合节点具体用于:
执行所述聚合任务,将所述共享存储区域中归属于相同分区的中间数据集中存储。
10.根据权利要求8或9所述的系统,其特征在于,所述中间数据中每个分区的数据具有分区标识;所述聚合节点具体用于:
根据所述分区标识,将所述中间数据中具有相同分区标识的数据进行集中存储。
11.根据权利要求9所述的系统,其特征在于,所述缓冲区域包括数据区域和索引区域,所述数据区域用于存储所述中间数据,所述索引区域用于存储所述中间数据中每个分区写入所述数据区域的数据量,所述数据区域根据不同的哈希值划分为多个子区域;
所述第一工作节点具体用于:
根据所述中间数据中每个分区的数据的分区标识确定哈希值;
根据所述哈希值确定写入所述中间数据的子区域;
将所述中间数据写入所述子区域;
将所述中间数据中每个分区写入所述数据区域的数据量写入所述索引区域。
12.根据权利要求11所述的系统,其特征在于,至少一个子区域用于存储归属于两个分区的中间数据,其中,归属于第一分区的中间数据按照缓冲区域的地址由低到高的方向被写入所述子区域,归属于第二分区的中间数据按照缓冲区域的地址由高到低的方向被写入所述子区域。
13.根据权利要求9所述的系统,其特征在于,所述缓冲区域包括数据区域和索引区域,所述数据区域用于存储所述中间数据及其长度,所述索引区域用于存储所述中间数据中每条数据归属分区的分区标识以及每条数据在所述数据区域的偏移。
14.根据权利要求13所述的系统,其特征在于,所述中间数据及其长度按照缓冲区域的地址由低到高的方向写入所述数据区域,所述分区标识和所述偏移按照缓冲区域的地址由高到低的方向写入所述索引区域;或者,所述中间数据及其长度按照缓冲区域的地址由高到低的方向写入所述数据区域,所述分区标识和所述偏移按照缓冲区域的地址由低到高的方向写入所述索引区域。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111076633.7A CN115809015A (zh) | 2021-09-14 | 2021-09-14 | 分布式系统中数据处理的方法以及相关系统 |
EP22868725.7A EP4390646A1 (en) | 2021-09-14 | 2022-05-30 | Data processing method in distributed system, and related system |
PCT/CN2022/095934 WO2023040348A1 (zh) | 2021-09-14 | 2022-05-30 | 分布式系统中数据处理的方法以及相关系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111076633.7A CN115809015A (zh) | 2021-09-14 | 2021-09-14 | 分布式系统中数据处理的方法以及相关系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115809015A true CN115809015A (zh) | 2023-03-17 |
Family
ID=85481556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111076633.7A Pending CN115809015A (zh) | 2021-09-14 | 2021-09-14 | 分布式系统中数据处理的方法以及相关系统 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4390646A1 (zh) |
CN (1) | CN115809015A (zh) |
WO (1) | WO2023040348A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117437064A (zh) * | 2023-12-18 | 2024-01-23 | 凯美瑞德(苏州)信息科技股份有限公司 | 处理金融数据的方法、装置、电子设备及计算机可读介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006091966A (ja) * | 2004-09-21 | 2006-04-06 | Matsushita Electric Ind Co Ltd | メモリ制御装置 |
US8510538B1 (en) * | 2009-04-13 | 2013-08-13 | Google Inc. | System and method for limiting the impact of stragglers in large-scale parallel data processing |
CN103327128A (zh) * | 2013-07-23 | 2013-09-25 | 百度在线网络技术(北京)有限公司 | 用于MapReduce的中间数据传输方法及系统 |
EP3376399A4 (en) * | 2015-12-31 | 2018-12-19 | Huawei Technologies Co., Ltd. | Data processing method, apparatus and system |
CN111857538A (zh) * | 2019-04-25 | 2020-10-30 | 北京沃东天骏信息技术有限公司 | 数据处理方法、装置及存储介质 |
-
2021
- 2021-09-14 CN CN202111076633.7A patent/CN115809015A/zh active Pending
-
2022
- 2022-05-30 EP EP22868725.7A patent/EP4390646A1/en active Pending
- 2022-05-30 WO PCT/CN2022/095934 patent/WO2023040348A1/zh active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117437064A (zh) * | 2023-12-18 | 2024-01-23 | 凯美瑞德(苏州)信息科技股份有限公司 | 处理金融数据的方法、装置、电子设备及计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023040348A1 (zh) | 2023-03-23 |
EP4390646A1 (en) | 2024-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8381230B2 (en) | Message passing with queues and channels | |
KR20200027413A (ko) | 데이터 저장 방법, 장치 및 시스템 | |
US8356050B1 (en) | Method or system for spilling in query environments | |
TW201220197A (en) | for improving the safety and reliability of data storage in a virtual machine based on cloud calculation and distributed storage environment | |
WO2013078583A1 (zh) | 优化数据访问的方法及装置、优化数据存储的方法及装置 | |
CN111797096A (zh) | 基于ElasticSearch的数据索引方法、装置、计算机设备及存储介质 | |
US10884980B2 (en) | Cognitive file and object management for distributed storage environments | |
CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
CN107408132B (zh) | 跨越多个类型的存储器移动分层数据对象的方法和系统 | |
WO2023231336A1 (zh) | 执行交易的方法和区块链节点 | |
JP2781092B2 (ja) | システム間排他制御方式 | |
US11157456B2 (en) | Replication of data in a distributed file system using an arbiter | |
US8543722B2 (en) | Message passing with queues and channels | |
WO2023040348A1 (zh) | 分布式系统中数据处理的方法以及相关系统 | |
CN110781159A (zh) | Ceph目录文件信息读取方法、装置、服务器及存储介质 | |
CN112148467A (zh) | 计算资源的动态分配 | |
WO2024021808A1 (zh) | 数据查询请求的处理方法、装置、设备及存储介质 | |
CN111930684A (zh) | 基于hdfs的小文件处理方法、装置、设备及存储介质 | |
WO2016187831A1 (zh) | 存取文件的方法、装置和存储系统 | |
US9405470B2 (en) | Data processing system and data processing method | |
CN114116656B (zh) | 数据处理方法及相关装置 | |
WO2023273564A1 (zh) | 虚拟机内存管理方法、装置、存储介质及电子设备 | |
US20240220334A1 (en) | Data processing method in distributed system, and related system | |
US10509578B2 (en) | Logical address space for storage resource pools | |
US11226778B2 (en) | Method, apparatus and computer program product for managing metadata migration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |