CN114237892A - 键值数据的处理方法、装置、电子设备及存储介质 - Google Patents
键值数据的处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114237892A CN114237892A CN202111555578.XA CN202111555578A CN114237892A CN 114237892 A CN114237892 A CN 114237892A CN 202111555578 A CN202111555578 A CN 202111555578A CN 114237892 A CN114237892 A CN 114237892A
- Authority
- CN
- China
- Prior art keywords
- value data
- key
- shuffle
- task
- processed
- 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
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/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
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开关于一种键值数据的处理方法、装置、电子设备及存储介质,所述方法包括:获取待处理任务,以及与待处理任务相对应的元信息;通过计算引擎中的映射任务对待处理任务进行处理,得到键值数据,并将键值数据传输至混洗处理节点,混洗处理节点为独立封装于计算引擎之外的节点;通过混洗处理节点运行与元信息相对应的排序逻辑,以对键值数据进行排序。根据本公开的方案,采用通用的排序机制对多种计算引擎产生的键值数据进行处理,从而可以同时满足多种计算引擎的键值数据的排序需求。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种键值数据的处理方法、装置、电子设备、计算机可读存储介质、计算机程序产品。
背景技术
当前计算引擎Mapreduce(一种映射归约模型)、Spark(一种计算引擎)等存在shuffle(混洗)机制。混洗机制承担任务中MapTask(映射任务)、ReduceTask(归约任务)之间的数据传输。
目前,混洗机制实现主要分为sort-based shuffle(基于排序的混洗)和hash-based shuffle(基于哈希的混洗)。Mapreduce主要采用基于排序的混洗方式,其通过在映射任务端按照partition(分区)和key(键)对key-value(键值)数据进行排序,并输出到本地磁盘,形成一个有序的混洗文件。这样,归约任务端获取的混洗文件是局部有序的。Spark主要采用基于哈希的混洗方式,通过在映射任务端进行键排序,按照分区分类输出到本地磁盘,形成乱序的混洗文件。这样,归约任务端需要对获取的混洗文件集合进行全局排序。
但是,目前企业内部的流式混洗机制大都仅支持Spark引擎。在企业内部同时存在Spark和MapReduce作业的情况下,Spark引擎的基于哈希的混洗方式无法满足MapReduce作业的键值数据排序需求,因此,亟需一种能够在多种计算引擎同时作业的情况下,对多种计算引擎的键值数据进行灵活排序的方式。
发明内容
本公开提供一种键值数据的处理方法、装置、电子设备、计算机可读存储介质、计算机程序产品,以提供一种能够在多种计算引擎同时作业的情况下,对多种计算引擎的键值数据进行灵活排序的方式。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种键值数据的处理方法,所述方法包括:
获取待处理任务,以及与所述待处理任务相对应的元信息;
通过计算引擎中的映射任务对所述待处理任务进行处理,得到键值数据,并将所述键值数据传输至混洗处理节点,所述混洗处理节点为独立封装于所述计算引擎之外的节点;
通过所述混洗处理节点运行与所述元信息相对应的排序逻辑,以对所述键值数据进行排序。
在其中一个实施例中,所述混洗处理节点中部署有第一类加载器,所述元信息包括排序逻辑文件包的存储路径;
所述通过所述混洗处理节点运行与所述元信息相对应的排序逻辑,包括:
通过所述混洗处理节点中的所述第一类加载器获取存储于所述存储路径中的所述排序逻辑文件包;
通过所述第一类加载器加载所述排序逻辑文件包,以运行所述排序逻辑。
在其中一个实施例中,所述混洗处理节点中还部署有第二类加载器;
在所述通过所述混洗处理节点中的所述第一类加载器获取存储于所述存储路径中的所述排序逻辑文件包之前,还包括:
在所述待处理任务通过预设工具提交的情况下,通过所述第一类加载器确定所述第二类加载器中不存在与所述预设工具相对应的排序逻辑。
在其中一个实施例中,所述方法还包括:
当通过所述第一类加载器确定所述第二类加载器中存在与所述预设工具相对应的排序逻辑时,通过所述第一类加载器运行与所述预设工具相对应的排序逻辑。
在其中一个实施例中,所述混洗处理节点中还部署有第三类加载器;所述元信息还包括所述待处理任务的键类信息;
在所述通过所述混洗处理节点中的所述第一类加载器获取存储于所述存储路径中的所述排序逻辑文件包之前,还包括:
通过所述第一类加载器确定所述第三类加载器中不存在与所述键类信息相对应的排序逻辑。
在其中一个实施例中,所述方法还包括:
当通过所述第一类加载器确定所述第三类加载器中已存在与所述键类信息相对应的排序逻辑时,则运行与所述键类信息对应的排序逻辑。
在其中一个实施例中,所述方法还包括:
将所述元信息注册至全局管理组件,所述全局管理组件为独立封装于所述计算引擎之外的组件;
通过所述全局管理组件将所述元信息发送至所述混洗处理节点。
在其中一个实施例中,所述混洗处理节点的数量为多个;所述将所述键值数据传输至混洗处理节点,包括:
通过混洗写入节点获取分区与混洗处理节点之间的映射关系,所述映射关系是所述全局管理组件根据所述待处理任务的分区预先构建得到的,所述混洗写入节点为独立封装于所述计算引擎之外的节点;
通过所述混洗写入节点确定与每个所述分区对应的键值数据,按照所述映射关系将与每个所述分区对应的键值数据发送至与每个所述分区对应的混洗处理节点;
所述通过所述混洗处理节点运行与所述元信息相对应的排序逻辑,以对所述键值数据进行排序,包括:
通过与每个所述分区对应的混洗处理节点运行所述排序逻辑,以对每个所述分区对应的键值数据进行排序。
根据本公开实施例的第二方面,提供一种键值数据的处理装置,所述装置包括:
获取模块,被配置为执行获取待处理任务,以及与所述待处理任务相对应的元信息;
映射模块,被配置为执行通过计算引擎中的映射任务对所述待处理任务进行处理,得到键值数据,并将所述键值数据传输至混洗处理节点,所述混洗处理节点为独立封装于所述计算引擎之外的节点;
数据排序模块,被配置为执行通过所述混洗处理节点运行与所述元信息相对应的排序逻辑,以对所述键值数据进行排序。
在其中一个实施例中,所述混洗处理节点中部署有第一类加载器,所述元信息包括排序逻辑文件包的存储路径;
所述数据排序模块,包括:
文件包获取单元,被配置为执行通过所述混洗处理节点中的所述第一类加载器获取存储于所述存储路径中的所述排序逻辑文件包;
第一加载单元,被配置为执行通过所述第一类加载器加载所述排序逻辑文件包,以运行所述排序逻辑。
在其中一个实施例中,所述混洗处理节点中还部署有第二类加载器;
所述数据排序模块,还包括:
提交工具确定单元,被配置为执行在所述待处理任务通过预设工具提交的情况下,通过所述第一类加载器确定所述第二类加载器中不存在与所述预设工具相对应的排序逻辑。
在其中一个实施例中,所述数据排序模块,还包括:
第二加载单元,被配置为执行当通过所述第一类加载器确定所述第二类加载器中存在与所述预设工具相对应的排序逻辑时,通过所述第一类加载器运行与所述预设工具相对应的排序逻辑。
在其中一个实施例中,所述混洗处理节点中还部署有第三类加载器;所述元信息还包括所述待处理任务的键类信息;
所述数据排序模块,还包括:
查询单元,被配置为执行通过所述第一类加载器确定所述第三类加载器中不存在与所述键类信息相对应的排序逻辑。
在其中一个实施例中,所述数据排序模块,还包括:
第三加载单元,被配置为执行当通过所述第一类加载器确定所述第三类加载器中已存在与所述键类信息相对应的排序逻辑时,则运行与所述键类信息对应的排序逻辑。
在其中一个实施例中,所述装置还包括:
注册模块,被配置为执行将所述元信息注册至全局管理组件,所述全局管理组件为独立封装于所述计算引擎之外的组件;
信息发送模块,被配置为执行通过所述全局管理组件将所述元信息发送至所述混洗处理节点。
在其中一个实施例中,所述混洗处理节点的数量为多个;
所述映射模块,包括:
映射关系获取单元,被配置为执行通过混洗写入节点获取分区与混洗处理节点之间的映射关系,所述映射关系是所述全局管理组件根据所述待处理任务的分区预先构建得到的,所述混洗写入节点为独立封装于所述计算引擎之外的节点;
数据发送单元,被配置为执行通过所述混洗写入节点确定与每个所述分区对应的键值数据,按照所述映射关系将与每个所述分区对应的键值数据发送至与每个所述分区对应的混洗处理节点;
所述数据排序模块,被配置为执行通过与每个所述分区对应的混洗处理节点运行所述排序逻辑,以对每个所述分区对应的键值数据进行排序。
根据本公开实施例的第三方面,提供一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现上述任一项实施例所述的键值数据的处理方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行上述任一项实施例所述的键值数据的处理方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,所述计算机程序产品中包括指令,所述指令被电子设备的处理器执行时,使得所述电子设备能够执行上述任一项实施例所述的键值数据的处理方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
通过在计算引擎之外部署独立封装的混洗处理节点,在通过映射任务对待处理任务进行处理得到键值数据后,便可使该混洗处理节点获取与待处理任务的元信息相对应的排序逻辑,采用该排序逻辑对键值数据进行排序,实现在同时存在多种计算引擎的情况下,能够采用通用的排序机制对多种计算引擎产生的键值数据进行处理,从而可以同时满足多种计算引擎的键值数据的排序需求。此外,本公开的实施例通过提供独立部署的混洗处理节点,通过解耦的方式最大限度地减少了对原生计算引擎代码的改造程度,具有较高的通用性,且便于部署和维护。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种键值数据的处理方法的应用环境图。
图2是根据一示例性实施例示出的一种键值数据的处理方法的流程图。
图3是根据一示例性实施例示出的一种对键值数据进行排序的流程示意图。
图4是根据一示例性实施例示出的一种通过加载排序逻辑文件包对键值数据进行处理的流程图。
图5是根据一示例性实施例示出的一种通过加载排序逻辑文件包对键值数据进行处理的示意图。
图6是根据一示例性实施例示出的一种混洗处理节点的示意图。
图7是根据一示例性实施例示出的一种键值数据的处理方法的流程图。
图8是根据一示例性实施例示出的一种混洗服务的示意图。
图9是根据一示例性实施例示出的一种键值数据的处理装置的框图。
图10是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
还需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本公开所提供的键值数据的处理方法,可以应用于如图1所示的应用环境中。其中,终端110通过网络与服务器120进行交互。服务器120中部署有至少一种计算引擎,以及部署至少一种计算引擎之外的独立封装的混洗处理节点。服务器120获取终端110上传的待处理任务,以及待处理任务对应的元信息。通过计算引擎中的映射任务对待处理任务进行处理,得到键值数据,并确定每个键值数据所属的分区,将属于相同分区的键值数据进行聚合处理,并将聚合处理后的键值数据发送至混洗处理节点。混洗处理节点获取与待处理任务的元信息相对应的排序逻辑,按照该排序逻辑对每个分区下的键值数据进行排序,从而使归约任务能够拉取得到自身对应的分区下排序后的键值数据。
其中,终端110可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、便携式可穿戴设备。便携式可穿戴设备可为智能手表、智能手环等。服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
图2是根据一示例性实施例示出的一种键值数据的处理方法的流程图,如图2所示,包括以下步骤。
在步骤S210中,获取待处理任务,以及与待处理任务相对应的元信息。
其中,待处理任务可以是用户在一次算题过程中或一个事务处理中要求计算引擎所做的工作的集合。待处理任务可以是用户通过终端设备上传至计算引擎中的,也可以通过任务调度器调度至计算引擎中。
元信息是关于信息的信息,用于描述信息的结构、语义、用途和用法等。在本公开实施例中,元信息可以是与键值数据的处理相关的信息,例如,任务的键类信息(KeyClass)、键值数据的处理逻辑文件包的存储路径、任务所属的计算引擎类型等,在此不作一一赘述。其中,键类信息可以用于唯一性地表示类。类在面向对象编程中是一种面向对象计算机编程语言的构造,描述了一些对象的行为规则,而这些对象就被称为该类的实例。
元信息与任务具备映射关系,从而使服务器在获取待处理任务后,可以根据该映射关系获取待处理任务相对应的元信息。
在步骤S220中,通过计算引擎中的映射任务对待处理任务进行处理,得到键值数据,并将键值数据传输至混洗处理节点。
其中,混洗处理节点为部署在计算引擎之外的独立封装的节点,可以有自己的属性和方法,能够独立地对键值数据进行排序等处理。
具体地,计算引擎在启动待处理任务后,启动映射任务对待处理任务进行处理,产生一系列的键值数据。对于每个映射任务输出的每个键值数据,可以通过计算每个键值的哈希值,然后采用归约任务的数量对哈希值进行取模得到每个键值数据的分区。映射任务将相同分区下的键值数据进行聚合,并将聚合后的键值数据发送至混洗处理节点。
在步骤S230中,通过混洗处理节点运行与元信息相对应的排序逻辑,以对键值数据进行排序。
具体地,混洗处理节点在接收到与各个分区对应的键值数据后,从预先部署的排序逻辑和元信息的映射关系中,获取与待处理任务的元信息相对应的排序逻辑,加载该排序逻辑,以对各个分区对应的键值数据进行排序。将与各个分区相对应的排序后的键值数据存储至文件***(例如,HDFS,Hadoop分布式文件***)中。
一个示例中,元信息包括待处理任务相对应的计算引擎类型。预先部署与Spark对应的排序逻辑为基于哈希的混洗,与MapReduce对应的排序逻辑为基于排序的混洗。若待处理任务的计算引擎类型为Spark,则混洗处理节点在接收到按分区聚合后的键值数据后,可以不对各个分区的键值数据进行排序,直接执行基于哈希的混洗方式。若待处理任务的计算引擎类型为MapReduce,则混洗处理节点在接收到按分区聚合后的键值数据后,按照与MapRedce相对应的排序方式对各个分区的键值数据进行排序。
另一个示例中,元信息包括待处理任务相对应的键类信息。预先部署键类信息与排序逻辑之间的映射关系。混洗处理节点在接收到按分区聚合后的键值数据后,可以基于键类信息与排序逻辑之间的映射关系,按照与待处理任务的键类信息相对应的排序逻辑对各个分区的键值数据进行排序。
一个实施例中,在混洗处理节点对待处理任务处理完毕后,计算引擎可以启动归约任务,使每个归约任务从文件***中拉取得到自身对应的分区下的键值数据。
上述键值数据的处理方法中,通过在计算引擎之外部署独立封装的混洗处理节点。在通过映射任务对待处理任务进行处理得到键值数据后,便可使该混洗处理节点获取与待处理任务的元信息相对应的排序逻辑,采用该排序逻辑对键值数据进行排序,实现在同时存在多种计算引擎的情况下,能够采用通用的排序机制对多种计算引擎产生的键值数据进行处理,从而可以同时满足多种计算引擎的键值数据的排序需求。此外,本公开的实施例通过提供独立部署的混洗处理节点,通过解耦的方式最大限度地减少了对原生计算引擎代码的改造程度,具有较高的通用性,且便于部署和维护。
在一示例性实施例中,所述方法还包括:将元信息注册至全局管理组件;通过全局管理组件将元信息发送至混洗处理节点。
其中,全局管理组件为部署在计算引擎之外的独立封装的组件,可以但不限于用于全局资源调度、全局任务管理、混洗处理节点的生命周期管理、处理混洗处理节点的心跳请求。
具体地,计算引擎在启动待处理任务以及对应的元信息后,可以将待处理任务的元信息注册至全局管理组件。一个实施例中,全局管理组件可以将待处理任务的元信息下发到混洗处理节点。另一个实施例中,混洗处理节点可以在接收到各个分区对应的聚合后的键值数据后,从全局管理组件的注册信息中主动获取得到待处理任务的元信息。
本实施例中,通过在计算引擎之外部署独立封装的全局管理组件,使资源能够被集中调度、信息能够被集中管理,便于进行全局控制和管理。
在一示例性实施例中,混洗处理节点的数量为多个。如图3所示,在步骤S220中,将键值数据传输至混洗处理节点,包括:
在步骤S310中,通过混洗写入节点获取分区与混洗处理节点之间的映射关系,映射关系是全局管理组件根据待处理任务的分区预先构建得到的。
其中,混洗写入节点可以为部署在计算引擎之外的独立封装的节点。一个实施例中,混洗写入节点可以与计算引擎的映射任务对应部署,与映射任务属于同一个进程,共享同一个JVM(Java Virtual Machine,Java虚拟机)。一个示例中,混洗写入节点可以作为SDK(Software Development Kit,软件开发工具包)嵌入在计算引擎侧的映射任务中。
具体地,当待处理任务启动后,全局管理组件获取待处理任务的分区,生成混洗处理节点和分区之间的映射关系,并将该映射关系发送至混洗写入节点。一个示例中,待处理任务包括A个分区,全局管理组件可以从混洗处理节点中确定出A个当前空余的节点,生成分区和混洗处理节点之间的一一对应关系。
在步骤S320中,通过混洗写入节点确定与每个分区对应的键值数据,按照映射关系将与每个分区对应的键值数据发送至与每个分区对应的混洗处理节点。
具体地,映射任务对待处理任务进行处理得到键值数据之后,将键值数据发送至混洗写入节点,通过混洗写入节点根据分区和混洗处理节点之间的映射关系,将与各个分区对应的键值数据发送至与各个分区对应的混洗处理节点。
一个实施例中,混洗写入节点与映射任务可以具备一一对应的关系。即,若存在M个映射任务,则部署有与每个映射任务相对应的混洗写入节点。每个混洗写入节点用于将相对应的映射任务发送的键值数据分别发送至与分区对应的混洗处理节点。
在本实施例中,步骤S230中,通过混洗处理节点运行与元信息相对应的排序逻辑,以对键值数据进行排序,可以通过步骤S330实现。在步骤S330中,通过与每个分区对应的混洗处理节点运行排序逻辑,以对每个分区对应的键值数据进行排序。
本实施例中,通过部署独立封装的混洗写入节点和多个混洗处理节点,建立分区和混洗处理节点的映射关系,相对于相关技术中的各个映射任务的数据隔离处理而言,能够按照分区对多个映射任务输出数据进行聚合处理,使归约任务无需从各个映射任务对应的本地文件中的拉取数据,从而可以减少数据IO(输入输出)次数,提升混洗的输入输出效率。
在一示例性实施例中,如图4所示,混洗处理节点中部署有第一类加载器,元信息包括排序逻辑文件包的存储路径。
其中,类加载器负责加载类,其为所有被载入内存中的类生成一个实例对象。一旦一个类被加载如JVM中,同一个类不会被再次载入。如上述实施例所述,每个类对应唯一性的键类信息。排序逻辑文件包可以是指对采用代码编写的类进行打包形成的文件包。例如,Jar(一种计算机文件格式)包。
在本实施例中,步骤S230,通过混洗处理节点运行与元信息相对应的排序逻辑,具体可以通过以下步骤实现:
在步骤S410中,通过混洗处理节点中的第一类加载器获取存储于存储路径中的排序逻辑文件包。
在步骤S420中,通过第一类加载器加载排序逻辑文件包,以运行排序逻辑。
一个实施例中,在启动待处理任务的同时,还可以获取排序逻辑文件包的存储路径,将该存储路径注册至全局管理组件,以便于混洗处理节点从全局管理组件中获取该存储路径。混洗处理节点中的第一类加载器获取存储于该存储路径中的排序逻辑文件包,并加载排序逻辑文件包,以运行排序逻辑文件包对各个分区下的键值数据进行排序。
另一个实施例中,在启动待处理任务同时,还可以获取待处理任务的排序逻辑文件包。将排序逻辑文件包上传至文件***。获取排序逻辑文件包在文件***中的存储路径,并将该存储路径注册至全局管理组件中,以便于混洗处理节点从全局管理组件中获取该存储路径。混洗处理节点中的第一类加载器获取存储于该存储路径中的排序逻辑文件包,并加载排序逻辑文件包,以运行排序逻辑文件包对各个分区下的键值数据进行排序。
另一个实施例中,待处理任务与第一类加载器之间可以具有一一对应关系,对每个待处理任务实例化对应的一个第一类加载器,能够确保任务级别的类加载隔离,避免类之间互相影响。
图5示例性示出了基于指定的排序逻辑文件包对键值数据进行处理的示意图。如图5所示,可以通过以下步骤实现:
(1)当待处理任务(Job)启动时,首先将包含自定义排序逻辑的排序逻辑文件包(Jar包)上传到HDFS远程存储上。
(2)将排序逻辑文件包在HDFS的存储路径,以及排序逻辑文件包的键类信息上传至全局管理组件。
(3)混洗处理节点从全局管理组件处获取待处理任务的元信息,元信息包含排序逻辑文件包的存储路径。
(4)当混洗处理节点判断键值数据已达到一定阈值,需要输出到HDFS时,按需动态从HDFS中拉取Jar包到本地,并加载对应的类到内存中。
本实施例中,通过支持用户自定义上传排序逻辑文件包,能够灵活地满足用户的高阶排序需求。通过部署第一类加载器,实现任务级别的类加载,能够使不同任务的类之间的加载不会互相影响,实现任务级别的类加载隔离,从而可以保障数据一致性。
在一示例性实施例中,在一些情况下,通过预设工具提交的任务量大,且具有相同的键类信息。例如,在一些***中90%的任务通过Hive(一个数据仓工具)提交,且通过Hive提交的待处理任务具有相同的键类信息。因此,在本实施例中,混洗处理节点中还部署有第二类加载器。第二类加载器可以视为第一类加载器的缓存层。在步骤S410,通过混洗处理节点中的第一类加载器获取存储于存储路径中的排序逻辑文件包之前,还可以执行以下处理。
具体地,当混洗处理节点接收到各个分区对应的键值数据之后,在确定待处理任务通过预设工具提交的情况下,通过第一类加载器确定第二类加载器中是否存在与预设工具相对应的排序逻辑。若通过第一类加载器确定第二类加载器中不存在与预设工具相对应的排序逻辑,则继续获取排序逻辑文件包的存储路径,并获取存储于该存储路径中的排序逻辑文件包,以对键值数据进行排序。若通过第一类加载器确定第二类加载器中存在与预设工具相对应的排序逻辑,则可以通过第一类加载器加载该排序逻辑,以对各个分区的键值数据进行排序。
本实施例中,通过根据待处理任务的提交工具预判待处理任务相对应的排序逻辑,可以减少拉取和加载排序逻辑文件包的次数,从而能够加快键值数据的处理效率,减少因加载排序逻辑文件包而产生的网络和磁盘的IO耗费,改善混洗服务的性能。
在一示例性实施例中,混洗处理节点中还部署有第三类加载器,第三类加载器可以视为第一类加载器的缓存层,与第二类加载器可以为相同的加载器。在本实施例中,元信息还包括待处理任务的键类信息。在步骤S410,通过混洗处理节点中的第一类加载器获取存储于存储路径中的排序逻辑文件包之前,还包括:通过第一类加载器确定第三类加载器中不存在与键类信息相对应的排序逻辑。
具体地,当混洗处理节点接收到各个分区对应的键值数据之后,通过第一类加载器确定第三类加载器中是否存在与键类信息相对应的排序逻辑。若不存在,则继续获取排序逻辑文件包的存储路径,并加载存储于该存储路径中的排序逻辑文件包。若存在,则可以通过第一类加载器运行与该键类信息相对应的排序逻辑。
一个实施例中,可以配置键类信息、预设工具、排序逻辑文件包的优先级。采用优先级最高的排序方式对键值数据进行排序。
本实施例中,通过在待处理任务中携带键类信息,预先判断是否已存在与该键类信息相对应的排序逻辑,可以减少拉取和加载排序逻辑文件包的次数,从而可以加快键值数据的处理效率,减少因加载排序逻辑文件包而产生的网络和磁盘的IO耗费。
在一个具体的实施例中,图6示出了混洗处理节点的内部流程示意图。可以理解的是,在混洗处理节点的数量为多个的情况下,图6表示每个混洗处理节点的工作流程。在图6中,第二类加载器和第三类加载器为同一个加载器(图6中的CommonClassLoader),为全局共享的类加载器。第一类加载器(SessionClassLoader)的数量包括多个。待处理任务与第一类加载器之间具有一一对应关系。具体可以通过以下步骤实现:
(1)混洗处理节点启动时,从全局管理组件中获取待处理任务的元信息。通过第二类加载器从本地数据库中预加载已存在的排序逻辑文件包。
(2)采用与待处理任务对应的第一类加载器,从第二类加载器中加载是否存在与预设工具的键类信息相对应的排序逻辑。或者,采用与待处理任务对应的第一类加载器,从第二类加载器中加载是否存在与待处理任务的键类信息相对应的排序逻辑。
(3)若(2)中为都不存在,则根据元信息中包含的存储路径从HDFS中获取排序逻辑文件包,运行该排序逻辑文件包,以对各个分区对应的键值数据进行排序。
图7是根据一示例性实施例示出的一种键值数据的处理方法的流程图,如图7所示,该方法应用于部署在计算引擎之外的混洗服务。图9示例性示出了一种混洗服务的示意图。如图9所示,混洗服务包括分别独立封装的任务管理组件(App Shuffle Master,ASM)、全局管理组件(Shuffle Master)、混洗写入节点(Shuffle Writer)、混洗处理节点(Shuffle Worker)、混洗读取节点(Shuffle Reader)。以下对各个组件的功能进行说明。
全局管理组件:负责全局资源调度、全局任务管理、混洗处理节点的生命周期管理、混洗处理节点的心跳请求等。
任务管理组件:可以与计算引擎中的任务管理器(ApplicationMaster)对应部署,与任务管理器属于同一个进程,共享同一个JVM。一个示例中,任务管理组件可以作为SDK嵌入在任务管理器中。任务管理组件负责单个任务的资源管理、处理混洗写入节点和混洗读取节点的RPC(Remote Procedure Call,远程过程调用)请求、管理混洗写入节点和混洗读取节点的生命周期。
混洗写入节点:可以作为SDK嵌入在计算引擎侧的映射任务中,负责将映射任务处理得到的键值数据按照分区维度发送到对应的混洗处理节点上。在混洗处理节点将排序后的键值数据完全持久化之后再安全退出。
混洗处理节点:负责将键值数据按照分区维度聚合、排序,并溢写到远端HDFS中。溢写完成后,通知任务管理组件和混洗写入节点持久化的结果。
混洗读取节点,可以与计算引擎侧的归约任务对应部署,与归约任务属于同一个进程,共享同一个JVM。一个实施例中,混洗读取节点可以作为SDK嵌入在归约任务中。另一个实施例中,混洗读取节点和归约任务可以具备一一对应关系。混洗读取节点负责从HDFS拉取待处理的混洗文件集合,根据一致性元数据在本地做去重后返回给计算引擎侧。
在图8所示的混洗服务的基础上,以待处理任务为Mapreduce Job为例,参照图7,对键值数据的处理方法进行说明。
在步骤S702中,一个Mapreduce Job(即Mapreduce中的任务管理器)启动,随之启动任务管理组件。
在步骤S704中,将Mapreduce Job对应的排序逻辑文件包存储至HDFS中,并获取对应的存储路径。将Mapreduce Job的元信息注册至全局管理组件中。其中,元信息包括Mapreduce Job的排序逻辑文件包的存储路径和键类信息。
在步骤S706中,任务管理组件向全局管理组件申请资源,请求全局管理组件确定待处理任务的分区与混洗处理节点之间的映射关系。在申请成功之后开始混洗服务模式。
在步骤S708中,任务管理器启动映射任务。混洗写入节点随映射任务启动,两者共享同一进程。混洗写入节点启动后向任务管理组件获取分区与混洗处理节点之间的映射关系。
在步骤S710中,各个映射任务将处理得到的键值数据通过接口写入到对应的混洗写入节点的本地buffer(缓冲寄存器)中。再由混洗写入节点按照分区与混洗处理节点之间的映射关系,将缓冲寄存器中的键值数据主动发送到与分区对应的混洗处理节点上。
在步骤S712中,各个混洗处理节点按照分区维度对键值数据进行排序,并将排序后的键值数据持久化到HDFS中。其中,对键值数据进行排序具体可以通过以下步骤实现:
(1)当Mapreduce Job通过预设工具(Hive)提交时,通过第一类加载器确定第二类加载器中是否存在与Hive的键类信息相对应的排序逻辑。若存在,则运行与Hive的键类信息相对应的排序逻辑,以对各个分区下的键值数据进行排序。
(2)当Mapreduce Job未通过Hive提交时,通过第一类加载器确定第二类加载器中是否存在与Mapreduce Job的键类信息相对应的排序逻辑。若存在,则运行与MapreduceJob的键类信息相对应的排序逻辑,以对各个分区下的键值数据进行排序。
(3)当第二类加载器中不存在与Mapreduce Job的键类信息相对应的排序逻辑,则从全局管理组件中获取排序逻辑文件包的存储路径,从存储路径中获取排序逻辑文件包,并加载该排序逻辑文件包,以对各个分区下的键值数据进行排序。
在步骤S714中,各个混洗处理节点将各个分区下排序后的键值数据在HDFS的存储路径发送至任务管理组件。
在步骤S716中,当映射阶段完成之后,任务管理器启动归约任务。混洗读取节点随归约任务启动。启动后的混洗读取节点从任务管理组件处获取各个分区对应的存储路径,根据各个分区对应的存储路径从HDFS读取键值数据,在本地去重后将读取到的键值数据返回给计算引擎侧的归约任务。
应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
可以理解的是,本说明书中上述方法的各个实施例之间相同/相似的部分可互相参见,每个实施例重点说明的是与其他实施例的不同之处,相关之处参见其他方法实施例的说明即可。
图9是根据一示例性实施例示出的一种键值数据的处理装置X00框图。参照图9,该装置包括获取模块X02、映射模块X04、数据排序模块X06。
获取模块X02,被配置为执行获取待处理任务,以及与待处理任务相对应的元信息;映射模块X04,被配置为执行通过计算引擎中的映射任务端对待处理任务进行处理,得到键值数据,并将键值数据传输至混洗处理节点,混洗处理节点为独立封装于计算引擎之外的节点;数据排序模块X06,被配置为执行通过混洗处理节点运行与元信息相对应的排序逻辑,以对键值数据进行排序。
在一示例性实施例中,混洗处理节点中部署有第一类加载器,元信息包括排序逻辑文件包的存储路径;数据排序模块X06,包括:文件包获取单元,被配置为执行通过混洗处理节点中的第一类加载器获取存储于存储路径中的排序逻辑文件包;第一加载单元,被配置为执行通过第一类加载器加载排序逻辑文件包,以运行排序逻辑。
在一示例性实施例中,混洗处理节点中还部署有第二类加载器;数据排序模块X06,还包括:提交工具确定单元,被配置为执行在所述待处理任务通过预设工具提交的情况下,通过所述第一类加载器确定所述第二类加载器中不存在与所述预设工具相对应的排序逻辑。
在一示例性实施例中,数据排序模块X06,还包括:第二加载单元,被配置为执行当通过所述第一类加载器确定所述第二类加载器中存在与所述预设工具相对应的排序逻辑时,通过所述第一类加载器运行与所述预设工具相对应的排序逻辑。
在一示例性实施例中,混洗处理节点中还部署有第三类加载器;元信息还包括待处理任务的键类信息;数据排序模块X06,还包括:查询单元,被配置为执行通过所述第一类加载器确定所述第三类加载器中不存在与所述键类信息相对应的排序逻辑。
在一示例性实施例中,数据排序模块X06,还包括:第三加载单元,被配置为执行当通过所述第一类加载器确定所述第三类加载器中已存在与所述键类信息相对应的排序逻辑时,运行与所述键类信息对应的排序逻辑。
在一示例性实施例中,装置X00还包括:注册模块,被配置为执行将元信息注册至全局管理组件,全局管理组件为独立封装于计算引擎之外的组件;信息发送模块,被配置为执行通过全局管理组件将元信息发送至混洗处理节点。
在一示例性实施例中,混洗处理节点的数量为多个;映射模块X04,包括:映射关系获取单元,被配置为执行通过混洗写入节点获取分区与混洗处理节点之间的映射关系,映射关系是全局管理组件根据待处理任务的分区预先构建得到的,混洗写入节点为独立封装于计算引擎之外的节点;数据发送单元,被配置为执行通过混洗写入节点确定与每个分区对应的键值数据,按照映射关系将与每个分区对应的键值数据发送至与每个分区对应的混洗处理节点;数据排序模块X06,被配置为执行通过与每个分区对应的混洗处理节点运行排序逻辑,以对每个分区对应的键值数据进行排序。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图10是根据一示例性实施例示出的一种用于对键值数据进行处理的电子设备S00的框图。例如,电子设备S00可以为服务器。参照图10,电子设备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.根据权利要求3所述的键值数据的处理方法,其特征在于,所述方法还包括:
当通过所述第一类加载器确定所述第二类加载器中存在与所述预设工具相对应的排序逻辑时,通过所述第一类加载器运行与所述预设工具相对应的排序逻辑。
5.根据权利要求2所述的键值数据的处理方法,其特征在于,所述混洗处理节点中还部署有第三类加载器;所述元信息还包括所述待处理任务的键类信息;
在所述通过所述混洗处理节点中的所述第一类加载器获取存储于所述存储路径中的所述排序逻辑文件包之前,还包括:
通过所述第一类加载器确定所述第三类加载器中不存在与所述键类信息相对应的排序逻辑。
6.根据权利要求5所述的键值数据的处理方法,其特征在于,所述方法还包括:
当通过所述第一类加载器确定所述第三类加载器中已存在与所述键类信息相对应的排序逻辑时,则运行与所述键类信息对应的排序逻辑。
7.一种键值数据的处理装置,其特征在于,所述装置包括:
获取模块,被配置为执行获取待处理任务,以及与所述待处理任务相对应的元信息;
映射模块,被配置为执行通过计算引擎中的映射任务对所述待处理任务进行处理,得到键值数据,并将所述键值数据传输至混洗处理节点,所述混洗处理节点为独立封装于所述计算引擎之外的节点;
数据排序模块,被配置为执行通过所述混洗处理节点运行与所述元信息相对应的排序逻辑,以对所述键值数据进行排序。
8.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6中任一项所述的键值数据的处理方法。
9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至6中任一项所述的键值数据的处理方法。
10.一种计算机程序产品,所述计算机程序产品中包括指令,其特征在于,所述指令被电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至6任一项所述的键值数据的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111555578.XA CN114237892A (zh) | 2021-12-17 | 2021-12-17 | 键值数据的处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111555578.XA CN114237892A (zh) | 2021-12-17 | 2021-12-17 | 键值数据的处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114237892A true CN114237892A (zh) | 2022-03-25 |
Family
ID=80758403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111555578.XA Pending CN114237892A (zh) | 2021-12-17 | 2021-12-17 | 键值数据的处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114237892A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116048817A (zh) * | 2023-03-29 | 2023-05-02 | 腾讯科技(深圳)有限公司 | 数据处理控制方法、装置、计算机设备和存储介质 |
CN116205411A (zh) * | 2023-04-27 | 2023-06-02 | 山东铁路投资控股集团有限公司 | 一种基于大数据的物资用量核查方法、装置、设备及介质 |
-
2021
- 2021-12-17 CN CN202111555578.XA patent/CN114237892A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116048817A (zh) * | 2023-03-29 | 2023-05-02 | 腾讯科技(深圳)有限公司 | 数据处理控制方法、装置、计算机设备和存储介质 |
CN116048817B (zh) * | 2023-03-29 | 2023-06-27 | 腾讯科技(深圳)有限公司 | 数据处理控制方法、装置、计算机设备和存储介质 |
CN116205411A (zh) * | 2023-04-27 | 2023-06-02 | 山东铁路投资控股集团有限公司 | 一种基于大数据的物资用量核查方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11681564B2 (en) | Heterogeneous computing-based task processing method and software and hardware framework system | |
US10884812B2 (en) | Performance-based hardware emulation in an on-demand network code execution system | |
US10831562B2 (en) | Method and system for operating a data center by reducing an amount of data to be processed | |
CN107710161B (zh) | 用于增加的工作流优化的独立可联网硬件加速器 | |
CN110262901B (zh) | 一种数据处理方法及数据处理*** | |
US20170039239A1 (en) | Distributed resource-aware task scheduling with replicated data placement in parallel database clusters | |
US20160188391A1 (en) | Sophisticated run-time system for graph processing | |
US9304835B1 (en) | Optimized system for analytics (graphs and sparse matrices) operations | |
CN109447274B (zh) | 用于执行机器学习的分布式***及其方法 | |
CN114237892A (zh) | 键值数据的处理方法、装置、电子设备及存储介质 | |
CN107729353B (zh) | 用于执行机器学习的分布式***及其方法 | |
CN112256414A (zh) | 一种连接多种计算存储引擎的方法及*** | |
CN116302574B (zh) | 一种基于MapReduce的并发处理方法 | |
CN114237510B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113886111B (zh) | 一种基于工作流的数据分析模型计算引擎***及运行方法 | |
US11144359B1 (en) | Managing sandbox reuse in an on-demand code execution system | |
US11880703B2 (en) | Optimization of multi-layered images | |
CN113485830A (zh) | 一种电网监控***微服务自动扩容方法 | |
US11561824B2 (en) | Embedded persistent queue | |
CN114237891A (zh) | 资源调度方法、装置、电子设备及存储介质 | |
US9659041B2 (en) | Model for capturing audit trail data with reduced probability of loss of critical data | |
US8832176B1 (en) | Method and system for processing a large collection of documents | |
US20230185631A1 (en) | Embedded capacity-computer module for microservice load balancing and distribution | |
CN115629860A (zh) | 软件参数调优方法、容器管理平台、存储介质及*** | |
US11734291B2 (en) | Parallel execution of API calls using local memory of distributed computing devices |
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 |