CN114237510A - 数据处理方法、装置、电子设备及存储介质 - Google Patents
数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114237510A CN114237510A CN202111553404.XA CN202111553404A CN114237510A CN 114237510 A CN114237510 A CN 114237510A CN 202111553404 A CN202111553404 A CN 202111553404A CN 114237510 A CN114237510 A CN 114237510A
- Authority
- CN
- China
- Prior art keywords
- shuffle
- value data
- task
- node
- key value
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 311
- 238000005192 partition Methods 0.000 claims abstract description 179
- 238000013507 mapping Methods 0.000 claims abstract description 128
- 238000000034 method Methods 0.000 claims abstract description 65
- 230000009467 reduction Effects 0.000 claims abstract description 52
- 230000008569 process Effects 0.000 claims abstract description 28
- 238000004364 calculation method Methods 0.000 claims abstract description 24
- 230000002085 persistent effect Effects 0.000 claims description 18
- 230000002688 persistence Effects 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 6
- 230000002776 aggregation Effects 0.000 claims description 5
- 238000004220 aggregation Methods 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 abstract description 5
- 238000007726 management method Methods 0.000 description 150
- 230000007246 mechanism Effects 0.000 description 30
- 238000010586 diagram Methods 0.000 description 14
- 230000002159 abnormal effect Effects 0.000 description 10
- 238000012163 sequencing technique Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 239000003638 chemical reducing agent Substances 0.000 description 3
- 230000004931 aggregating effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 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
- 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/0643—Management of files
-
- 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/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开关于一种数据处理方法、装置、电子设备及存储介质;所述方法包括:当映射任务对任务进行处理得到与分区对应的键值数据时,通过与映射任务相对应的混洗写入节点将键值数据发送至混洗处理节点;通过混洗处理节点聚合相同分区下的键值数据,将与分区对应的键值数据持久化至文件系统;通过混洗读取节点从文件系统中读取得到与分区对应的键值数据,将键值数据发送至计算引擎的归约任务,其中,混洗写入节点、混洗处理节点和混洗读取节点分别为独立封装于计算引擎之外的节点。根据本公开的方案,将相关技术中各个归约任务至各个映射任务的随机小IO请求进行聚合,极大地减少了IO请求的数量,从而可以减少磁盘压力,进而能够提升混洗效率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据处理方法、装置、电子设备、计算机可读存储介质、计算机程序产品。
背景技术
随着计算机技术的发展,企业内部的计算引擎,如Mapreduce(一种映射归约模型)、Spark(一种计算引擎)等作业存在shuffle(混洗)机制。混洗机制承担任务中MapTask(映射任务)、ReduceTask(归约任务)之间的数据传输,其涉及了磁盘和网络传输,混洗性能高低影响到作业的运行效率。
相关技术中,计算引擎中的每个Map(映射)节点会在本地输出按照partitioin(分区)聚合的中间文件。而在混洗过程中,每个Reducer(归约)节点会与所有映射节点的混洗服务建立连接,从所有映射节点输出的中间文件中拉取自身所属分区下的中间文件。也就是说,一个作业会产生M*R次随机小IO(输入输出)请求。其中,M为映射节点的数量,R为归约节点的数量。但是,由于IO请求的数量较多,容易导致磁盘压力大、磁盘带宽低,进而影响混洗效率。
发明内容
本公开提供一种数据处理方法、装置、电子设备、计算机可读存储介质、计算机程序产品,以至少解决相关技术中的混洗机制中,IO请求的数量较多,容易导致磁盘压力大、磁盘带宽低,进而影响混洗效率的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种数据处理方法,所述方法包括:
在计算引擎启动任务后,当所述计算引擎侧的映射任务对所述任务进行处理得到与分区对应的键值数据时,通过与所述映射任务相对应的混洗写入节点将所述键值数据发送至混洗处理节点;
通过所述混洗处理节点聚合相同分区下的键值数据,将与所述分区对应的键值数据持久化至文件系统;
通过混洗读取节点从所述文件系统中读取得到与所述分区对应的键值数据,将与所述分区对应的键值数据发送至所述计算引擎侧的归约任务,其中,所述混洗写入节点、所述混洗处理节点和所述混洗读取节点分别为独立封装于所述计算引擎之外的节点。
在其中一个实施例中,所述通过与所述映射任务相对应的混洗写入节点将所述键值数据发送至混洗处理节点,包括:
通过与所述映射任务相对应的混洗写入节点向所述混洗处理节点发送数据写入请求,所述数据写入请求携带当前处理得到的所述键值数据以及当前的第一记录标识,所述第一记录标识随着数据写入请求的增加而增加;
通过所述混洗处理节点将当前的所述第一记录标识与所述混洗处理节点中当前的第二记录标识进行比较,所述第二记录标识随着所述混洗处理节点接收到的键值数据的增加而增加;
当确定当前的所述第一记录标识与所述第二记录标识一致时,通过所述混洗处理节点接受所述键值数据。
在其中一个实施例中,所述方法还包括:
当确定当前的所述第一记录标识与所述第二记录标识不一致时,通过所述混洗处理节点将当前的所述第二记录标识发送至所述混洗写入节点;
通过所述混洗写入节点将当前的所述第一记录标识更新为当前的所述第二记录标识,并重新向所述混洗处理节点发送所述数据写入请求。
在其中一个实施例中,所述数据写入请求还携带第三记录标识,所述第三记录标识为所述混洗写入节点记录的、用于表示已持久化至文件系统的键值数据;所述方法还包括:
通过所述混洗处理节点响应于所述数据写入请求,获取第四记录标识,所述第四记录标识为所述混洗处理节点记录的、用于表示已持久化至所述文件系统的键值数据;
当通过所述混洗处理节点确定所述第三记录标识与所述第四记录标识不一致时,指示所述混洗写入节点将当前的所述第一记录标识更新为所述第三记录标识,并重新向所述混洗处理节点发送所述数据写入请求。
在其中一个实施例中,所述将与所述分区对应的键值数据持久化至文件系统,包括:
针对每个所述分区下的键值数据,通过所述混洗处理节点确定每个所述键值数据对应的数据标识,所述数据标识用于表示每个所述键值数据与所述映射任务之间的唯一性的关联关系;
通过所述混洗处理节点按照所述数据标识对每个所述分区下的键值数据进行排序,将与所述分区对应的排序后的键值数据持久化至所述文件系统。
在其中一个实施例中,在所述将与所述分区对应的键值数据发送至对应的所述归约任务之前,还包括:
通过所述混洗读取节点获取对所述任务进行处理失败的目标映射任务,根据所述数据标识,从所述分区对应的键值数据中确定与所述目标映射任务相对应的第一键值数据,删除所述第一键值数据;
所述将与所述分区对应的键值数据发送至所述计算引擎侧的归约任务,包括:
将与所述分区对应的删除后的所述键值数据发送至所述计算引擎侧的归约任务。
在其中一个实施例中,在所述将与所述分区对应的键值数据发送至所述计算引擎侧的归约任务之前,还包括:
通过所述混洗读取节点比较所述分区下的各个键值数据的数据标识,当存在不同的键值数据具有相同的数据标识时,对所述分区下的键值数据进行去重处理;
所述将与所述分区对应的键值数据发送至所述计算引擎侧的归约任务,包括:
将所述分区对应的去重处理后的键值数据发送至所述计算引擎侧的归约任务。
在其中一个实施例中,所述将与所述分区对应的键值数据持久化至文件系统,包括:
通过所述混洗处理节点从第一全局管理组件处获取所述任务的元信息,运行与所述元信息相对应的排序逻辑,以对所述分区对应的键值数据进行排序,所述元信息是在所述任务启动后注册至所述第一全局管理组件中的,所述第一全局管理组件为独立封装于所述计算引擎之外的组件;
将与所述分区对应的排序后的键值数据持久化至所述文件系统。
在其中一个实施例中,所述混洗处理节点包括第一类加载器;所述元信息包括第一存储路径;
所述运行与所述元信息相对应的排序逻辑,包括:
通过所述第一类加载获取存储于所述第一存储路径中的排序逻辑文件包,所述第一存储路径是在启动所述任务后,将与所述任务对应的排序逻辑文件包存储至所述文件系统得到的;
通过所述第一类加载器加载所述排序逻辑文件包,以运行所述排序逻辑。
在其中一个实施例中,所述混洗处理节点还包括第二类加载器;所述元信息还包括键类信息;在所述通过所述第一类加载获取存储于所述第一存储路径中的排序逻辑文件包之前,还包括:
通过所述第一类加载器确定所述第二类加载器中不存在与所述键类信息相对应的排序逻辑;
以及,在所述任务通过预设工具提交的情况下,通过所述第一类加载器确定所述第二类加载器中不存在与所述预设工具相对应的排序逻辑。
在其中一个实施例中,所述方法还包括:
在所述任务启动后,通过任务管理组件向第一全局管理组件发送所述任务的资源请求;
通过所述第一全局管理组件响应于所述资源请求,确定用于处理所述任务的混洗处理节点,建立所述任务的分区与所述混洗处理节点之间的映射关系,并将所述映射关系发送至所述任务管理组件,其中,所述任务管理组件和所述第一全局管理组件为独立封装于所述计算引擎之外的组件。
在其中一个实施例中,所述通过与所述映射任务相对应的混洗写入节点将所述键值数据发送至混洗处理节点,包括:
通过与所述映射任务相对应的混洗写入节点从所述任务管理组件处获取所述分区与所述混洗处理节点之间的映射关系;
按照所述映射关系,将与所述分区对应的键值数据发送至与所述分区对应的混洗处理节点。
在其中一个实施例中,所述方法还包括:
当通过所述第一全局管理组件确定所述混洗处理节点发生异常时,获取所述混洗处理节点的异常类型;
采用与所述异常类型相对应的异常处理方式,重新确定用于处理所述任务的新的混洗处理节点。
在其中一个实施例中,所述采用与所述异常类型相对应的异常处理方式,重新确定用于处理所述任务的新的混洗处理节点,包括:
当所述异常类型为第一类型时,等待预设时长后重新检测所述混洗处理节点的节点状态,当获取所述节点状态为正常时,继续使用所述混洗处理节点,所述第一类型为系统能够修复的异常类型;
当所述异常类型为第二类型时,重新确定与所述任务相对应的新的混洗处理节点,所述第二类型为所述系统不能够修复的异常类型。
在其中一个实施例中,所述方法还包括:
当监听到所述第一全局管理组件发生异常情况时,启动第二全局管理组件,所述第一全局管理组件与所述第二全局管理组件通过分布式系统管理;
将所述分布式系统中已注册的所述第一全局管理组件更新为所述第二全局管理组件,以切换至使用所述第二全局管理组件。
根据本公开实施例的第二方面,提供一种数据处理装置,所述装置包括:
发送模块,被配置为执行在计算引擎启动任务后,当所述计算引擎侧的映射任务对所述任务进行处理得到与分区对应的键值数据时,通过与所述映射任务相对应的混洗写入节点将所述键值数据发送至混洗处理节点;
持久化模块,被配置为执行通过所述混洗处理节点聚合相同分区下的键值数据,将与所述分区对应的键值数据持久化至文件系统;
读取模块,被配置为执行通过混洗读取节点从所述文件系统中读取得到与所述分区对应的键值数据,将与所述分区对应的键值数据发送至所述计算引擎侧的归约任务,其中,所述混洗写入节点、所述混洗处理节点和所述混洗读取节点分别为独立封装于所述计算引擎之外的节点。
在其中一个实施例中,所述发送模块,包括:
请求发送单元,被配置为执行通过与所述映射任务相对应的混洗写入节点向所述混洗处理节点发送数据写入请求,所述数据写入请求携带当前处理得到的所述键值数据以及当前的第一记录标识,所述第一记录标识随着数据写入请求的增加而增加;
比较单元,被配置为执行通过所述混洗处理节点将当前的所述第一记录标识与所述混洗处理节点中当前的第二记录标识进行比较,所述第二记录标识随着所述混洗处理节点接收到的键值数据的增加而增加;
接收单元,被配置为执行当确定当前的所述第一记录标识与所述第二记录标识一致时,通过所述混洗处理节点接收所述键值数据。
在其中一个实施例中,所述发送模块,还包括:
发送单元,被配置为执行当确定当前的所述第一记录标识与所述第二记录标识不一致时,通过所述混洗处理节点将当前的所述第二记录标识发送至所述混洗写入节点;
第一更新单元,被配置为执行通过所述混洗写入节点将当前的所述第一记录标识更新为当前的所述第二记录标识,并重新向所述混洗处理节点发送所述数据写入请求。
在其中一个实施例中,所述数据写入请求还携带第三记录标识,所述第三记录标识为所述混洗写入节点记录的、用于表示已持久化至文件系统的键值数据;所述发送模块,还包括:
标识获取单元,被配置为执行通过所述混洗处理节点响应于所述数据写入请求,获取第四记录标识,所述第四记录标识为所述混洗处理节点记录的、用于表示已持久化至所述文件系统的键值数据;
第二更新单元,被配置为执行当通过所述混洗处理节点确定所述第三记录标识与所述第四记录标识不一致时,指示所述混洗写入节点将当前的所述第一记录标识更新为所述第三记录标识,并重新向所述混洗处理节点发送所述数据写入请求。
在其中一个实施例中,所述持久化模块,包括:
标识确定单元,被配置为执行针对每个所述分区下的键值数据,通过所述混洗处理节点确定每个所述键值数据对应的数据标识,所述数据标识用于表示每个所述键值数据与所述映射任务之间的唯一性的关联关系;
第一排序单元,被配置为执行通过所述混洗处理节点按照所述数据标识对每个所述分区下的键值数据进行排序,将与所述分区对应的排序后的键值数据持久化至所述文件系统。
在其中一个实施例中,所述装置还包括:
第一去重模块,被配置为执行通过所述混洗读取节点获取对所述任务进行处理失败的目标映射任务,根据所述数据标识,从所述分区对应的键值数据中确定与所述目标映射任务相对应的第一键值数据,删除所述第一键值数据;
所述读取模块,还被配置为执行将与所述分区对应的删除后的所述键值数据发送至所述计算引擎侧的归约任务。
在其中一个实施例中,所述装置还包括:
第二去重模块,被配置为执行通过所述混洗读取节点比较所述分区下的各个键值数据的数据标识,当存在不同的键值数据具有相同的数据标识时,对所述分区下的键值数据进行去重处理;
所述读取模块,还被配置为执行将所述分区对应的去重处理后的键值数据发送至所述计算引擎侧的归约任务。
在其中一个实施例中,所述持久化模块,包括:
第二排序单元,被配置为执行通过所述混洗处理节点从第一全局管理组件处获取所述任务的元信息,运行与所述元信息相对应的排序逻辑,以对所述分区对应的键值数据进行排序,所述元信息是在所述任务启动后注册至所述第一全局管理组件中的,所述第一全局管理组件为独立封装于所述计算引擎之外的组件;
存储单元,被配置为执行将与所述分区对应的排序后的键值数据持久化至所述文件系统。
在其中一个实施例中,所述混洗处理节点包括第一类加载器;所述元信息包括第一存储路径;
所述第二排序单元,被配置为执行通过所述第一类加载获取存储于所述第一存储路径中的排序逻辑文件包,所述第一存储路径是在启动所述任务后,将与所述任务对应的排序逻辑文件包存储至所述文件系统得到的;通过所述第一类加载器加载所述排序逻辑文件包,以运行所述排序逻辑。
在其中一个实施例中,所述混洗处理节点还包括第二类加载器;所述元信息还包括键类信息;所述持久化模块,还包括:
预加载单元,被配置为执行通过所述第一类加载器确定所述第二类加载器中不存在与所述键类信息相对应的排序逻辑;
以及,在所述任务通过预设工具提交的情况下,通过所述第一类加载器确定所述第二类加载器中不存在与所述预设工具相对应的排序逻辑。
在其中一个实施例中,所述装置还包括:
请求发送模块,被配置为执行在所述任务启动后,通过任务管理组件向第一全局管理组件发送所述任务的资源请求;
资源配置模块,被配置为执行通过所述第一全局管理组件响应于所述资源请求,确定用于处理所述任务的混洗处理节点,建立所述任务的分区与所述混洗处理节点之间的映射关系,并将所述映射关系发送至所述任务管理组件,其中,所述任务管理组件和所述第一全局管理组件为独立封装于所述计算引擎之外的组件。
在其中一个实施例中,所述发送模块,包括:
关系获取单元,被配置为执行通过与所述映射任务相对应的混洗写入节点,从所述任务管理组件处获取所述分区与所述混洗处理节点之间的映射关系;
发送单元,被配置为执行按照所述映射关系,将与所述分区对应的键值数据发送至与所述分区对应的混洗处理节点。
在其中一个实施例中,所述装置还包括:
类型确定模块,被配置为执行当通过所述第一全局管理组件确定所述混洗处理节点发生异常时,获取所述混洗处理节点的异常类型;
第一异常处理模块,被配置为执行采用与所述异常类型相对应的异常处理方式,重新确定用于处理所述任务的新的混洗处理节点。
在其中一个实施例中,所述第一异常处理模块,被配置为执行当所述异常类型为第一类型时,等待预设时长后重新检测所述混洗处理节点的节点状态,当获取所述节点状态为正常时,继续使用所述混洗处理节点,所述第一类型为所述系统能够修复的异常类型;当所述异常类型为第二类型时,重新确定与所述任务相对应的新的混洗处理节点,所述第二类型为所述系统不能够修复的异常类型。
在其中一个实施例中,所述装置还包括:
第二异常处理模块,被配置为执行当监听到所述第一全局管理组件发生异常情况时,启动第二全局管理组件,所述第一全局管理组件与所述第二全局管理组件通过分布式系统管理;
组件切换模块,被配置为执行将所述分布式系统中已注册的所述第一全局管理组件更新为所述第二全局管理组件,以切换至使用所述第二全局管理组件。
根据本公开实施例的第三方面,提供一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现上述第一方面任一项实施例所述的数据处理方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行上述第一方面任一项实施例所述的数据处理方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,所述计算机程序产品中包括指令,所述指令被电子设备的处理器执行时,使得所述电子设备能够执行上述第一方面任一项实施例所述的数据处理方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
通过在计算引擎之外部署分别独立封装的混洗写入节点、混洗处理节点和混洗读取节点。在计算引擎启动任务后,当计算引擎侧的映射任务对任务进行处理得到与分区对应的键值数据时,通过与映射任务相对应的混洗写入节点将键值数据发送至混洗处理节点;通过混洗处理节点按照分区维度对所有映射任务产生的键值数据进行聚合,将聚合得到的与分区对应的键值数据持久化至文件系统;通过混洗读取节点从文件系统中读取得到与分区对应的键值数据,将与分区对应的键值数据发送至计算引擎侧的归约任务,将相关技术中各个归约任务至各个映射任务的随机小IO请求进行聚合,极大地减少了IO请求的数量,从而可以减少磁盘压力,进而能够提升混洗效率。此外,本公开实施例分别部署混洗写入节点和混洗读取节点,实现任务的计算和存储架构分离,使架构更易于部署,且减少了资源耗费。通过在计算引擎之外部署独立封装的节点,以解耦的方式最大限度地减少了对原生计算引擎代码的改造程度,具有较高的通用性,且便于部署和维护。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1示例性示出了一种相关技术与本公开实施例的数据处理方法的对比示意图。
图2是根据一示例性实施例示出的一种数据处理方法的应用环境图。
图3是根据一示例性实施例示出的一种数据处理方法的流程图。
图4是根据一示例性实施例示出的一种发送键值数据至混洗处理节点的流程示意图。
图5是根据一示例性实施例示出的一种发送键值数据至混洗处理节点的流程示意图。
图6是根据一示例性实施例示出的一种混洗处理节点的示意图。
图7是根据一示例性实施例示出的一种混洗处理节点的异常处理流程示意图。
图8是根据一示例性实施例示出的一种全局处理组件的异常处理流程示意图。
图9是根据一示例性实施例示出的一种数据处理方法的流程图。
图10是根据一示例性实施例示出的一种数据处理装置的框图。
图11是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
还需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
图1示例性示出了相关技术与本公开实施例的数据处理方法的对比示意图。
参照图1,相关技术中,计算引擎中的每个映射任务(Map)会在本地输出按照分区聚合的中间文件。在混洗过程中,每个归约任务(Reducer)会与所有映射任务建立连接,从所有映射任务输出的中间文件中,拉取归约任务自身所属分区下的中间文件。也就是说,一个任务会产生M*R次随机小IO(输入输出)请求,平均每个IO请求的文件大小为200KB(Kilobyte,千字节)。由于IO请求的数量较多,容易导致磁盘压力大、磁盘带宽低,进而影响混洗效率。
为了解决上述问题,本公开实施例在计算引擎之外部署混洗服务,混洗服务包括分别独立封装的混洗写入节点、混洗处理节点和混洗读取节点。通过混洗服务按照分区维度将M个映射任务输出的数据进行聚合处理,并将聚合后得到的与分区对应的数据持久化至文件系统中,从而使每个归约任务从文件系统获取自身对应的分区下的文件。也就是说,一个任务会产生R次IO请求,平均每个IO请求的文件大小从相关技术中的200KB增加至10MB(MByte,兆比特)。通过本公开的技术方案,能够极大地减少IO请求的数量,进而减轻网络和磁盘的压力。
在一示例性实施例中,本公开所提供的数据处理方法,可以应用于如图2所示的应用环境中。其中,终端210通过网络与服务器220进行交互。服务器220中部署有至少一种计算引擎,以及在至少一种计算引擎之外部署的混洗服务,混洗服务中包括分别独立封装的混洗写入节点、混洗处理节点和混洗读取节点。服务器220获取终端210上传的任务。在任务启动后,当通过服务器220中计算引擎侧的映射任务对任务进行处理,得到与分区对应的键值数据时,通过与映射任务相对应的混洗写入节点将键值数据发送至混洗处理节点。通过混洗处理节点聚合相同分区下的键值数据,将与分区对应的键值数据持久化至文件系统。通过混洗读取节点从文件系统中读取得到与分区对应的键值数据,将与分区对应的键值数据发送至计算引擎侧的归约任务。
其中,终端210可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、便携式可穿戴设备。便携式可穿戴设备可为智能手表、智能手环等。服务器220可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
图3是根据一示例性实施例示出的一种数据处理方法的流程图。如图3所示,数据处理方法包括以下步骤。
在步骤S310中,在计算引擎启动任务后,当计算引擎侧的映射任务对任务进行处理得到与分区对应的键值数据时,通过与映射任务相对应的混洗写入节点将键值数据发送至混洗处理节点。
一个实施例中,混洗写入节点可以与计算引擎侧的映射任务对应部署,与映射任务属于同一个进程,共享同一个JVM(Java Virtual Machine,Java虚拟机)。一个示例中,混洗写入节点可以作为SDK(Software Development Kit,软件开发工具包)嵌入在计算引擎侧的映射任务中。另一个实施例中,混洗写入节点和映射任务可以具备一一对应关系。一个示例中,计算引擎侧包括M个映射任务,则混洗服务中也可以包括至少M个混洗写入节点,且存在M个混洗写入节点与M个映射任务一一对应。
具体地,在计算引擎启动任务后,计算引擎侧的每个映射任务对任务进行处理,产生一系列的键值数据。对于每个映射任务输出的每个键值数据,可以通过计算每个键值的哈希值,然后采用归约任务的数量对哈希值进行取模得到每个键值数据的分区。每个映射任务将相同分区下的键值数据进行聚合,将聚合后的键值数据写入对应的混洗写入节点的本地缓冲寄存器(buffer)中。当本地缓冲寄存器中键值数据的数量达到阈值时,通过与各个映射任务对应的混洗写入节点,将本地缓冲寄存器中各个分区对应的键值数据发送至混洗处理节点。
在步骤S320中,通过混洗处理节点聚合相同分区下的键值数据,将与分区对应的键值数据持久化至文件系统。
其中,持久化是将键值数据在持久状态和瞬时状态间转换的机制,可以是指将键值数据(如缓冲寄存器中的键值数据)保存到可永久保存的存储设备中(如磁盘)。
具体地,混洗处理节点在接收到多个混洗写入节点发送的键值数据后,按照分区维度对多个混洗写入节点发送的键值数据进行聚合处理,得到与各个分区对应的键值数据。混洗处理节点将与各个分区相对应的键值数据持久化至文件系统(例如,HDFS,Hadoop分布式文件系统)。
在步骤S330中,通过混洗读取节点从文件系统中读取得到与分区对应的键值数据,将与分区对应的键值数据发送至计算引擎侧的归约任务。
一个实施例中,混洗读取节点可以与计算引擎侧的归约任务对应部署,与归约任务属于同一个进程,共享同一个JVM。一个示例中,混洗读取节点可以作为SDK嵌入在计算引擎侧的归约任务中。另一个实施例中,混洗读取节点和归约任务可以具备一一对应关系。一个示例中,计算引擎侧包括R个归约任务,则混洗服务中也可以包括至少R个混洗读取节点,且存在R个混洗读取节点与R个归约任务一一对应。
具体地,当映射阶段完成之后,混洗服务启动混洗读取节点。启动后的混洗读取节点获取各个分区对应的第二存储路径。根据各个分区对应的第二存储路径,从文件系统中读取得到各个分区对应的键值数据,并将读取到的键值数据发送至与自身对应的归约任务。
上述数据处理方法中,通过在计算引擎之外部署分别独立封装的混洗写入节点、混洗处理节点和混洗读取节点。在计算引擎启动任务后,当映射任务对任务进行处理得到与分区对应的键值数据时,通过与映射任务相对应的混洗写入节点将键值数据发送至混洗处理节点;通过混洗处理节点按照分区维度对所有映射任务产生的键值数据进行聚合,将聚合得到的与分区对应的键值数据持久化至文件系统;通过混洗读取节点从文件系统中读取得到与分区对应的键值数据,将与分区对应的键值数据发送至对应的归约任务,将相关技术中各个归约任务至各个映射任务的随机小IO请求进行聚合,极大地减少了IO请求的数量,从而可以减少磁盘压力,进而能够提升混洗效率。此外,本公开实施例分别部署混洗写入节点和混洗读取节点,实现任务的计算和存储架构分离,使架构更易于部署,且减少了资源耗费。
在一示例性实施例中,混洗写入节点和混洗处理节点之间部署有数据校验机制。如图4所示,在步骤S310中,通过与映射任务相对应的混洗写入节点将键值数据发送至混洗处理节点,具体可以通过以下步骤实现:
在步骤S410中,通过与映射任务相对应的混洗写入节点向混洗处理节点发送数据写入请求。
其中,数据写入请求可以但不限于携带当前处理得到的键值数据、当前的第一记录标识。第一记录标识为与键值数据对应的唯一性记录标识,其随着数据写入请求的增加而增加。一个示例中,混洗写入节点每向混洗处理节点发送一次数据写入请求,第一记录标识增加1。
具体地,若混洗写入节点监测到当前本地缓存寄存器中键值数据的数量已达到阈值,则向混洗处理节点发送数据写入请求。在数据写入请求中至少携带当前本地缓存寄存器中的键值数据(可以为数据块)以及当前的第一记录标识。
在步骤S420中,通过混洗处理节点将当前的第一记录标识与混洗处理节点中当前的第二记录标识进行比较。
在步骤S430中,当确定当前的第一记录标识与第二记录标识一致时,通过混洗处理节点接受键值数据。
其中,第二记录标识用于表示混洗处理节点期望接收到的键值数据的记录标识,其随着混洗处理节点接收到的键值数据的增加而增加。一个示例中,混洗处理节点每收到一次键值数据,第二记录标识增加1。
具体地,第一记录标识与第二记录标识具有相同的初始值。在混洗处理节点接收到数据写入请求后,将数据写入请求中携带的第一记录标识与第二记录标识进行比较,确定第一记录标识与第二记录标识是否相同。若混洗处理节点确定当前的第一记录标识与第二记录标识一致,则接收数据处理请求中携带的键值数据。进而按照分区维度对键值数据进行聚合并持久化处理。
本实施例中,引入基于数据块的校验机制,根据混洗写入节点和混洗处理节点各自记录的记录标识对当前传输的数据进行校验,可以确保键值数据不被重复发送,且确保不会遗漏键值数据。
在一示例性实施例中,当混洗处理节点确定当前的第一记录标识与第二记录标识不一致时,可以向混洗写入节点发送反馈消息,并将第二记录标识携带在反馈消息中。混洗写入节点在接收到反馈消息后,将当前的第一记录标识更新为当前的第二记录标识,后续以第二记录标识对应的键值数据为起点,继续向混洗处理节点发送数据写入请求。
本实施例中,在第一记录标识和第二记录标识不一致的情况下,将混洗处理节点的第二记录标识作为游标来强制同步混洗写入节点和混洗处理节点的进度,可以确保混洗处理节点接收的数据不会丢失,从而确保数据的完整性。
在一示例性实施例中,数据写入请求还携带第三记录标识。第三记录标识为混洗写入节点记录的、用于表示已持久化至文件系统的键值数据。即,混洗写入节点认为在第三记录标识之前的键值数据均已被持久化至文件系统。一个实施例中,每当混洗处理节点接收到混洗写入节点发送的键值数据后,便按照分区维度将键值数据持久化至文件系统,并向混洗写入节点发送反馈消息,以使混洗写入节点根据该反馈消息,将当前持久化的键值数据对应的记录标识作为第三记录标识。可以理解的是,第三记录标识随着键值数据的持久化不断地更新。一个示例中,若混洗写入节点接收到的持久化的反馈消息中携带记录标识A,则可以将第三记录标识更新为A。
一个实施例中,在步骤S420,通过混洗处理节点将当前的第一记录标识与混洗处理节点中当前的第二记录标识进行比较之前,还包括:通过混洗处理节点响应于数据写入请求,获取第四记录标识,并确定第三记录标识与第四记录标识一致。
其中,第四记录标识为混洗处理节点记录的、用于表示已持久化至文件系统的键值数据。即,混洗处理节点认为在第四记录标识之前的键值数据均已被持久化至文件系统。一个示例中,若混洗处理节点将记录标识B对应的键值数据持久化至文件系统,则可以将第四记录标识更新为B。具体地,在混洗处理节点接收到数据写入请求之后,首先将第三记录标识与第四记录标识进行比较。在确定第三记录标识与第四记录标识一致的情况下,继续执行步骤S420和步骤S430。
另一个实施例中,在确定第三记录标识和第四记录标识不一致的情况下,混洗处理节点可以停止执行步骤S420和步骤S430。而是将第四记录标识更新为第三记录标识,并根据第三记录标识对第二记录标识进行更新。混洗处理节点还可以向混洗写入节点发送反馈消息,以指示混洗写入节点将当前的第一记录标识更新为第三记录标识,以使混洗写入节点重新发送数据写入请求,通过数据写入请求发送第三记录标识之后的键值数据。
本实施例中,通过使混洗写入节点和混洗处理节点分别记录已持久化至文件系统的键值数据的记录标识,并使混洗处理节点无条件相信混洗写入节点的第三记录标识,能够在发生混洗处理节点故障、启动新的混洗处理节点等的情况下,确保混洗写入节点和混洗处理节点的数据一致性。
图5示例性示出了一种具体的数据校验机制的流程示意图。参照图5,数据校验机制可以通过以下步骤实现:
在步骤S502中,通过混洗写入节点向混洗处理节点发送数据写入请求,数据写入请求携带第一记录标识(chunkId)、与第一记录标识相对应的键值数据、第三记录标识(LastCommittedchunkId)、数据校验值。其中,数据校验值可以是根据键值数据进行计算得到的校验值,用于校验键值数据的准确性。一个示例中,数据校验值可以采用crc32code(循环冗余校验码)。
混洗处理节点响应于数据写入请求,获取当前已接收的记录标识(CurrentchunkId)、第二记录标识(NextchunkId)、第四记录标识(CommittedchunkId)。
在步骤S504中,混洗处理节点将第三记录标识与第四记录标识进行比较。若不同,则执行步骤S506;若相同,则执行步骤S508。
在步骤S506中,若第三记录标识与第四记录标识不同,则恢复混洗处理节点端的元数据,并指示混洗写入节点发送第三记录标识之后的键值数据。可以通过以下公式恢复:
第四记录标识=第三记录标识
当前已接收的记录标识=第四记录标识
第二记录标识=第四记录标识+1
在步骤S508中,若第三记录标识与第四记录标识相同,则继续比较第一记录标识和第二记录标识。若第一记录标识和第二记录标识相同,则继续执行步骤S510~S514;若不同,则执行步骤S516~S518。
在步骤S510中,若第一记录标识与第二记录标识相同,则将键值数据写入至混洗处理节点的本地缓冲寄存器中,在该本地缓冲寄存器中的键值数据量达到一定值时,将键值数据持久化至文件系统。
在步骤S512中,依次更新当前已接收的记录标识、第四记录标识和第二记录标识。可以通过以下公式对第二记录标识进行更新:
第二记录标识=更新后的当前已接收的记录标识+1
期望下一次接收的记录标识=第二记录标识
在步骤S514中,向混洗写入节点发送第一反馈消息,以指示混洗写入节点重置游标。
在步骤S516中,若第一记录标识与第二记录标识不同,则拒绝接收键值数据,并更新期望下一次接收的记录标识。可以通过以下公式更新期望下一次接收的记录标识:
期望下一次接收的记录标识=第二记录标识
在步骤S518中,向混洗写入节点发送第二反馈消息,以指示混洗写入节点从与第二记录标识对应的键值数据起开始发送。
在一示例性实施例中,混洗服务中可以部署有第一排序机制。在步骤S320中,将与分区对应的键值数据持久化至文件系统,包括:针对每个分区下的键值数据,通过混洗处理节点确定每个键值数据对应的数据标识;按照数据标识对每个分区下的键值数据进行排序,将与分区对应的排序后的键值数据持久化至文件系统。
其中,数据标识用于表示每个键值数据与映射任务之间的唯一性的关联关系。一个示例中,数据标识可以但不限于包括映射任务标识、映射任务的处理标识、键值数据的位置标识。其中,映射任务标识可以用于表示键值数据是通过第几个映射任务处理的。每个映射任务可以用于处理任务的一连串数据,映射任务的处理标识可以是指映射任务是在第几次尝试处理时处理得到数据的。键值数据的位置标识可以是指该键值数据位于一连串数据中的第几行。
具体地,混洗处理节点在接收到各个混洗写入节点发送的键值数据,将属于相同分区的键值数据进行聚合。首先对多个分区进行排序。一个示例中,若存在P+1个分区,则可以对该P+1个分区排序为:分区0、分区1、分区2,...,分区P。针对每个分区内的键值数据,混洗处理节点根据每个键值数据对应的数据标识对键值数据进行排序。一个示例性中,数据标识为依次拼接的映射任务标识、处理标识和位置标识,则可以按照数据标识从大到小,或者从小到大的顺序对各个分区内的键值数据进行排序。
本实施例中,通过在混洗处理节点内部署排序机制,使归约任务能够直接获取排序好的键值数据,从而能够减轻计算引擎侧的处理压力。此外,通过将排序机制部署在混洗服务中,在同时存在多种计算引擎的情况下,能够按照该排序机制对多种计算引擎产生的键值数据进行处理,从而能够同时满足多种计算引擎的键值数据的排序需求。
在一示例性实施例中,混洗服务中部署有第一去重机制。在步骤S330,将与分区对应的键值数据发送至对应的归约任务之前,还包括:通过混洗读取节点获取对任务进行处理失败的目标映射任务,根据数据标识,从分区对应的键值数据中确定与目标映射任务相对应的第一键值数据,删除第一键值数据。
具体地,在本实施例中,混洗服务还可以包括独立封装的任务管理组件。任务管理组件可以与计算引擎中的任务管理器(ApplicationMaster)对应部署,与任务管理器属于同一个进程,共享同一个JVM。一个示例中,任务管理组件可以作为SDK嵌入在任务管理器中。当存在目标映射任务尝试处理对应的一连串数据失败时,将目标映射任务的映射任务标识和处理标识上报至任务管理组件,通过任务管理组件生成失败任务列表。
在混洗读取组件读取得到分区下的键值数据后,从任务管理组件获取失败任务列表。从分区对应的键值数据中,确定与失败任务列表中目标映射任务的映射任务标识和处理标识相对应的第一键值数据,删除第一键值数据。将删除第一键值数据之后的键值数据发送至归约任务。
本实施例中,由于映射任务在多次尝试处理可能会产生重复的数据,通过记录失败任务列表,根据失败任务列表对键值数据进行去重处理,可以实现归约任务端数据的准确性和单一性。
在一示例性实施例中,混洗服务中部署有第二去重机制。可以理解的是,第一去重机制和第二去重机制可以同时存在并同时执行。在步骤S330,将与分区对应的键值数据发送至计算引擎侧的归约任务之前,还包括:在混洗读取节点读取得到各个分区下的键值数据之后,比较分区下的键值数据的数据标识,当存在不同的键值数据具有相同的数据标识时,对分区下的键值数据进行去重处理,进而将去重处理后的键值数据发送至归约任务,从而实现数据标识和键值数据的一一对应关系。通过基于数据标识对键值数据进行去重处理,可以实现归约任务端数据的准确性和单一性。
在一示例性实施例中,混洗服务中可以部署有第二排序机制。可以理解的是,第一排序机制和第二排序机制可以同时部署在混洗服务中,在这种情况下,可以通过优先级的方式,使混洗服务自主选择可用的排序机制。在本实施例中,混洗服务还包括独立封装的第一全局管理组件。全局管理组件可以但不限于用于负责全局资源调度、全局任务管理、混洗处理节点的生命周期管理、混洗处理节点的心跳请求、管理所有任务的生命周期等。步骤S320,将与分区对应的键值数据持久化至文件系统,包括:通过混洗处理节点从第一全局管理组件处获取任务的元信息,运行与元信息相对应的排序逻辑,以对分区对应的键值数据进行排序,元信息是在任务启动后注册至第一全局管理组件中的;将与分区对应的排序后的键值数据持久化至文件系统。
其中,元信息是关于信息的信息,用于描述信息的结构、语义、用途和用法等。在本公开实施例中,元信息可以是与键值数据的处理相关的信息,例如,任务的键类信息(KeyClass)、键值数据的处理逻辑文件包的存储路径、任务所属的计算引擎类型等,在此不作一一赘述。其中,键类信息可以用于唯一性地表示类。类在面向对象编程中是一种面向对象计算机编程语言的构造,描述了一些对象的行为规则,而这些对象就被称为该类的实例。元信息与任务具备映射关系,从而在启动任务后,可以根据该映射关系获取任务相对应的元信息。
具体地,混洗处理节点在接收到与键值数据后,从预先部署的排序逻辑和元信息的映射关系中,获取与任务的元信息相对应的排序逻辑,加载该排序逻辑,以对各个分区对应的键值数据进行排序。进而将与各个分区相对应的排序后的键值数据存储至文件系统。通过配置与任务的元信息相对应的排序逻辑,可以实现单个任务的高阶排序需求,从而使混洗功能更加完善。
在一示例性实施例中,混洗处理节点包括第一类加载器;元信息包括第一存储路径;运行与元信息相对应的排序逻辑,包括:通过第一类加载获取存储于第一存储路径中的排序逻辑文件包;通过第一类加载器加载排序逻辑文件包,以运行排序逻辑。
其中,类加载器负责加载类,其为所有被载入内存中的类生成一个实例对象。一旦一个类被加载如JVM中,同一个类不会被再次载入。如上述实施例所述,每个类对应唯一性的键类信息。排序逻辑文件包可以是指对采用代码编写的类进行打包形成的文件包。例如,Jar(一种计算机文件格式)包。
具体地,在启动任务时,可以获取任务的排序逻辑文件包,将排序逻辑文件包上传至文件系统,并获取排序逻辑文件包在文件系统中的第一存储路径。混洗服务将该第一存储路径注册至第一全局管理组件中,以便于混洗处理节点从全局管理组件中获取第一存储路径。混洗处理节点中的第一类加载器获取存储于第一存储路径中的排序逻辑文件包,并加载排序逻辑文件包,以运行排序逻辑对各个分区下的键值数据进行排序。
一个实施例中,任务与第一类加载器之间可以具有一一对应关系,对每个任务实例化对应的一个第一类加载器,能够确保任务级别的类加载隔离,避免类之间互相影响。
本实施例中,通过支持用户自定义上传排序逻辑文件包,能够灵活地满足用户的高阶排序需求。通过部署第一类加载器,实现任务级别的类加载器,能够使不同任务的类之间的加载不会互相影响,实现任务级别的类加载隔离,从而可以保障数据一致性。
在一示例性实施例中,混洗处理节点中还部署有第二类加载器,第二类加载器可以视为第一类加载器的缓存层。元信息还包括键类信息。在通过第一类加载获取存储于第一存储路径中的排序逻辑文件包之前,还包括:
(1)通过第一类加载器确定第二类加载器中不存在与预设工具相对应的排序逻辑。
具体地,在一些情况下,通过预设工具提交的任务量大,且具有相同的键类信息。例如,在一些系统中90%的任务通过Hive(一个数据仓工具)提交,且通过Hive提交的任务具有相同的键类信息。因此,参照图6,在本实施例中,混洗处理节点在启动之后,从本地数据库中加载已存在的通用的排序逻辑。当混洗处理节点接收到各个分区对应的键值数据之后,在确定任务通过预设工具提交的情况下,通过第一类加载器确定第二类加载器中是否存在与预设工具相对应的排序逻辑。若确定不存在与预设工具相对应的排序逻辑,则继续获取第一存储路径,并获取存储于第一存储路径中的排序逻辑文件包,以对键值数据进行排序。相反地,若确定第二类加载器中存在与预设工具相对应的排序逻辑,则可以通过第一类加载器加载该排序逻辑,以对各个分区的键值数据进行排序。
(2)通过第一类加载器确定第二类加载器中不存在与键类信息相对应的排序逻辑。
具体地,当混洗处理节点接收到各个分区对应的键值数据之后,通过第一类加载器确定第二类加载器中是否存在与任务的键类信息相对应的排序逻辑。若不存在,则继续获取第一存储路径,并加载存储于第一存储路径中的排序逻辑文件包。相反地,若存在,则可以通过第一类加载器运行与该键类信息相对应的排序逻辑。
本实施例中,根据任务的提交工具以及键类信息预加载任务相对应的排序逻辑,可以减少拉取和加载排序逻辑文件包的次数,从而能够加快键值数据的处理效率,减少因加载排序逻辑文件包而产生的网络和磁盘的IO耗费。
在一示例性实施例中,混洗服务中可以部署有资源调度机制。所述方法还包括:在任务启动后,通过任务管理组件向第一全局管理组件发送任务的资源请求;通过第一全局管理组件响应于资源请求,确定用于处理任务的混洗处理节点,建立任务的分区与混洗处理节点之间的映射关系,并将映射关系发送至任务管理组件。
具体地,每个混洗处理节点与第一全局管理组件连接,实时或者定时(例如,每隔S秒)地将当前自身的负载信息和剩余的资源信息上报至第一全局管理组件。通过第一全局管理组件将每个混洗处理节点的负载信息和资源信息缓存至内存中。
当计算引擎侧的任务管理器启动任务时,任务管理组件随之启动。通过任务管理组件向第一全局管理组件发送该任务的资源请求。第一全局管理组件将资源请求添加至调度队列。调用调度线程定期执行调度流程,从调度队列中获取资源请求,启动调度流程。调度线程从内存中获取各个混洗处理节点最新上报的资源信息。按照资源信息从高到低的顺序对多个混洗处理节点进行排序,从排序后的混洗处理节点中选择排序最高(即资源最多)的混洗处理节点,作为处理任务的混洗处理节点。进而建立分区和混洗处理节点之间的映射关系,并将该映射关系发送至任务管理组件。
一个示例中,任务包括P个分区,第一全局管理组件可以通过调度线程从混洗处理节点中确定出资源最多的P个混洗处理节点,而生成P个分区与P个混洗处理节点之间的一一对应关系。
另一个示例中,当满足分区资源需求的混洗处理节点数量少于分区数量时,第一全局管理组件可以对分区进行合并处理,使同一个混洗处理节点能够处理多个分区下的数据,进而生成分区与混洗处理节点之间的映射关系。
本实施例中,通过部署全局管理组件,采用全局管理组件实现对混洗处理节点和任务的资源请求的全局管理,将流量均匀打散到各个混洗处理节点上,从而可以实现全局资源负载均衡。
在一示例性实施例中,步骤S310,通过与映射任务相对应的混洗写入节点将键值数据发送至混洗处理节点,包括:通过与映射任务相对应的混洗写入节点,从任务管理组件处获取分区与混洗处理节点之间的映射关系;按照映射关系,将与分区对应的键值数据发送至与分区对应的混洗处理节点。
具体地,在计算引擎侧的任务管理器启动任务时,启动映射任务,与映射任务对应设置的混洗写入节点随之启动。混洗写入节点在启动后,向任务管理组件请求分区与混洗写入节点之间的映射关系。每个映射任务对任务进行处理,产生键值数据,并将相同分区下的键值数据进行聚合,将聚合后的键值数据写入对应的混洗写入节点的本地缓冲寄存器中。当本地缓冲寄存器中键值数据的数量达到阈值时,通过与各个映射任务对应的混洗写入节点按照分区与混洗处理节点之间的映射关系,将各个分区对应的键值数据发送至与分区对应的混洗处理节点。
本实施例中,通过建立分区和混洗处理节点之间的映射关系,能够从分区维度对多个映射任务输出数据进行聚合处理,使归约任务无需从各个映射任务对应的本地文件中的拉取数据,从而可以减少数据输出/输入的次数,提升混洗的输入输出效率。
在一示例性实施例中,混洗服务中可以部署有混洗处理节点的异常处理机制。所述方法还包括:当通过第一全局管理组件确定混洗处理节点发生异常时,获取混洗处理节点的异常类型;采用与异常类型相对应的异常处理方式,重新确定用于处理任务的新的混洗处理节点。
其中,异常类型可以但不限于包括连接异常(如连接超时)、混洗处理节点的缓存空间已满、CRC(Cyclic Redundancy Check,循环冗余校验)异常、宕机等,异常类型可以通过错误代码等标识。预先在混洗服务中部署有与异常类型相对应的异常处理方式。在第一全局管理组件检测到混洗处理节点发生异常时,便可根据与异常类型相对应的异常处理方式,对发生异常的混洗处理节点进行处理,确定用于处理任务的新的混洗处理节点。
本实施例中,通过对混洗处理节点进行高可用、高容错建设,部署与异常类型相对应的异常处理方式,在混洗处理节点发生异常时,能够及时地确定新的混洗处理节点,从而能够保障任务的正常处理。
在一示例性实施例中,可以按照异常是否能被系统自行修复,对异常进行分类得到第一类型和第二类型。其中,第一类型为系统能够修复的异常类型,例如,连接异常(如连接超时)、混洗处理节点的缓存空间已满。第二类型为混洗服务不能够修复的异常类型,例如,CRC异常、chunk(数据块)不符合预期、宕机等。在本实施例中,采用与异常类型相对应的异常处理方式,重新确定用于处理任务的新的混洗处理节点,具体可以通过以下过程实现:
具体地,当第一全局管理组件确定混洗处理节点的异常类型为第一类型时,等待预设时长,使混洗处理节点能够执行重启操作。在预设时长后,第一全局管理组件可以通过心跳请求等方式检测混洗处理节点的节点状态,当确定混洗处理节点的状态正常时,继续使用混洗处理节点。
一个实施例中,若第一全局管理组件确定混洗处理节点的重启次数达到预设次数,但是检测混洗处理节点的状态仍然为异常,则可以将该混洗处理节点的异常类型更新为第二类型,并执行与第二类型对应的异常处理方式。
当第一全局管理组件确定混洗处理节点的异常类型为第二类型时,重新确定与任务对应的新的混洗处理节点。一个实施例中,混洗服务可以生成该任务对应的新的资源请求,将该新的资源请求加入至调度队列。第一全局管理组件对调度队列中新的资源请求的处理方式可以参照上述步骤资源请求的处理方式,在此不作具体阐述。一个示例中,调度队列可以采用优先级队列。发生异常时产生的新的资源请求的优先级可以高于其他资源请求,从而使第一全局管理组件能够优先处理新的资源请求,加快当前任务的处理效率。
本实施例中,按照系统的修复能力对异常类型进行划分,针对不同的异常类型采用不同的异常处理方式,能够减轻系统处理异常节点的压力,进而有助于优化混洗服务的整体性能。
图7示例性示出了一种混洗处理节点的异常处理机制。在本实施例中,混洗服务包括分别独立封装的第一全局管理组件、混洗处理节点、任务管理组件、混洗写入节点。异常处理机制具体可以通过以下步骤实现。
在步骤S702中,混洗写入节点获取与自身对应的映射任务处理得到的键值数据,将键值数据发送至混洗处理节点中的数据块远程调用服务。其中,数据块远程调用服务可以用于实现步骤S410~S430所述的内容。
在步骤S704中,若混洗处理节点对键值数据处理失败,则向混洗写入节点发送异常通知。异常通知中携带异常类型。
在步骤S706中,混洗写入节点将混洗处理节点的异常类型上报至任务管理组件。
在步骤S708中,任务管理组件向第一全局管理组件发送任务的新的资源请求,当异常类型为第一类型时,尝试重新启动混洗处理节点。当异常类型为第二类型时,第一全局管理组件确定新的混洗处理节点,并继续执行步骤S710~步骤S714。
在步骤S710中,第一全局管理组件将任务与新的混洗处理节点之间的映射关系发送至任务管理组件。
在步骤S712中,任务管理组件将任务与新的混洗处理节点之间的映射关系发送至混洗写入节点。
在步骤S714中,混洗写入节点根据该映射关系,将数据流切换至新的混洗处理节点。
在一示例性实施例中,系统中可以预先部署有控制器管理器,用于监听第一全局管理组件的运行状态,在第一全局管理组件发生异常时,实现故障自愈。在本实施例中,混洗服务中部署有多个全局管理组件。多个全局管理组件通过分布式系统(例如,etcd,一种高可用的键值存储系统)实现共享配置和服务发现。所述方法还包括:当监听到第一全局管理组件发生异常情况时,启动第二全局管理组件;将分布式系统中已注册的第一全局管理组件更新为第二全局管理组件,以切换至使用第二全局管理组件。
具体地,当控制器管理器监听到第一全局管理组件发生异常时,从除第一全局管理组件之外的其他全局管理组件中选举得到第二全局管理组件,并启动第二全局管理组件。进而将第二全局管理组件注册至分布式系统,通过分布式系统指示混洗服务中的各个组件/节点将数据流切换至第二全局管理组件。
一个实施例中,可以在分布式系统中使用分布式锁,基于分布式锁的变更成功,实现切换对第二全局管理组件的请求连接。通过采用分布式锁,可以实现同一时刻只有一个全局管理组件提供服务,从而可以避免脑裂问题,确保混洗正常运行。
一个示例中,如图8所示,可以采用k8s(kubernetes)编排,全局管理组件的故障自愈。参照图8,具体可以通过以下步骤实现:
(1)第一全局管理组件被选举并注册至分布式系统。
(2)通过存活探针对第一全局管理组件进行tcp(Transmission ControlProtocol,传输控制协议)端口探活。
(3)存货探针返回pod failed/unknown(容器失败/未知)的检测结果。
(4)控制器管理器判断第一全局管理组件宕机,启动第二全局管理组件。
(5)分布式系统调用选举机制,将元数据恢复至第二全局管理组件。
(6)在确定第二全局管理组件可用后,将第二全局管理组件注册至分布式系统。
(7)分布式系统向混洗服务中的其他组件发送变更通知。
(8)混洗服务中的其他组件切换注册至第二全局管理组件。
本实施例中,由于全局管理组件发生故障,将导致故障迁移/恢复困难,严重影响混洗服务的正常运行,因此,通过对全局管理组件进行主备切换的高可用部署,能够确保混洗服务的稳定性。
图9是根据一示例性实施例示出的一种数据处理的流程示意图,如图9所示,该方法应用于部署在计算引擎之外的混洗服务。混洗服务包括分别独立封装的任务管理组件(App Shuffle Master,ASM)、全局管理组件(Shuffle Master)、混洗写入节点(ShuffleWriter)、混洗处理节点(Shuffle Worker)、混洗读取节点(Shuffle Reader)。以下对各个组件的功能进行说明。
全局管理组件:负责全局资源调度、全局任务管理、混洗处理节点的生命周期管理、混洗处理节点的心跳请求等。
任务管理组件:可以与计算引擎中的任务管理器对应部署,与任务管理器属于同一个进程,共享同一个JVM。一个示例中,任务管理组件可以作为SDK嵌入在任务管理器中。任务管理组件负责单个任务的资源管理、处理混洗写入节点和混洗读取节点的RPC(远程过程调用)请求、管理混洗写入节点和混洗读取节点的生命周期。
混洗写入节点:可以作为SDK嵌入在计算引擎侧的映射任务中,负责将映射任务处理得到的键值数据按照分区维度发送到对应的混洗处理节点上。在混洗处理节点将排序后的键值数据完全持久化之后再安全退出。
混洗处理节点:负责将键值数据按照分区维度聚合、排序,并溢写到远端HDFS中。在溢写完成后,通知任务管理组件和混洗写入节点持久化的结果。
混洗读取节点,可以与计算引擎中的归约任务对应部署,负责从HDFS拉取待处理的混洗文件集合,根据一致性元数据在本地做去重后返回给计算引擎侧的归约任务。
如图9所示,以任务为Mapreduce Job为例,数据处理方法可以通过以下步骤实现。
在步骤S902中,一个Mapreduce Job(即Mapreduce中的任务管理器)启动,随之启动任务管理组件。
在步骤S904中,任务管理组件向全局管理组件申请资源,请求全局管理组件进行资源调度,确定任务的分区与混洗处理节点之间的映射关系。在申请成功之后开始混洗服务模式。资源调度的具体实现方式可以参照上述实施例,在此不作具体阐述。
在步骤S906中,任务管理器启动映射任务,混洗写入节点随映射任务启动,两者共享同一进程。混洗写入节点启动后向任务管理组件获取分区与混洗处理节点之间的映射关系。
在步骤S908中,各个映射任务将处理得到的键值数据通过接口写入到对应的混洗写入节点的本地缓冲寄存器。再由混洗写入节点按照分区与混洗处理节点之间的映射关系,基于数据校验机制将缓冲寄存器中的键值数据发送到与分区对应的混洗处理节点上。其中,数据校验机制的实现方式可以参照上述实施例,在此不作具体阐述。
在步骤S910中,各个混洗处理节点基于排序机制对键值数据进行排序,并将排序后的键值数据持久化到HDFS中。其中,排序机制的具体实现方式可以参照上述实施例,在此不作具体阐述。
在步骤S912中,各个混洗处理节点将排序后的键值数据在HDFS的存储路径发送至任务管理组件。
在步骤S914中,当映射阶段完成之后,任务管理器启动归约任务,混洗读取节点随归约任务启动。启动后的混洗读取节点从任务管理组件处获取各个分区对应的第二存储路径。
在步骤S916中,根据各个分区对应的第二存储路径从HDFS读取键值数据。按照去重机制在本地去重后将读取到的键值数据返回给计算引擎侧。其中,去重机制的具体实现方式可以参照上述实施例,在此不作具体阐述。
应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
可以理解的是,本说明书中上述方法的各个实施例之间相同/相似的部分可互相参见,每个实施例重点说明的是与其他实施例的不同之处,相关之处参见其他方法实施例的说明即可。
图10是根据一示例性实施例示出的一种数据处理装置X00框图。参照图10,该装置X00包括发送模块X02、持久化模块X04、读取模块X06。
发送模块X02,被配置为执行在计算引擎启动任务后,当计算引擎侧的映射任务对任务进行处理得到与分区对应的键值数据时,通过与映射任务相对应的混洗写入节点将键值数据发送至混洗处理节点;持久化模块X04,被配置为执行通过混洗处理节点聚合相同分区下的键值数据,将与分区对应的键值数据持久化至文件系统;读取模块X06,被配置为执行通过混洗读取节点从文件系统中读取得到与分区对应的键值数据,将与分区对应的键值数据发送至计算引擎侧的归约任务,其中,混洗写入节点、混洗处理节点和混洗读取节点为分别独立封装于计算引擎之外的节点。
在一示例性实施例中,发送模块X02,包括:请求发送单元,被配置为执行通过与映射任务相对应的混洗写入节点向混洗处理节点发送数据写入请求,数据写入请求携带当前处理得到的键值数据以及当前的第一记录标识,第一记录标识随着数据写入请求的增加而增加;比较单元,被配置为执行通过混洗处理节点将当前的第一记录标识与混洗处理节点中当前的第二记录标识进行比较,第二记录标识随着混洗处理节点接收到的键值数据的增加而增加;接收单元,被配置为执行当确定当前的第一记录标识与第二记录标识一致时,通过混洗处理节点接受键值数据。
在一示例性实施例中,发送模块X02,还包括:发送单元,被配置为执行当确定当前的第一记录标识与第二记录标识不一致时,通过混洗处理节点将当前的第二记录标识发送至混洗写入节点;第一更新单元,被配置为执行通过混洗写入节点将当前的第一记录标识更新为当前的第二记录标识,并重新向混洗处理节点发送数据写入请求。
在一示例性实施例中,数据写入请求还携带第三记录标识,第三记录标识为混洗写入节点记录的、用于表示已持久化至文件系统的键值数据;发送模块X02,还包括:标识获取单元,被配置为执行通过混洗处理节点响应于数据写入请求,获取第四记录标识,第四记录标识为混洗处理节点记录的、用于表示已持久化至文件系统的键值数据;第二更新单元,被配置为执行当通过混洗处理节点确定第三记录标识与第四记录标识不一致时,指示混洗写入节点将当前的第一记录标识更新为第三记录标识,并重新向混洗处理节点发送数据写入请求。
在一示例性实施例中,持久化模块X04,包括:标识确定单元,被配置为执行针对每个分区下的键值数据,通过混洗处理节点确定每个键值数据对应的数据标识,数据标识用于表示每个键值数据与映射任务之间的唯一性的关联关系;第一排序单元,被配置为执行通过混洗处理节点按照数据标识对每个分区下的键值数据进行排序,将与分区对应的排序后的键值数据持久化至文件系统。
在一示例性实施例中,装置X00还包括:第一去重模块,被配置为执行通过混洗读取节点获取对任务进行处理失败的目标映射任务,根据数据标识,从分区对应的键值数据中确定与目标映射任务相对应的第一键值数据,删除第一键值数据;读取模块,还被配置为执行将与分区对应的删除后的键值数据发送至计算引擎侧的归约任务。
在一示例性实施例中,装置X00还包括:第二去重模块,被配置为执行通过混洗读取节点比较分区下的各个键值数据的数据标识,当存在不同的键值数据具有相同的数据标识时,对分区下的键值数据进行去重处理;读取模块,还被配置为执行将分区对应的去重处理后的键值数据发送至计算引擎侧的归约任务。
在一示例性实施例中,持久化模块X04,包括:第二排序单元,被配置为执行通过混洗处理节点从第一全局管理组件处获取任务的元信息,运行与元信息相对应的排序逻辑,以对分区对应的键值数据进行排序,元信息是在任务启动后注册至第一全局管理组件中的,第一全局管理组件为独立封装于所述计算引擎之外的组件;存储单元,被配置为执行将与分区对应的排序后的键值数据持久化至文件系统。
在一示例性实施例中,混洗处理节点包括第一类加载器;元信息包括第一存储路径;第二排序单元,被配置为执行通过第一类加载获取存储于第一存储路径中的排序逻辑文件包,第一存储路径是在启动任务后,将与任务对应的排序逻辑文件包存储至文件系统得到的;通过第一类加载器加载排序逻辑文件包,以运行排序逻辑。
在一示例性实施例中,混洗处理节点还包括第二类加载器;元信息还包括键类信息;持久化模块X04,还包括:预加载单元,被配置为执行通过第一类加载器确定第二类加载器中不存在与键类信息相对应的排序逻辑;以及,在任务通过预设工具提交的情况下,通过第一类加载器确定第二类加载器中不存在与预设工具相对应的排序逻辑。
在一示例性实施例中,装置X00还包括:请求发送模块,被配置为执行在任务启动后,通过任务管理组件向第一全局管理组件发送任务的资源请求;资源配置模块,被配置为执行通过第一全局管理组件响应于资源请求,确定用于处理任务的混洗处理节点,建立任务的分区与混洗处理节点之间的映射关系,并将映射关系发送至任务管理组件,其中,任务管理组件和第一全局管理组件为独立封装于计算引擎之外的组件。
在一示例性实施例中,发送模块X02,包括:关系获取单元,被配置为执行通过与映射任务相对应的混洗写入节点,从任务管理组件处获取分区与混洗处理节点之间的映射关系;发送单元,被配置为执行按照映射关系,将与分区对应的键值数据发送至与分区对应的混洗处理节点。
在一示例性实施例中,装置X00还包括:类型确定模块,被配置为执行当通过第一全局管理组件确定混洗处理节点发生异常时,获取混洗处理节点的异常类型;第一异常处理模块,被配置为执行采用与异常类型相对应的异常处理方式,重新确定用于处理任务的新的混洗处理节点。
在一示例性实施例中,第一异常处理模块,被配置为执行当异常类型为第一类型时,等待预设时长后重新检测混洗处理节点的节点状态,当获取节点状态为正常时,继续使用混洗处理节点,第一类型为系统能够修复的异常类型;当异常类型为第二类型时,重新确定与任务相对应的新的混洗处理节点,第二类型为系统不能够修复的异常类型。
在一示例性实施例中,装置X00还包括:第二异常处理模块,被配置为执行当监听到第一全局管理组件发生异常情况时,启动第二全局管理组件,第一全局管理组件与第二全局管理组件通过分布式系统管理;组件切换模块,被配置为执行将分布式系统中已注册的第一全局管理组件更新为第二全局管理组件,以切换至使用第二全局管理组件。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图11是根据一示例性实施例示出的一种用于对任务数据进行处理的电子设备S00的框图。例如,电子设备S00可以为服务器。参照图11,电子设备S00包括处理组件S20,其进一步包括一个或多个处理器,以及由存储器S22所代表的存储器资源,用于存储可由处理组件S20的执行的指令,例如应用程序。存储器S22中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件S20被配置为执行指令,以执行上述方法。
电子设备S00还可以包括:电源组件S24被配置为执行电子设备S00的电源管理,有线或无线网络接口S26被配置为将电子设备S00连接到网络,和输入输出(I/O)接口S28。电子设备S00可以操作基于存储在存储器S22的操作系统,例如Windows Server,Mac OS X,Unix,Linux,FreeBSD或类似。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器S22,上述指令可由电子设备S00的处理器执行以完成上述方法。存储介质可以是计算机可读存储介质,例如,所述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供一种计算机程序产品,所述计算机程序产品中包括指令,上述指令可由电子设备S00的处理器执行以完成上述方法。
需要说明的,上述的装置、电子设备、计算机可读存储介质、计算机程序产品等根据方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据处理方法,其特征在于,所述方法包括:
在计算引擎启动任务后,当所述计算引擎侧的映射任务对所述任务进行处理得到与分区对应的键值数据时,通过与所述映射任务相对应的混洗写入节点将所述键值数据发送至混洗处理节点;
通过所述混洗处理节点聚合相同分区下的键值数据,将与所述分区对应的键值数据持久化至文件系统;
通过混洗读取节点从所述文件系统中读取得到与所述分区对应的键值数据,将与所述分区对应的键值数据发送至所述计算引擎侧的归约任务,其中,所述混洗写入节点、所述混洗处理节点和所述混洗读取节点分别为独立封装于所述计算引擎之外的节点。
2.根据权利要求1所述的数据处理方法,其特征在于,所述通过与所述映射任务相对应的混洗写入节点将所述键值数据发送至混洗处理节点,包括:
通过与所述映射任务相对应的混洗写入节点向所述混洗处理节点发送数据写入请求,所述数据写入请求携带当前处理得到的所述键值数据以及当前的第一记录标识,所述第一记录标识随着数据写入请求的增加而增加;
通过所述混洗处理节点将当前的所述第一记录标识与所述混洗处理节点中当前的第二记录标识进行比较,所述第二记录标识随着所述混洗处理节点接收到的键值数据的增加而增加;
当确定当前的所述第一记录标识与所述第二记录标识一致时,通过所述混洗处理节点接受所述键值数据。
3.根据权利要求2所述的数据处理方法,其特征在于,所述方法还包括:
当确定当前的所述第一记录标识与所述第二记录标识不一致时,通过所述混洗处理节点将当前的所述第二记录标识发送至所述混洗写入节点;
通过所述混洗写入节点将当前的所述第一记录标识更新为当前的所述第二记录标识,并重新向所述混洗处理节点发送所述数据写入请求。
4.根据权利要求2所述的数据处理方法,其特征在于,所述数据写入请求还携带第三记录标识,所述第三记录标识为所述混洗写入节点记录的、用于表示已持久化至文件系统的键值数据;所述方法还包括:
通过所述混洗处理节点响应于所述数据写入请求,获取第四记录标识,所述第四记录标识为所述混洗处理节点记录的、用于表示已持久化至所述文件系统的键值数据;
当通过所述混洗处理节点确定所述第三记录标识与所述第四记录标识不一致时,指示所述混洗写入节点将当前的所述第一记录标识更新为所述第三记录标识,并重新向所述混洗处理节点发送所述数据写入请求。
5.根据权利要求1所述的数据处理方法,其特征在于,所述将与所述分区对应的键值数据持久化至文件系统,包括:
针对每个所述分区下的键值数据,通过所述混洗处理节点确定每个所述键值数据对应的数据标识,所述数据标识用于表示每个所述键值数据与所述映射任务之间的唯一性的关联关系;
通过所述混洗处理节点按照所述数据标识对每个所述分区下的键值数据进行排序,将与所述分区对应的排序后的键值数据持久化至所述文件系统。
6.根据权利要求5所述的数据处理方法,其特征在于,在所述将与所述分区对应的键值数据发送至对应的所述归约任务之前,还包括:
通过所述混洗读取节点获取对所述任务进行处理失败的目标映射任务,根据所述数据标识,从所述分区对应的键值数据中确定与所述目标映射任务相对应的第一键值数据,删除所述第一键值数据;
所述将与所述分区对应的键值数据发送至所述计算引擎侧的归约任务,包括:
将与所述分区对应的删除后的所述键值数据发送至所述计算引擎侧的归约任务。
7.一种数据处理装置,其特征在于,所述装置包括:
发送模块,被配置为执行在计算引擎启动任务后,当所述计算引擎侧的映射任务对所述任务进行处理得到与分区对应的键值数据时,通过与所述映射任务相对应的混洗写入节点将所述键值数据发送至混洗处理节点;
持久化模块,被配置为执行通过所述混洗处理节点聚合相同分区下的键值数据,将与所述分区对应的键值数据持久化至文件系统;
读取模块,被配置为执行通过混洗读取节点从所述文件系统中读取得到与所述分区对应的键值数据,将与所述分区对应的键值数据发送至所述计算引擎侧的归约任务,其中,所述混洗写入节点、所述混洗处理节点和所述混洗读取节点分别为独立封装于所述计算引擎之外的节点。
8.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6中任一项所述的数据处理方法。
9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至6中任一项所述的数据处理方法。
10.一种计算机程序产品,所述计算机程序产品中包括指令,其特征在于,所述指令被电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至6任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111553404.XA CN114237510A (zh) | 2021-12-17 | 2021-12-17 | 数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111553404.XA CN114237510A (zh) | 2021-12-17 | 2021-12-17 | 数据处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114237510A true CN114237510A (zh) | 2022-03-25 |
Family
ID=80758207
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111553404.XA Pending CN114237510A (zh) | 2021-12-17 | 2021-12-17 | 数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114237510A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023040348A1 (zh) * | 2021-09-14 | 2023-03-23 | 华为技术有限公司 | 分布式系统中数据处理的方法以及相关系统 |
CN117112312A (zh) * | 2023-10-19 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 数据处理方法、数据容错方法和装置及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150150017A1 (en) * | 2013-11-26 | 2015-05-28 | International Business Machines Corporation | Optimization of map-reduce shuffle performance through shuffler i/o pipeline actions and planning |
CN104834734A (zh) * | 2015-05-18 | 2015-08-12 | 成都博元科技有限公司 | 一种高效数据分析处理方法 |
CN108027801A (zh) * | 2015-12-31 | 2018-05-11 | 华为技术有限公司 | 数据处理方法、装置和系统 |
CN110309177A (zh) * | 2018-03-23 | 2019-10-08 | 腾讯科技(深圳)有限公司 | 一种数据处理的方法以及相关装置 |
CN112799820A (zh) * | 2021-02-05 | 2021-05-14 | 拉卡拉支付股份有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
-
2021
- 2021-12-17 CN CN202111553404.XA patent/CN114237510A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150150017A1 (en) * | 2013-11-26 | 2015-05-28 | International Business Machines Corporation | Optimization of map-reduce shuffle performance through shuffler i/o pipeline actions and planning |
CN104834734A (zh) * | 2015-05-18 | 2015-08-12 | 成都博元科技有限公司 | 一种高效数据分析处理方法 |
CN108027801A (zh) * | 2015-12-31 | 2018-05-11 | 华为技术有限公司 | 数据处理方法、装置和系统 |
CN110309177A (zh) * | 2018-03-23 | 2019-10-08 | 腾讯科技(深圳)有限公司 | 一种数据处理的方法以及相关装置 |
CN112799820A (zh) * | 2021-02-05 | 2021-05-14 | 拉卡拉支付股份有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023040348A1 (zh) * | 2021-09-14 | 2023-03-23 | 华为技术有限公司 | 分布式系统中数据处理的方法以及相关系统 |
CN117112312A (zh) * | 2023-10-19 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 数据处理方法、数据容错方法和装置及存储介质 |
CN117112312B (zh) * | 2023-10-19 | 2024-02-09 | 腾讯科技(深圳)有限公司 | 数据处理方法、数据容错方法和装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11327799B2 (en) | Dynamic allocation of worker nodes for distributed replication | |
US11010240B2 (en) | Tracking status and restarting distributed replication | |
US10761765B2 (en) | Distributed object replication architecture | |
US8132043B2 (en) | Multistage system recovery framework | |
US20190245918A1 (en) | Distributed replication of an object | |
US10908834B2 (en) | Load balancing for scalable storage system | |
US9367261B2 (en) | Computer system, data management method and data management program | |
CN109788068B (zh) | 心跳状态信息上报方法、装置和设备及计算机存储介质 | |
CN114237510A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN112153133B (zh) | 一种数据共享方法、设备以及介质 | |
CN111324423B (zh) | 容器内进程的监控方法、装置、存储介质和计算机设备 | |
US11372871B1 (en) | Programmable framework for distributed computation of statistical functions over time-based data | |
US20240028486A1 (en) | Use of cluster-level redundancy within a cluster of a distributed storage management system to address node-level errors | |
CN112231108A (zh) | 任务处理方法、装置、计算机可读存储介质及服务器 | |
CN113760847A (zh) | 日志数据处理方法、装置、设备及存储介质 | |
CN114237892A (zh) | 键值数据的处理方法、装置、电子设备及存储介质 | |
CN113965576B (zh) | 基于容器的大数据采集方法、装置、存储介质和设备 | |
CN111342986B (zh) | 分布式节点管理方法及装置、分布式系统、存储介质 | |
CN110737510A (zh) | 块设备管理系统 | |
US20210286647A1 (en) | Embedded persistent queue | |
CN114237891A (zh) | 资源调度方法、装置、电子设备及存储介质 | |
CN114363356B (zh) | 数据同步方法、系统、装置、计算机设备和存储介质 | |
US20220182290A1 (en) | Status sharing in a resilience framework | |
CN115499493A (zh) | 异步事务处理方法、装置、存储介质及计算机设备 | |
CN113672665A (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 |