CN117311593A - 数据处理方法、装置及*** - Google Patents
数据处理方法、装置及*** Download PDFInfo
- Publication number
- CN117311593A CN117311593A CN202210981958.8A CN202210981958A CN117311593A CN 117311593 A CN117311593 A CN 117311593A CN 202210981958 A CN202210981958 A CN 202210981958A CN 117311593 A CN117311593 A CN 117311593A
- Authority
- CN
- China
- Prior art keywords
- dpu
- data
- memory
- memory address
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 238000000034 method Methods 0.000 claims abstract description 239
- 230000008569 process Effects 0.000 claims abstract description 189
- 238000004891 communication Methods 0.000 claims abstract description 175
- 238000012545 processing Methods 0.000 claims abstract description 96
- 230000015654 memory Effects 0.000 claims description 602
- 230000004044 response Effects 0.000 claims description 78
- 238000013500 data storage Methods 0.000 claims description 28
- 239000007787 solid Substances 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 17
- 230000009471 action Effects 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 9
- 230000006698 induction Effects 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 abstract description 18
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 20
- 238000010586 diagram Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 101150064138 MAP1 gene Proteins 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101150009249 MAP2 gene Proteins 0.000 description 1
- 101100075995 Schizosaccharomyces pombe (strain 972 / ATCC 24843) fma2 gene Proteins 0.000 description 1
- 101100456045 Schizosaccharomyces pombe (strain 972 / ATCC 24843) map3 gene Proteins 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 101150014751 map4 gene Proteins 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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
本申请公开了一种数据处理方法、装置及***,属于计算机技术领域。通过在计算节点和存储节点中分别部署DPU,并且使计算节点中的DPU与存储节点中的DPU建立通信链接。计算节点中的多个业务进程只需要与该计算节点中的DPU交互,再由该计算节点中的DPU通过通信链接与存储节点中的DPU交互,就能够实现在存储节点中写数据或从存储节点中读数据。单个计算节点与存储节点之间只需通过DPU建立一条通信链接即可,解决了目前计算节点与存储节点由于链接数目过多导致数据传输性能下降的问题,进而提高了数据处理效率。
Description
本申请要求于2022年06月25日提交的申请号为202210731856.0,发明名称为“一种数据处理的方法和计算***”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及计算机技术领域,特别涉及一种数据处理方法、装置及***。
背景技术
映射归纳(MapReduce,MR)模型是一种大数据分布式处理模型,用于大规模数据集的并行运算。MapReduce通过把作业分成任务(tasks)的形式来运行该作业。其中任务分为映射(map)任务和归纳(reduce)任务这两种。由于分布式情况下,数据分布在不同节点,因此不同节点上的数据在由map任务处理完后将临时数据写在本地磁盘,后续由reduce任务所在节点将数据远程读取到本地,完成数据的处理。这个数据交换的过程被称为shuffle。
随着大数据存储计算分离和云化趋势,为了降低硬件成本并提升资源利用率,业界提出了远程shuffle(remote shuffle)架构。远程shuffle架构包括计算节点和远程shuffle服务(remote shuffle service,RSS)节点。远程shuffle架构下,将磁盘统一部署在RSS节点上,由RSS节点提供存储服务。计算节点将shuffle过程中产生的临时数据存放到RSS节点的本地磁盘中。具体实现时,计算节点上运行MR进程,该MR进程与RSS节点上的RSS进程之间通过传输控制协议(transmission control protocol,TCP)链接或远程直接内存访问(remote direct memory access,RDMA)队列对(queue pairs,QP)(统称:通信链接)进行数据传输,并由RSS进程与RSS节点上部署的本地磁盘交互,以完成shuffle读和/或shuffle写。其中,MR进程为业务进程,计算节点运行一个MR进程,表示该计算节点执行一个map任务或一个reduce任务。
在大数据处理场景下,一个计算节点会同时执行多个map任务和/或reduce任务,即计算节点会同时运行多个MR进程。由于每个MR进程都需要分别与RSS进程建立通信链接,会导致计算节点与RSS节点之间有大量的通信链接,而链接数目过多会造成数据传输性能的急剧下降,从而影响数据处理效率。
发明内容
本申请提供了一种数据处理方法、装置及***,可以提高远程shuffle架构下的数据处理效率。
第一方面,提供了一种数据处理方法,应用于计算节点。计算节点包括第一数据处理单元(data process unit,DPU)。第一DPU与存储节点中的第二DPU之间建立有通信链接。第一DPU中存储有内存地址分配信息。该内存地址分配信息用于指示存储节点分配给计算节点的物理内存对应的虚拟内存地址。该方法包括:第一DPU接收来自计算节点中的第一业务进程的内存分配请求。第一DPU根据内存地址分配信息,在存储节点分配给计算节点的物理内存对应的虚拟内存地址中,确定分配给第一业务进程的虚拟内存地址范围。当第一DPU接收到来自第一业务进程的数据存储请求时,第一DPU通过通信链接向第二DPU发送写数据请求。该数据存储请求包括第一数据和第一内存地址。第一内存地址属于该虚拟内存地址范围。该写数据请求包括第一数据和第一内存地址。该写数据请求用于请求第二DPU将第一数据写入第一内存地址对应的物理内存中。
本申请中,通过在计算节点和存储节点中分别部署DPU,并且使计算节点中的DPU与存储节点中的DPU建立通信链接。存储节点中的DPU通过该通信链接向计算节点中的DPU同步内存地址分配信息,使得计算节点中的DPU预先存储有该存储节点分配给该计算节点的物理内存对应的虚拟内存地址。这样,计算节点可以通过DPU实现远程内存直接映射,以实现对存储节点的物理内存的直接访问。具体实现时,计算节点中的DPU可以根据内存地址分配信息,为该计算节点中的业务进程自行分配存储节点中的可用内存。对于业务进程而言,业务进程只需与计算节点中的DPU进行交互即可获得可用内存,进一步可以通过计算节点中的DPU向存储节点中的可用内存写数据。计算节点中的不同业务进程无需与存储节点分别建立通信链接,单个计算节点与存储节点之间只需通过DPU建立一条通信链接即可,大大减少了计算节点与存储节点之间的链接数目,可以缓解计算节点或存储节点因链接数目过多导致的内存底噪过大的问题,从而能够保证计算节点与存储节点之间的数据传输效率,进而能够提高数据处理效率,并且提高了数据处理的可靠性和稳定性。
可选地,在第一DPU通过通信链接向第二DPU发送写数据请求之后,当第一DPU通过通信链接接收到来自第二DPU的写数据响应,且该写数据响应指示第一数据已写入成功时,第一DPU向第一业务进程发送数据存储响应,该数据存储响应指示第一数据已存储成功。第一业务进程在元数据服务设备中存储第一数据对应的第一元数据。第一元数据包括第一内存地址。其中,元数据服务设备可以是该计算节点,或者也可以是独立于该计算节点和存储节点的其它设备。
可选地,当第一DPU接收到来自计算节点中的第二业务进程的数据读取请求时,第一DPU通过通信链接向第二DPU发送读数据请求。该数据读取请求包括第二内存地址。第二内存地址为存储节点中的物理内存对应的虚拟内存地址。该读数据请求包括第二内存地址。该读数据请求用于请求第二DPU从第二内存地址对应的物理内存中读取第二数据。
本申请中,当业务进程需要从存储节点中读取数据时,业务进程只需通过计算节点中的DPU从存储节点中的相应内存中拉取数据。计算节点中的不同业务进程无需与存储节点分别建立通信链接,单个计算节点与存储节点之间只需通过DPU建立一条通信链接即可,大大减少了计算节点与存储节点之间的链接数目,可以缓解计算节点或存储节点因链接数目过多导致的内存底噪过大的问题,从而能够保证计算节点与存储节点之间的数据传输效率,进而能够提高数据处理效率,并且提高了数据处理的可靠性和稳定性。
可选地,在第一DPU通过通信链接向第二DPU发送读数据请求之后,当第一DPU通过通信链接接收到来自第二DPU的包括第二数据的读数据响应时,第一DPU将第二数据写入计算节点的目标缓存中。第二业务进程从目标缓存中读取第二数据。
可选地,读数据请求还包括目标缓存的缓存地址,该读数据请求用于请求第二DPU将从第二内存地址对应的物理内存中读取的数据写入目标缓存中。相应地,读数据响应还包括目标缓存的缓存地址,读数据响应用于指示第一DPU将第二数据写入目标缓存中。
可选地,第一业务进程是map进程。可选地,第二业务进程是reduce进程。
可选地,计算节点上电后,第一DPU与第二DPU建立通信链接。然后第一DPU接收第二DPU发送的内存地址分配信息。该通信链接可以是长连接。
可选地,第一DPU包括第一RDMA网卡,第二DPU包括第二RDMA网卡。第一DPU与第二DPU之间的通信链接为第一RDMA网卡与第二RDMA网卡之间建立的RDMA链接。
第二方面,提供了一种数据处理方法,应用于存储节点。该存储节点包括第一DPU。第一DPU与计算节点中的第二DPU之间建立有通信链接。该方法包括:第一DPU通过通信链接接收来自第二DPU的写数据请求,该写数据请求包括第一数据和第一内存地址。第一内存地址为存储节点分配给计算节点的物理内存对应的虚拟内存地址。第一DPU将第一数据写入第一内存地址对应的物理内存中。第一DPU通过通信链接向第二DPU发送写数据响应,该写数据响应指示第一数据已写入成功。
可选地,第一DPU通过通信链接接收来自第二DPU的读数据请求,该读数据请求包括第二内存地址,第二内存地址为存储节点中的物理内存对应的虚拟内存地址。第一DPU从第二内存地址对应的物理内存中读取第二数据。第一DPU通过通信链接向第二DPU发送读数据响应,该读数据响应包括第二数据。
可选地,读数据请求还包括目标缓存的缓存地址,读数据请求用于请求第一DPU将从第二内存地址对应的物理内存中读取的数据写入目标缓存中。相应地,读数据响应还包括目标缓存的缓存地址,读数据响应用于指示第二DPU将第二数据写入目标缓存中。
可选地,第一DPU获取存储节点的物理内存对应的虚拟内存地址。在第一DPU与第二DPU建立通信链接之后,第一DPU向第二DPU发送内存地址分配信息,该内存地址分配信息包括存储节点分配给计算节点的物理内存对应的虚拟内存地址。
可选地,存储节点包括多个存储器,第一DPU获取存储节点的物理内存对应的虚拟内存地址的一种实现方式,包括:第一DPU对多个存储器统一编址,得到存储节点的物理内存对应的虚拟内存地址。
可选地,第一DPU包括第一RDMA网卡,第二DPU包括第二RDMA网卡。第一DPU与第二DPU之间的通信链接为第一RDMA网卡与第二RDMA网卡之间建立的RDMA链接。
可选地,存储节点包括固态硬盘。第一DPU与固态硬盘通过内存访问接口连接。该内存访问接口包括缓存和内存控制芯片。该缓存用于存储第一DPU写入固态硬盘的待存储数据,内存控制芯片用于将缓存中的待存储数据写入固态硬盘中。该内存控制芯片还用于将第一DPU从固态硬盘中读取的待读取数据写入缓存中,以供第一DPU从缓存中读取待读取数据。
本申请中,存储节点中的DPU可以通过内存访问接口直接从固态硬盘中读写数据,无需通过OS文件***,可以提高磁盘访问效率,从而提高数据处理效率。
可选地,内存访问接口集成在固态硬盘上。
第三方面,提供了一种计算节点。所述计算节点包括DPU,所述DPU包括多个功能模块,所述多个功能模块相互作用,实现上述第一方面及其各实施方式中的方法。所述多个功能模块可以基于软件、硬件或软件和硬件的结合实现,且所述多个功能模块可以基于具体实现进行任意组合或分割。
第四方面,提供了一种存储节点。所述存储节点包括DPU,所述DPU包括多个功能模块,所述多个功能模块相互作用,实现上述第二方面及其各实施方式中的方法。所述多个功能模块可以基于软件、硬件或软件和硬件的结合实现,且所述多个功能模块可以基于具体实现进行任意组合或分割。
第五方面,提供了一种计算节点,包括:DPU和中央处理单元(central processingunit,CPU)。所述CPU,用于调用包含程序指令的计算机程序,实现运行业务进程。所述DPU,用于调用包含程序指令的计算机程序,实现上述第一方面及其各实施方式中第一DPU执行的动作。
第六方面,提供了一种存储节点,包括:DPU和存储器。所述DPU,用于调用包含程序指令的计算机程序,从所述存储器中读取数据和/或向所述存储器写入数据,实现上述第二方面及其各实施方式中第一DPU执行的动作。
第七方面,提供了一种数据处理***,包括:如第三方面或第五方面所述的计算节点以及如第四方面或第六方面所述的存储节点。该数据处理***可以应用于远程shuffle架构。
其中,计算节点包括第一DPU和CPU。存储节点包括第二DPU和存储器。第一DPU与第二PDU之间建立有通信链接。第一DPU中存储有内存地址分配信息,该内存地址分配信息用于指示存储节点分配给计算节点的物理内存对应的虚拟内存地址。存储节点中的物理内存属于存储器。
在计算节点向存储节点写入数据的过程(shuffle写过程)中:
CPU用于向第一DPU发送来自第一业务进程的内存分配请求,第一业务进程为所述CPU中运行的任一map进程。第一DPU用于根据内存地址分配信息,在存储节点分配给计算节点的物理内存对应的虚拟内存地址中,确定分配给第一业务进程的虚拟内存地址范围。CPU还用于向第一DPU发送来自第一业务进程的数据存储请求,该数据存储请求包括第一数据和第一内存地址,第一内存地址属于第一DPU分配给第一业务进程的虚拟内存地址范围。第一DPU用于通过第一DPU与第二PDU之间的通信链接向第二DPU发送写数据请求,该写数据请求包括第一数据和第一内存地址。第二DPU用于将第一数据写入第一内存地址对应的物理内存中。第二DPU还用于通过第一DPU与第二PDU之间的通信链接向第一DPU发送写数据响应,该写数据响应指示第一数据已写入成功。
在计算节点从存储节点读取数据的过程(shuffle读过程)中:
CPU用于向第一DPU发送来自第二业务进程的数据读取请求,该数据读取请求包括第二内存地址,第二内存地址为存储节点中的物理内存对应的虚拟内存地址,第二业务进程为CPU中运行的任一reduce进程。第一DPU用于通过第一DPU与第二PDU之间的通信链接向第二DPU发送读数据请求,该读数据请求包括第二内存地址。第二DPU用于从第二内存地址对应的物理内存中读取第二数据。第二DPU还用于通过第一DPU与第二PDU之间的通信链接向第一DPU发送读数据响应,读数据响应包括第二数据。
第八方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令被处理器执行时,实现上述第一方面及其各实施方式中的方法或者上述第二方面及其各实施方式中的方法。
第九方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现上述第一方面及其各实施方式中的方法或者上述第二方面及其各实施方式中的方法。
第十方面,提供了一种芯片,芯片包括可编程逻辑电路和/或程序指令,当芯片运行时,实现上述第一方面及其各实施方式中的方法或者上述第二方面及其各实施方式中的方法。
附图说明
图1是本申请实施例提供的一种shuffle的过程示意图;
图2是相关技术中的一种本地磁盘用shuffle的架构示意图;
图3是相关技术中的一种远程shuffle架构示意图;
图4是相关技术中的一种远程shuffle架构下的数据交互示意图;
图5是本申请实施例提供的一种数据处理***的结构示意图;
图6是本申请实施例提供的一种远程shuffle架构下的数据交互示意图;
图7是本申请实施例提供的一种数据处理方法的流程示意图;
图8是本申请实施例提供的另一种数据处理方法的流程示意图;
图9是本申请实施例提供的一种计算节点的结构示意图;
图10是本申请实施例提供的一种存储节点的结构示意图;
图11是本申请实施例提供的一种计算节点的框图;
图12是本申请实施例提供的一种存储节点的框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
MapReduce模型是大数据分布式处理中最经典和重要的处理模型,衍生出了Hadoop、Spark、Flink、Tez等分布式大数据处理框架。当前MapReduce的软件实现是指定一个map函数和并发的reduce函数。map函数用来把一组键值对映射成一组新的键值对。reduce函数用来保证具有映射关系的所有键值对共享相同的键组。
Shuffle是MapReduce类框架中任务处理的一个阶段,指数据从map任务所在节点通过处理按照一定规则交换到reduce任务所在节点的过程。也即是,Shuffle描述着数据从map任务输出到reduce任务输入的这段过程。Shuffle是连接map和reduce之间的桥梁。由于在分布式情况下,reduce任务需要跨节点去拉取其它节点上的map任务的输出结果,因此map的输出要用到reduce中必须经过shuffle这个环节。Shuffle过程会产生网络资源消耗以及内存、磁盘的输入输出(input/output,IO)消耗。
通常shuffle分为两部分:map阶段的数据准备和reduce阶段的数据拷贝处理。Map阶段的数据准备,即map端的shuffle,一般也称为shuffle写(shuffle write)。Reduce阶段的数据拷贝处理,即reduce端的shuffle,一般也称为shuffle读(shuffle read)。
Map端的shuffle过程包括:分区(patition)、溢写(spill)和合并(merge)。分区是指,输入数据之后,将map任务读取的数据分片(split)写到对应的内存缓冲区。其中,每个map任务都有一个对应的内存缓冲区,用来存储该map任务的输出数据。溢写是指,在内存缓冲区快满的时候,将内存缓冲区的数据以临时文件的方式存放到磁盘中。合并是指,当整个map任务结束后,对磁盘中这个map任务产生的所有临时文件做合并,生成最终的输出文件,即map任务的输出结果。
Reduce端的shuffle过程包括:复制(copy)和合并。复制是指,从当前工作的每个map任务所在节点拉取map任务的输出结果。合并是指,对从各个map任务所在节点拉取过来的数据进行排序和合并,最终形成一个文件作为reduce任务的输入文件。
例如,图1是本申请实施例提供的一种shuffle的过程示意图。图1中以HadoopMapReduce shuffle为例,该shuffle的过程以数据流的方式呈现。如图1所示,Hadoop分布式文件***(Hadoop distributed file system,HDFS)中包括4个数据分片,分别为数据分片1~4,该4个数据分片为输入数据。Map端运行4个map任务,分别记为map1~4。Reduce端运行3个reduce任务,分别记为reduce1~3。Map阶段,每个map任务分别处理一个数据分片。其中,map1处理数据分片1,map2处理数据分片2,map3处理数据分片3,map4处理数据分片4。每个map任务分别通过shuffle(分区、溢写、合并)产生一个输出文件,每个输出文件分别包括3部分数据,该3部分数据分别由3个reduce任务处理。Map1产生的输出文件包括数据A1、数据B1和数据C1,map2产生的输出文件包括数据A2、数据B2和数据C2,map3产生的输出文件包括数据A3、数据B3和数据C3,map4产生的输出文件包括数据A4、数据B4和数据C4。Reduce阶段,每个reduce任务分别通过shuffle(复制、合并)拉取4个map任务产生的输出文件中对应的一部分数据,并对从4个map任务产生的输出文件中拉取过来的4份数据进行合并,作为相应reduce任务的输入文件。其中,reduce1获取的输入文件包括数据A1~A4,reduce2获取的输入文件包括数据B1~B4,reduce3获取的输入文件包括数据C1~C4。然后,每个reduce任务分别对获取的输入文件进行归纳计算,并将最终的处理结果输出至HDFS。其中,reduce1输出的处理结果为数据部分1,reduce2的输出结果为数据部分2,reduce3的输出结果为数据部分3。
相关技术中,通过在多个计算节点中分别部署MapReduce模型,实现大数据分布式处理。一个计算节点例如可以是一台服务器,或者由多台服务器组成的服务器集群。传统实现方式下,计算节点中通常部署有本地磁盘,计算节点将shuffle过程中产生的临时数据溢写在本地磁盘中。例如,图2是相关技术中的一种本地磁盘用shuffle的架构示意图。如图2所示,计算节点中的MapReduce模型通过shuffle写将产生的临时数据存放到本地磁盘中,并通过shuffle读将其它计算节点的本地磁盘中的数据远程读取到本地。
目前,计算节点中部署的本地磁盘有两种形态。一种形态是,计算节点中部署十块以上的硬盘驱动器(hard disk drive,HDD),这种形态需要大量盘位,本地磁盘占用的空间较大。另一种形态是,计算节点中部署2块万亿字节(trillion byte,TB)级非易失性存储器标准(non-volatile memory express,NVMe)固态硬盘(solid state drive,SSD),这种形态的硬件成本较高。
随着大数据存储计算分离和云化趋势,为了降低硬件成本并提升资源利用率,业界提出了远程shuffle架构。远程shuffle架构下,将磁盘统一部署在RSS节点上,这样计算节点上就无需或者可以少量部署本地磁盘。计算节点将shuffle过程中产生的临时数据存放到RSS节点的本地磁盘中。例如,图3是相关技术中的一种远程shuffle架构示意图。如图3所示,远程shuffle架构包括多个计算节点和RSS节点集群。RSS节点集群包括一个或多个RSS节点。计算节点中的MapReduce模型通过shuffle写将产生的临时数据存放到RSS节点的本地磁盘中,并通过shuffle读将RSS节点的本地磁盘中的数据远程读取到本地。
远程shuffle架构下,由于计算节点无需部署本地磁盘或者可以部署少量的本地磁盘,能够较大程度减小计算节点的体积,因此能够实现计算节点的高密度部署,进而实现高密度计算。另外,现有的分布式计算框架(如Spark需要依赖本地磁盘存储Shuffle数据)极大地限制了云原生的部署模式。使用远程shuffle架构可以有效减少对本地磁盘的依赖,支持集群的多种部署模式,提升资源利用率,助力云原生架构。
由于远程shuffle架构下,shuffle读和shuffle写全部会通过网络,因此数据传输的效率是关键瓶颈点。相关技术中,当计算节点需要执行map任务或reduce任务时,计算节点会运行一个MR进程,并在运行的MR进程与RSS节点上运行的RSS进程之间建立TCP链接或RDMA QP,使得该MR进程与RSS进程可以通过TCP链接或RDMA QP进行数据传输,并由RSS进程与RSS节点上部署的本地磁盘交互,以完成计算节点的shuffle读或shuffle写。例如,图4是相关技术中的一种远程shuffle架构下的数据交互示意图。如图4所示,远程shuffle架构包括计算节点集群和RSS节点集群。其中,计算节点集群包括n个计算节点,记为计算节点1~n,n为正整数。RSS节点集群包括m个RSS节点,记为RSS节点1~m,m为正整数。每个计算节点上的每个MR进程分别与RSS节点上的RSS进程之间建立有通信链接(TCP链接或RDMA QP)。RSS节点上的RSS进程与RSS节点上部署的本地磁盘进行交互,以向本地磁盘中写入数据或者从本地磁盘中读取数据。
在大数据处理场景下,一个计算节点会同时执行多个map任务和/或reduce任务,即计算节点会同时运行多个MR进程。由于每个MR进程都需要分别与RSS进程建立通信链接,会导致计算节点与RSS节点之间有大量的通信链接,而链接数目过多会造成数据传输性能的急剧下降,因此目前计算节点与RSS节点之间的数据传输可靠性较低。尤其对于RSS节点而言,由于一个RSS节点需要同时向多个计算节点提供存储服务,因此RSS节点上会有海量的通信链接,导致RSS节点的内存底噪过大,严重影响RSS节点的数据传输性能。另外,计算节点每当要执行新的map任务或reduce任务时,都需要与RSS节点中的RSS进程建立新的通信链接,一方面远程shuffle数据处理效率较低,另一方面频繁建链的开销较大,会影响计算节点和RSS节点的处理性能。因此,目前远程shuffle架构下的数据处理效率较低,且数据处理稳定性和可靠性也较低。
基于此,本申请实施例提供了一种技术方案。本申请通过在计算节点和存储节点中分别部署DPU,并且使计算节点中的DPU与存储节点中的DPU建立通信链接。存储节点中的DPU通过该通信链接向计算节点中的DPU同步内存地址分配信息,使得计算节点中的DPU预先存储有该存储节点分配给该计算节点的物理内存对应的虚拟内存地址。这样,计算节点可以通过DPU实现远程内存直接映射,以实现对存储节点的物理内存的直接访问。具体实现时,计算节点中的DPU可以根据内存地址分配信息,为该计算节点中的业务进程自行分配存储节点中的可用内存。对于业务进程而言,在进行shuffle写时,业务进程只需与计算节点中的DPU进行交互即可获得可用内存,进一步可以通过计算节点中的DPU向存储节点中的可用内存写数据。在进行shuffle读时,业务进程只需通过计算节点中的DPU从存储节点中的相应内存中拉取数据。本申请技术方案中,计算节点中的不同业务进程无需与存储节点分别建立通信链接,单个计算节点与存储节点之间只需通过DPU建立一条通信链接即可,与上述现有的远程shuffle架构实现方案相比,大大减少了计算节点与存储节点之间的链接数目,可以缓解计算节点或存储节点因链接数目过多导致的内存底噪过大的问题,从而能够保证计算节点与存储节点之间的数据传输效率,进而能够提高数据处理效率,并且提高了数据处理的可靠性和稳定性。另外,由于减少了单个计算节点与存储节点之间的链接数目,因此存储节点可以在保证数据传输性能的前提下,支持为更多计算节点提供存储服务,扩大了***规模。
下面从***结构、方法流程、软件装置、硬件装置等多个角度对本申请技术方案进行详细介绍。
例如,图5是本申请实施例提供的一种数据处理***的结构示意图。如图5所示,该数据处理***包括计算节点集群和存储节点集群。计算节点集群包括一个或多个计算节点510(图5中示出了三个计算节点510,但不限于三个计算节点510),各个计算节点510之间可以相互通信。存储节点集群包括一个或多个存储节点520(图5中示出了三个存储节点520,但不限于三个存储节点520)。
计算节点510是一种计算设备,如服务器、台式计算机或者存储阵列的控制器等。在硬件上,如图5所示,一个计算节点510至少包括处理器511、内存512和DPU 513。一个存储节点520包括DPU 521以及一个或多个存储器522。其中,DPU具有中央处理器(centralprocessing unit,CPU)的通用性和可编程性,但更具有专用性,可以在网络数据包、存储请求或分析请求上高效运行。DPU具有网卡功能。DPU在物理上可以包括网卡,或者,DPU也可以集成有网卡,即DPU在物理上也可以不包括单独的网卡,由DPU实现网卡功能。本申请实施例中,以DPU在物理上包括网卡为例进行说明,但并不用于限定DPU的结构形态。
本申请实施例中,计算节点510中的DPU 513与存储设备520中的DPU 521之间建立有通信链接,用于实现计算节点510与存储设备520之间的通信。可选地,DPU 513包括RDMA网卡,DPU 521包括RDMA网卡,DPU 513与DPU 521通过RDMA网卡建立RDMA链接,该RDMA链接可以采用网络接口卡(network interface card,NIC)或总线等实现。或者,DPU513与DPU521之间的通信链接也可以是TCP链接,本申请实施例对DPU之间所采用的建链方式不做限定。
在本申请实施例提供的数据处理***中,计算节点510中的DPU 513与存储节点520中的DPU 521可以全互联,这样,计算节点集群中的任意一个计算节点510可访问存储节点集群中的任意一个存储节点520。
以下对计算节点510的硬件功能进行介绍。
处理器511是一个CPU,用于处理来自计算节点510外部的数据访问请求,或者计算节点510内部生成的请求。例如,处理器511接收用户发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存512中。当内存512中的数据总量达到一定阈值时,处理器511将内存512中存储的数据通过DPU 513发送给存储节点520进行持久化存储。处理器511通过运行业务进程来读写数据。处理器511上可运行的业务进程包括但不限于map进程和reduce进程。例如,处理器511可以通过运行map进程来写数据,也可以通过运行reduce进程来读数据。除此之外,处理器511还用于对数据进行计算或处理,例如元数据管理、重复数据删除、数据压缩、虚拟化存储空间以及地址转换等。图5中仅示出了一个CPU 511,在实际应用中,CPU 511的数量往往有多个,其中,一个CPU 511又具有一个或多个CPU核。本申请实施例对CPU的数量,以及CPU核的数量均不做限定。
内存512是指与处理器511直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作***或其他正在运行中的程序的临时数据存储器。内存512包括至少两种存储器,例如内存512既可以是随机存取存储器,也可以是只读存储器(read onlymemory,ROM)。举例来说,随机存取存储器是动态随机存取存储器(dynamic random accessmemory,DRAM),或者存储级存储器(storage class memory,SCM)。DRAM是一种半导体存储器,与大部分随机存取存储器(random access memory,RAM)一样,属于一种易失性存储器(volatile memory)设备。SCM是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比DRAM慢,在成本上也比DRAM更为便宜。然而,DRAM和SCM在本申请实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如静态随机存取存储器(static random access memory,SRAM)等。而对于只读存储器,举例来说,可以是可编程只读存储器(programmable read onlymemory,PROM)、可抹除可编程只读存储器(erasable programmable read only memory,EPROM)等。另外,内存512还可以是双列直插式存储器模块或双线存储器模块(dual in-line memory module,DIMM),即由动态随机存取存储器(DRAM)组成的模块,还可以是固态硬盘(SSD)。实际应用中,计算节点510中可配置多个内存512,以及不同类型的内存512。本申请实施例对内存512的数量和类型均不作限定。此外,可对内存512进行配置使其具有保电功能。保电功能是指***发生掉电又重新上电时,内存512中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
可选地,参见图5,DPU 513包括处理单元和网卡。处理单元可以是一个CPU。处理单元包括高速缓存和远程内存管理单元(remote memory management unit,RMMU)。高速缓存例如可以是DRAM。RMMU用于存储来自存储节点集群中的存储节点520的内存地址分配信息,该内存地址分配信息指示存储节点520分配给计算节点510的物理内存对应的虚拟内存地址。RMMU还用于根据内存地址分配信息为处理器511上运行的业务进程分配存储节点520中的可用内存,以供业务进程写数据,这里的业务进程可以是map进程。RMMU还用于为处理器511上运行的业务进程从存储节点520上拉取数据,以完成业务进程的读数据任务,这里的业务进程可以是reduce进程。总而言之,RMMU能够通过网卡与存储节点520中的DPU 521通信,以完成运行在处理器511上的业务进程的数据读写任务。RMMU又可以细分为包括内存通道和内存分配模块。其中,内存分配模块用于执行RMMU的数据处理功能,包括但不限于存储内存地址分配信息、为业务进程分配内存。内存通道用于执行RMMU的数据传输功能,包括但不限于传输业务进程的待写数据和待读取数据。
DPU 513中的网卡用于与存储节点520通信。例如,当内存512中的数据总量达到一定阈值时,计算节点510可通过DPU 513中的网卡向存储节点520发送请求以对该数据进行持久化存储。另外,计算节点510还可以包括总线,用于计算节点510内部各组件之间的通信。在功能上,由于图5中的计算节点510的主要功能是计算业务,在存储数据时可以利用远程存储器来实现持久化存储,因此它具有比常规服务器更少的本地存储器,从而实现了成本和空间的节省。但这并不代表计算节点510不能具有本地存储器,在实际实现中,计算节点510也可以内置少量的硬盘,或者外接少量硬盘。
以下对存储节点520的硬件功能进行介绍。
一个存储节点520可以有一个内存池,该内存池由该存储节点520中的一个或多个存储器522组成,也即是,一个存储节点520的内存池的物理内存来源于该存储节点520所包含的各种存储器522。存储器522用于存储数据,可以是磁盘或者其他类型的存储介质。可选地,一个存储节点520可以包括多种不同类型的存储器,包括但不限于DRAM、相变存储器(phase change memory,PCM)、SSD。
可选地,参见图5,DPU 521包括内存访问控制器和网卡。内存访问控制器可以是一个CPU。内存访问控制器具有数据读写、地址转换以及其他计算功能。内存访问控制器用于对被纳入内存池的存储器进行统一编址。经过统一编址,内存池的每段空间在整个存储节点集群中都有一个唯一的全局地址。在给内存池的一段空间分配了物理空间之后,该空间的全局地址就拥有了其对应的物理地址,该物理地址指示了该全局地址所代表的空间实际位于哪个存储节点的哪个存储器上,以及在该存储器中的偏移量,即物理空间的位置。也即是,给内存池的一段空间分配的全局地址为虚拟内存地址,该全局地址对应物理内存的物理地址。例如,内存池的一段空间的全局地址可以采用64位地址表示,该全局地址由4部分内容组成,表示为[hostId,media type,numaId,blockIndex]。其中,hostId为存储节点的标识,占全局地址的0-15位。media type为介质类型,占全局地址的16-18位。numaId为内存条标识,占全局地址的19-22位。blockIndex为块索引,占全局地址的23-63位。
内存访问控制器用于根据计算节点510发送的读/写数据请求,往存储器522中写入数据或者从存储器522中读取数据。在读写数据的过程中,内存访问控制器需要将读/写数据请求中携带的虚拟内存地址转换为存储器522能够识别的物理地址。
可选地,参见图5,存储节点520中的存储器522包括但不限于DRAM、PCM和SSD。DPU521与SDD可以通过内存访问接口连接。该内存访问接口包括缓存和内存控制芯片。内存访问接口中的缓存用于存储DPU 521写入SSD的待存储数据,内存控制芯片用于将该缓存中的待存储数据写入SSD中。内存控制芯片还用于将DPU 521从SSD中读取的待读取数据写入缓存中,以供DPU 521从该缓存中读取待读取数据。可选地,内存访问接口可以集成在SSD上。或者,内存访问接口也可以作为独立器件连接SSD和DPU 521。
相关技术中,RSS节点需要通过RSS进程才能与SSD进行交互以完成数据的读写,而RSS进程需要经过操作***(operating system,OS)文件***才能访问SSD,受OS文件***的限制,会导致磁盘访问效率较低。本申请实施例中,存储节点中的DPU可以通过内存访问接口直接从SSD中读写数据,无需通过OS文件***,可以提高磁盘访问效率,从而提高数据处理效率。
DPU 521中的网卡用于与计算节点510通信。例如,在DPU 521的内存访问控制器完成对存储节点520中被纳入内存池的存储器的统一编址之后,可通过DPU 521中的网卡向计算节点510发送内存地址分配信息。另外,存储节点520还可以包括总线,用于存储节点520内部各组件之间的通信。
可选地,计算节点510的DPU 513与存储节点520的DPU 521之间的通信链接为长连接,即计算节点510中的DPU 513与存储节点520中的DPU 521之间的通信链接是长期存在的。这样,计算节点510与存储节点520之间无需频繁建链,可以节约计算节点和存储节点的处理资源。计算节点510和存储节点520上电后,先通过DPU实现全互联和内存地址映射。
对于存储节点520而言,存储节点520上电之后,存储节点520中的DPU 521获取该存储节点520的物理内存对应的虚拟内存地址。如果存储节点520包括多个存储器,则DPU521可以对多个存储器统一编址,得到存储节点520的物理内存对应的虚拟内存地址。在DPU521包括网卡和内存访问控制器的情况下,具体可以由内存访问控制器对多个存储器统一编址,再向网卡进行内存注册,使得网卡可以直接从物理内存中读写数据。
对于计算节点510而言,计算节点510上电之后,计算节点510中的DPU 513与存储节点520中的DPU 521建立通信链接。然后,存储节点520中的DPU 521可以向计算节点510中的DPU 513发送内存地址分配信息,该内存地址分配信息包括存储节点520分配给计算节点510的物理内存对应的虚拟内存地址。可选地,计算节点510可以在需要向存储节点520写数据时,通过预先建立的通信链接向存储节点520申请可用内存,然后存储节点520通过该通信链接为计算节点510分配内存。或者,计算节点510中的DPU 513与存储节点520中的DPU521建立通信链接之后,存储节点520也可以通过该通信链接直接为计算节点510分配内存。计算节点510中的DPU 513接收到来自存储节点520的内存地址分配信息之后,存储该内存地址分配信息,并初始化内存映射关系。该内存映射关系包括但不限于计算节点510分配得到的可用内存的内存地址属于哪个存储节点,该可用内存所属的存储节点中各个类型的存储器分别对应的起始地址和内存大小,计算节点510访问该可用内存所属的存储节点520时所使用的访问协议、端口号和传输协议等。
一个存储节点520中的DPU 521通常与多个计算节点510中的DPU 513建立有通信链接,存储节点520为不同计算节点510分别分配不同的内存,即不同计算节点510分配得到的物理内存完全不同。
在计算节点510中的DPU 513与存储节点520中的DPU 521建立通信链接,并且计算节点510中的DPU 513接收到来自存储节点520的内存地址分配信息之后,计算节点510可通过DPU 513实现在存储节点520中的数据读写功能。例如,图6是本申请实施例提供的一种远程shuffle架构下的数据交互示意图。如图6所示,远程shuffle架构包括计算节点集群和存储节点集群。其中,计算节点集群包括n个计算节点,记为计算节点1~n,n为正整数。存储节点集群包括m个存储节点,记为存储节点1~m,m为正整数。计算节点上的每个MR进程分别与该计算节点中的DPU连接。n个计算节点中的DPU与m个存储节点中的DPU分别建立有通信链接。计算节点上的各个MR进程分别与计算节点中的DPU进行交互、计算节点中的DPU通过通信链接与存储节点中的DPU进行数据传输、存储节点中的DPU与存储节点上的存储器进行交互,可以实现计算节点上的MR进程向存储节点上的存储器中写入数据或者实现计算节点上的MR进程从存储节点上的存储器中读取数据。
结合图4和图6对比可知,本申请中的远程shuffle架构实现方式相较于相关技术中的远程shuffle架构实现方式,在很大程度上减少了计算节点和存储节点之间的链接数目,可以缓解计算节点或存储节点因链接数目过多导致的内存底噪过大的问题,从而能够保证计算节点与存储节点之间的数据传输效率,进而能够提高数据处理效率,并且提高了数据处理的可靠性和稳定性。
下面对本申请实施例的方法流程进行举例说明。
本申请实施例提供的数据处理方法包括写数据和读数据这两部分。本申请通过以下两个实施例分别对写数据的实现流程和读数据的实现流程进行说明。为了便于示例,在写数据的实现流程(图7示出的方法)中,以数据处理***包括计算节点1和存储节点1为例进行说明。其中,计算节点1包括DPU1,存储节点1包括DPU2,DPU1与DPU2之间建立有通信链接1。在读数据的实现流程(图8示出的方法)中,以数据处理***包括计算节点2和存储节点2为例进行说明,其中,计算节点2包括DPU3,存储节点2包括DPU4,DPU3与DPU4之间建立有通信链接2。实际应用中,数据处理***中的任一计算节点可以具有计算节点1和/或计算节点2的功能。同样地,数据处理***中的任一存储节点可以具有存储节点1和/或存储节点2的功能。
在本申请的一个实施例中,示出了计算节点向存储节点写数据的实现流程。例如,图7是本申请实施例提供的一种数据处理方法的流程示意图。该方法可以应用于如图5所示的数据处理***。计算节点1可以是如图5所示的数据处理***中的任一计算节点510,存储节点1可以是如图5所示的数据处理***中的任一存储节点520。如图7所示,该方法包括:
步骤701、业务进程1向DPU1发送内存分配请求。
业务进程1为计算节点1上运行的业务进程。业务进程1例如可以是map进程。可选地,内存分配请求包括对内存大小的指示,以请求DPU1向业务进程1分配相应大小的内存空间。
步骤702、DPU1根据内存地址分配信息,在存储节点1分配给计算节点1的物理内存对应的虚拟内存地址中,确定分配给业务进程1的虚拟内存地址范围。
该内存地址分配信息用于指示存储节点1分配给计算节点1的物理内存对应的虚拟内存地址。一种可能情况,存储节点1分配给计算节点1的物理内存对应的虚拟内存地址是连续的虚拟内存地址段,则内存地址分配信息可以包括该虚拟内存地址段的起始地址和结束地址,例如表示为<起始地址,结束地址>;或者可以包括该虚拟内存地址段的起始地址和地址长度,例如表示为<起始地址,地址长度>;又或者可以包括该虚拟内存地址段的结束地址和地址长度,例如表示为<结束地址,地址长度>。另一种可能情况,存储节点1分配给计算节点1的物理内存对应的虚拟内存地址包括不连续的多个虚拟内存地址段,则内存地址分配信息可以包括各个虚拟内存地址段的起始地址和结束地址,例如表示为{<起始地址1,结束地址1>;<起始地址2,结束地址2>;…};或者可以包括各个虚拟内存地址段的起始地址和地址长度,例如表示为{<起始地址1,地址长度1>;<起始地址2,地址长度2>;…};又或者可以包括各个虚拟内存地址段的结束地址和地址长度,例如表示为{<结束地址1,地址长度1>;<结束地址2,地址长度2>;…}。
可选地,若内存分配请求包括对内存大小的指示,则DPU1可以向业务进程1分配相应大小的内存空间,并向业务进程1提供所分配的内存空间对应的虚拟内存地址范围。
步骤703、DPU1向业务进程1发送该虚拟内存地址范围。
步骤704、业务进程1向DPU1发送数据存储请求,该数据存储请求包括数据1和内存地址1。
内存地址1属于DPU1分配给业务进程1的虚拟内存地址范围。该数据存储请求用于请求将数据1写入内存地址1对应的物理内存中。业务进程1向DPU1发送数据存储请求,即业务进程1发起shuffle写流程。
步骤705、DPU1通过通信链接1向DPU2发送写数据请求,该写数据请求包括数据1和内存地址1。
该写数据请求用于请求DPU2将数据1写入内存地址1对应的物理内存中。
步骤706、DPU2将数据1写入内存地址1对应的物理内存中。
DPU2通过通信链接1接收到来自DPU1的写数据请求之后,根据写数据请求中携带的内存地址1,确定内存地址1对应的物理内存地址,然后将写数据请求中携带的数据1写入该物理内存地址对应的物理内存中。
可选地,存储节点1中的存储器包括SSD,DPU2与SSD通过内存访问接口连接,该内存访问接口包括缓存和内存控制芯片。若内存地址1对应的物理内存属于SSD,则DPU2将数据1写入内存地址1对应的物理内存的实现过程,包括:DPU2先将数据1写入内存访问接口的缓存中,然后内存控制芯片将该缓存中的数据1写入SSD中与该内存地址1对应的物理空间内。这样,存储节点中的DPU可以通过内存访问接口直接在SSD中写入数据,无需通过OS文件***,可以提高磁盘访问效率,从而提高数据处理效率。
可选地,DPU2在将数据1成功写入内存地址1对应的物理内存中之后,可以执行以下步骤707。若DPU2未将数据1成功写入内存地址1对应的物理内存中,则DPU2可以通过通信链接1向DPU1发送写数据失败响应,以指示数据1未写入成功,或者,DPU2也可以不向DPU1发送针对写数据请求的任何响应,DPU1在发送写数据请求之后的一定时长内未通过通信链接1接收到来自DPU2的针对写数据请求的响应之后,自行判定数据1写入失败。DPU1在确定数据1写入失败之后,进一步还可以向业务进程1发送数据存储失败响应,以便业务进程1进行数据重写。
步骤707、DPU2通过通信链接1向DPU1发送写数据响应,该写数据响应指示数据1已写入成功。
可选地,DPU1通过通信链接1接收到来自DPU2的指示数据1已写入成功的写数据响应之后,可以执行以下步骤708。
步骤708、DPU1向业务进程1发送数据存储响应,该数据存储响应指示数据1已存储成功。
可选地,业务进程1接收到指示数据1已存储成功的数据存储响应之后,可以执行以下步骤709。
步骤709、业务进程1在元数据服务设备中存储数据1对应的元数据1,该元数据1包括内存地址1。
可选地,元数据服务设备可以是计算节点1,计算节点1中可以划分有一块专门用于存储元数据的存储空间,业务进程1可以在计算节点1的该存储空间内写入数据1对应的元数据1。或者元数据服务设备也可以是独立于计算节点1和存储节点1以外的其它设备。业务进程1在元数据服务设备中写入数据1对应的元数据1之后,计算节点1中的其它业务进程或者其它计算节点中的业务进程可以通过从元数据服务设备中拉取元数据1,以从存储节点1中读取数据1。
本申请实施例中,通过在计算节点和存储节点中分别部署DPU,并且使计算节点中的DPU与存储节点中的DPU建立通信链接。存储节点中的DPU通过该通信链接向计算节点中的DPU同步内存地址分配信息,使得计算节点中的DPU预先存储有该存储节点分配给该计算节点的物理内存对应的虚拟内存地址。这样,计算节点可以通过DPU实现远程内存直接映射,以实现对存储节点的物理内存的直接访问。具体实现时,计算节点中的DPU可以根据内存地址分配信息,为该计算节点中的业务进程自行分配存储节点中的可用内存。对于业务进程而言,业务进程只需与计算节点中的DPU进行交互即可获得可用内存,进一步可以通过计算节点中的DPU向存储节点中的可用内存写数据。计算节点中的不同业务进程无需与存储节点分别建立通信链接,单个计算节点与存储节点之间只需通过DPU建立一条通信链接即可,大大减少了计算节点与存储节点之间的链接数目,可以缓解计算节点或存储节点因链接数目过多导致的内存底噪过大的问题,从而能够保证计算节点与存储节点之间的数据传输效率,进而能够提高数据处理效率,并且提高了数据处理的可靠性和稳定性。
在本申请的另一个实施例中,示出了计算节点从存储节点中读数据的实现流程。例如,图8是本申请实施例提供的另一种数据处理方法的流程示意图。该方法可以应用于如图5所示的数据处理***。计算节点2可以是如图5所示的数据处理***中的任一计算节点510,存储节点2可以是如图5所示的数据处理***中的任一存储节点520。如图8所示,该方法包括:
步骤801、业务进程2向DPU3发送数据读取请求,该数据读取请求包括内存地址2。
业务进程2为计算节点2上运行的业务进程。业务进程2例如可以是reduce进程。内存地址2为存储节点2中的物理内存对应的虚拟内存地址。该数据读取请求用于请求从内存地址2对应的物理内存中读取数据。本申请为了便于说明,将内存地址2对应的物理内存中的数据称为数据2。
可选地,业务进程2从元数据服务设备获取待读取数据对应的元数据,该元数据包括用于存储待读取数据的物理内存对应的内存地址。然后业务进程2可以向DPU3发送携带有待读取数据对应的内存地址的数据读取请求。业务进程2向DPU3发送数据读取请求,即业务进程2发起shuffle读流程。
步骤802、DPU3通过通信链接2向DPU4发送读数据请求,该读数据请求包括内存地址2。
该读数据请求用于请求DPU4从内存地址2对应的物理内存中读取数据。
可选地,读数据请求还包括目标缓存的缓存地址。则该读数据请求用于请求DPU4将从内存地址2对应的物理内存中读取的数据写入目标缓存中。目标缓存可以是DPU3中的高速缓存,该高速缓存可供计算节点2中的业务进程访问。该目标缓存可以是划分给业务进程2的缓存。
步骤803、DPU4从内存地址2对应的物理内存中读取数据2。
DPU4通过通信链接2接收到来自DPU3的读数据请求之后,根据读数据请求中携带的内存地址2,确定内存地址2对应的物理内存地址,然后从该物理内存地址对应的物理内存中读取数据。
可选地,存储节点2中的存储器包括SSD,DPU4与SSD通过内存访问接口连接,该内存访问接口包括缓存和内存控制芯片。若内存地址2对应的物理内存属于SSD,则DPU4从内存地址2对应的物理内存中读取数据2的实现过程,包括:DPU4向内存控制芯片发送读数据指令,该读数据指令包括内存地址2。然后内存控制芯片从SSD中与该内存地址2对应的物理空间读取数据2,并将读取的数据2写入内存访问接口的缓存中。DPU4再从该缓存中读取数据2。这样,存储节点中的DPU可以通过内存访问接口直接从SSD中读取数据,无需通过OS文件***,可以提高磁盘访问效率,从而提高数据处理效率。
可选地,DPU4在从内存地址2对应的物理内存中读取到数据之后,可以执行以下步骤804。若DPU4未从内存地址2对应的物理内存中读取到数据,则DPU4可以通过通信链接2向DPU3发送读数据失败响应,以指示数据读取失败,或者,DPU4也可以不向DPU3发送针对读数据请求的任何响应,DPU3在发送读数据请求之后的一定时长内未通过通信链接2接收到来自DPU4的针对读数据请求的响应之后,自行判定数据读取失败。DPU3在确定数据读取失败之后,进一步还可以向业务进程2发送数据读取失败响应,以便业务进程2进行数据重读。
步骤804、DPU4通过通信链接2向DPU3发送读数据响应,该读数据响应包括数据2。
可选地,在DPU4接收到的读数据请求携带有目标缓存的缓存地址的情况下,DPU4发送的针对该读数据请求的读数据响应还包括目标缓存的缓存地址,该读数据响应用于指示DPU3将数据2写入目标缓存中。
可选地,DPU3通过通信链接2接收到来自DPU3的携带有数据2的读数据响应之后,可以执行以下步骤805。
步骤805、DPU3将数据2写入计算节点2的目标缓存中。
可选地,目标缓存可以是读数据响应中携带的缓存地址所指示的缓存。或者,目标缓存也可以是计算节点2中用于供业务进程访问的任一缓存,例如可以是DPU3中的高速缓存。
步骤806、业务进程2从目标缓存中读取数据2。
本申请实施例中,通过在计算节点和存储节点中分别部署DPU,并且使计算节点中的DPU与存储节点中的DPU建立通信链接。计算节点可以通过DPU实现远程内存直接映射,以实现对存储节点的物理内存的直接访问。对于计算节点上运行的业务进程而言,当业务进程需要从存储节点中读取数据时,业务进程只需通过计算节点中的DPU从存储节点中的相应内存中拉取数据。计算节点中的不同业务进程无需与存储节点分别建立通信链接,单个计算节点与存储节点之间只需通过DPU建立一条通信链接即可,大大减少了计算节点与存储节点之间的链接数目,可以缓解计算节点或存储节点因链接数目过多导致的内存底噪过大的问题,从而能够保证计算节点与存储节点之间的数据传输效率,进而能够提高数据处理效率,并且提高了数据处理的可靠性和稳定性。
本申请实施例提供的数据处理方法的步骤的先后顺序能够进行适当调整,步骤也能够根据情况进行相应增减。任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内。
下面对本申请实施例涉及的虚拟装置举例说明。
图9是本申请实施例提供的一种计算节点的结构示意图。如图9所示,计算节点900包括第一DPU 901和CPU 902。第一DPU 901与存储节点中的第二DPU之间建立有通信链接。第一DPU 901中存储有内存地址分配信息。该内存地址分配信息用于指示存储节点分配给计算节点的物理内存对应的虚拟内存地址。如图9所示,第一DPU 901包括:第一通信模块9011、处理模块9012和第二通信模块9013。
第一通信模块9011,用于接收来自CPU中的第一业务进程的内存分配请求。
处理模块9012,用于根据内存地址分配信息,在存储节点分配给计算节点的物理内存对应的虚拟内存地址中,确定分配给第一业务进程的虚拟内存地址范围。
第二通信模块9013,用于当第一通信模块接收到来自第一业务进程的数据存储请求时,通过通信链接向第二DPU发送写数据请求,数据存储请求包括第一数据和第一内存地址,第一内存地址属于虚拟内存地址范围,写数据请求包括第一数据和第一内存地址,写数据请求用于请求第二DPU将第一数据写入第一内存地址对应的物理内存中。
可选地,第一通信模块9011,还用于当第二通信模块9013通过通信链接接收到来自第二DPU的写数据响应,且该写数据响应指示第一数据已写入成功时,向第一业务进程发送数据存储响应,数据存储响应指示第一数据已存储成功。CPU 902,用于通过第一业务进程在元数据服务设备中存储第一数据对应的第一元数据,第一元数据包括第一内存地址。
可选地,第二通信模块9013,还用于当第一DPU 901通过第一通信模块9011接收到来自CPU 902中的第二业务进程的数据读取请求时,通过通信链接向第二DPU发送读数据请求。数据读取请求包括第二内存地址,第二内存地址为存储节点中的物理内存对应的虚拟内存地址。读数据请求包括第二内存地址,读数据请求用于请求第二DPU从第二内存地址对应的物理内存中读取第二数据。
可选地,处理模块9012,还用于当第二通信模块9013通过通信链接接收到来自第二DPU的包括第二数据的读数据响应时,将第二数据写入计算节点的目标缓存中。CPU 902,用于通过第二业务进程从目标缓存中读取第二数据。
可选地,读数据请求还包括目标缓存的缓存地址,读数据请求用于请求第二DPU将从第二内存地址对应的物理内存中读取的数据写入目标缓存中。相应地,读数据响应还包括目标缓存的缓存地址,读数据响应用于指示第一DPU将第二数据写入目标缓存中。
可选地,第一业务进程是map进程,第二业务进程是reduce进程。
可选地,第二通信模块9013,还用于在计算节点上电后,与第二DPU建立通信链接。第二通信模块9013,还用于接收第二DPU发送的内存地址分配信息。
可选地,第一DPU包括第一RDMA网卡,第二通信模块9013集成在第一RDMA网卡中。第二DPU包括第二RDMA网卡,上述通信链接为第一RDMA网卡与第二RDMA网卡之间建立的RDMA链接。
图10是本申请实施例提供的一种存储节点的结构示意图。如图10所示,存储节点1000包括第一DPU 1001和存储器1002。第一DPU 1001与计算节点中的第二DPU之间建立有通信链接。如图10所示,第一DPU 1001包括:通信模块10011和处理模块10012。
通信模块10011,用于通过通信链接接收来自第二DPU的写数据请求,该写数据请求包括第一数据和第一内存地址,第一内存地址为存储节点分配给计算节点的物理内存对应的虚拟内存地址。
处理模块10012,用于将第一数据写入第一内存地址对应的物理内存中。
通信模块,还用于通过通信链接向第二DPU发送写数据响应,该写数据响应指示第一数据已写入成功。
可选地,通信模块10011,还用于通过通信链接接收来自第二DPU的读数据请求,该读数据请求包括第二内存地址,第二内存地址为存储节点中的物理内存对应的虚拟内存地址。处理模块10012,还用于从第二内存地址对应的物理内存中读取第二数据。通信模块10011,还用于通过通信链接向第二DPU发送读数据响应,该读数据响应包括第二数据。
可选地,读数据请求还包括目标缓存的缓存地址,该读数据请求用于请求第一DPU将从第二内存地址对应的物理内存中读取的数据写入目标缓存中。读数据响应还包括目标缓存的缓存地址,该读数据响应用于指示第二DPU将第二数据写入目标缓存中。
可选地,处理模块10012,还用于获取存储节点的物理内存对应的虚拟内存地址。通信模块10011,还用于在与第二DPU建立通信链接之后,向第二DPU发送内存地址分配信息,内存地址分配信息包括存储节点分配给计算节点的物理内存对应的虚拟内存地址。
可选地,存储节点1000包括多个存储器1002。处理模块10012,用于对多个存储器统一编址,得到存储节点的物理内存对应的虚拟内存地址。
可选地,第一DPU包括第一RDMA网卡,通信模块10011集成在第一RDMA网卡中。第二DPU包括第二RDMA网卡,通信链接为第一RDMA网卡与第二RDMA网卡之间建立的RDMA链接。
可选地,存储器1002包括固态硬盘。第一DPU 1001与固态硬盘通过内存访问接口连接。内存访问接口包括缓存和内存控制芯片。其中,缓存用于存储第一DPU 1001写入固态硬盘的待存储数据,内存控制芯片用于将缓存中的待存储数据写入固态硬盘中。内存控制芯片还用于将第一DPU 1001从固态硬盘中读取的待读取数据写入缓存中,以供第一DPU1001从缓存中读取待读取数据。
可选地,内存访问接口集成在固态硬盘上。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
下面对本申请实施例涉及的硬件结构举例说明。
例如,图11是本申请实施例提供的一种计算节点的框图。如图11所示,计算节点1100包括:DPU 1101和CPU 1102。可选地,计算节点1100还包括存储器1103。
存储器1103,用于存储计算机程序,计算机程序包括程序指令。例如,存储器1103可存储操作***和至少一个功能所需的应用程序单元。操作***可以是实时操作***(Real Time eXecutive,RTX)、LINUX、UNIX、WINDOWS或OS X之类的操作***。
CPU 1102用于调用存储器1103中存储的计算机程序,实现运行业务进程。该业务进程可以是上述图7示出的方法中的业务进程1或上述图8示出的方法中的业务进程2。可选地,CPU 1102上运行的业务进程包括但不限于map进程和reduce进程。其中,CPU 1102包括一个或者一个以上处理核心,CPU 1102通过运行计算机程序,执行各种功能应用以及数据处理。
DPU 1101,用于调用包含程序指令的计算机程序,实现上述图7示出的方法中DPU1和/或上述图8示出的方法中DPU3执行的动作。DPU 1101包括通信接口1104。通信接口1104可以为多个,通信接口1104用于与其它设备进行通信。例如在本申请实施例中,通信接口1104用于与存储节点或其它计算节点进行通信。
可选地,计算节点1100还包括通信总线1105。DPU 1101与CPU 1102、CPU 1102与存储器1103分别通过通信总线1105连接。
例如,图12是本申请实施例提供的一种存储节点的框图。如图12所示,存储节点1200包括:DPU 1201和存储器1202。
存储器1202用于存储数据。可选地,存储器1202包括但不限于DRAM、PCM和SSD。
DPU 1201,用于调用包含程序指令的计算机程序,实现上述图7示出的方法中DPU2和/或上述图8示出的方法中DPU4执行的动作。DPU 1201包括通信接口1203。通信接口1203可以为多个,通信接口1203用于与其它设备进行通信。例如在本申请实施例中,通信接口1203用于与一个或多个计算节点进行通信。
可选地,存储节点1200还包括通信总线1204。DPU 1201与存储器1202通过通信总线1204连接。
下面对本申请实施例的***结构进行说明。
本申请实施例提供了一种数据处理***。包括:计算节点和存储节点。计算节点可以是如图9或图11所示的计算节点。存储节点可以是如图10或图12所示的存储节点。可选地,该数据处理***包括计算节点集群和存储节点集群。其中计算节点集群包括一个或多个计算节点,存储节点集群包括一个或多个存储节点。该数据处理***例如可以如图5所示,该数据处理***可以应用于远程shuffle架构。
其中,计算节点包括第一DPU和CPU。存储节点包括第二DPU和存储器。第一DPU与第二PDU之间建立有通信链接。第一DPU中存储有内存地址分配信息,该内存地址分配信息用于指示存储节点分配给计算节点的物理内存对应的虚拟内存地址。存储节点中的物理内存属于存储器。
在计算节点向存储节点写入数据的过程(shuffle写过程)中:
CPU用于向第一DPU发送来自第一业务进程的内存分配请求,第一业务进程为所述CPU中运行的任一map进程。第一DPU用于根据内存地址分配信息,在存储节点分配给计算节点的物理内存对应的虚拟内存地址中,确定分配给第一业务进程的虚拟内存地址范围。CPU还用于向第一DPU发送来自第一业务进程的数据存储请求,该数据存储请求包括第一数据和第一内存地址,第一内存地址属于第一DPU分配给第一业务进程的虚拟内存地址范围。第一DPU用于通过第一DPU与第二PDU之间的通信链接向第二DPU发送写数据请求,该写数据请求包括第一数据和第一内存地址。第二DPU用于将第一数据写入第一内存地址对应的物理内存中。第二DPU还用于通过第一DPU与第二PDU之间的通信链接向第一DPU发送写数据响应,该写数据响应指示第一数据已写入成功。
在计算节点从存储节点读取数据的过程(shuffle读过程)中:
CPU用于向第一DPU发送来自第二业务进程的数据读取请求,该数据读取请求包括第二内存地址,第二内存地址为存储节点中的物理内存对应的虚拟内存地址,第二业务进程为CPU中运行的任一reduce进程。第一DPU用于通过第一DPU与第二PDU之间的通信链接向第二DPU发送读数据请求,该读数据请求包括第二内存地址。第二DPU用于从第二内存地址对应的物理内存中读取第二数据。第二DPU还用于通过第一DPU与第二PDU之间的通信链接向第一DPU发送读数据响应,读数据响应包括第二数据。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令被处理器执行时,实现上述方法实施例中计算节点执行的动作或存储节点执行的动作。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现上述方法实施例中计算节点执行的动作或存储节点执行的动作。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本申请实施例中,术语“第一”、“第二”和“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的内存地址分配信息、第一数据和第二数据都是在充分授权的情况下获取的。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的构思和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (30)
1.一种数据处理方法,其特征在于,应用于计算节点,所述计算节点包括第一数据处理单元DPU,第一DPU与存储节点中的第二DPU之间建立有通信链接,所述第一DPU中存储有内存地址分配信息,所述内存地址分配信息用于指示所述存储节点分配给所述计算节点的物理内存对应的虚拟内存地址,所述方法包括:
所述第一DPU接收来自所述计算节点中的第一业务进程的内存分配请求;
所述第一DPU根据所述内存地址分配信息,在所述存储节点分配给所述计算节点的物理内存对应的虚拟内存地址中,确定分配给所述第一业务进程的虚拟内存地址范围;
当所述第一DPU接收到来自所述第一业务进程的数据存储请求时,所述第一DPU通过所述通信链接向所述第二DPU发送写数据请求,所述数据存储请求包括第一数据和第一内存地址,所述第一内存地址属于所述虚拟内存地址范围,所述写数据请求包括所述第一数据和所述第一内存地址,所述写数据请求用于请求所述第二DPU将所述第一数据写入所述第一内存地址对应的物理内存中。
2.根据权利要求1所述的方法,其特征在于,在所述第一DPU通过所述通信链接向所述第二DPU发送写数据请求之后,所述方法还包括:
当所述第一DPU通过所述通信链接接收到来自所述第二DPU的写数据响应,且所述写数据响应指示所述第一数据已写入成功时,所述第一DPU向所述第一业务进程发送数据存储响应,所述数据存储响应指示所述第一数据已存储成功;
所述第一业务进程在元数据服务设备中存储所述第一数据对应的第一元数据,所述第一元数据包括所述第一内存地址。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当所述第一DPU接收到来自所述计算节点中的第二业务进程的数据读取请求时,所述第一DPU通过所述通信链接向所述第二DPU发送读数据请求,所述数据读取请求包括第二内存地址,所述第二内存地址为所述存储节点中的物理内存对应的虚拟内存地址,所述读数据请求包括所述第二内存地址,所述读数据请求用于请求所述第二DPU从所述第二内存地址对应的物理内存中读取第二数据。
4.根据权利要求3所述的方法,其特征在于,在所述第一DPU通过所述通信链接向所述第二DPU发送读数据请求之后,所述方法还包括:
当所述第一DPU通过所述通信链接接收到来自所述第二DPU的包括所述第二数据的读数据响应时,所述第一DPU将所述第二数据写入所述计算节点的目标缓存中;
所述第二业务进程从所述目标缓存中读取所述第二数据。
5.根据权利要求4所述的方法,其特征在于,所述读数据请求还包括所述目标缓存的缓存地址,所述读数据请求用于请求所述第二DPU将从所述第二内存地址对应的物理内存中读取的数据写入所述目标缓存中;
所述读数据响应还包括所述目标缓存的缓存地址,所述读数据响应用于指示所述第一DPU将所述第二数据写入所述目标缓存中。
6.根据权利要求3至5任一所述的方法,其特征在于,所述第一业务进程是映射进程,所述第二业务进程是归纳进程。
7.根据权利要求1至6任一所述的方法,其特征在于,所述方法还包括:
所述计算节点上电后,所述第一DPU与所述第二DPU建立所述通信链接;
所述第一DPU接收所述第二DPU发送的所述内存地址分配信息。
8.根据权利要求1至7任一所述的方法,其特征在于,所述第一DPU包括第一远程直接内存访问RDMA网卡,所述第二DPU包括第二RDMA网卡,所述通信链接为第一RDMA网卡与所述第二RDMA网卡之间建立的RDMA链接。
9.一种数据处理方法,其特征在于,应用于存储节点,所述存储节点包括第一数据处理单元DPU,第一DPU与计算节点中的第二DPU之间建立有通信链接,所述方法包括:
所述第一DPU通过所述通信链接接收来自所述第二DPU的写数据请求,所述写数据请求包括第一数据和第一内存地址,所述第一内存地址为所述存储节点分配给所述计算节点的物理内存对应的虚拟内存地址;
所述第一DPU将所述第一数据写入所述第一内存地址对应的物理内存中;
所述第一DPU通过所述通信链接向所述第二DPU发送写数据响应,所述写数据响应指示所述第一数据已写入成功。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述第一DPU通过所述通信链接接收来自所述第二DPU的读数据请求,所述读数据请求包括所述第二内存地址,所述第二内存地址为所述存储节点中的物理内存对应的虚拟内存地址;
所述第一DPU从所述第二内存地址对应的物理内存中读取第二数据;
所述第一DPU通过所述通信链接向所述第二DPU发送读数据响应,所述读数据响应包括所述第二数据。
11.根据权利要求10所述的方法,其特征在于,所述读数据请求还包括目标缓存的缓存地址,所述读数据请求用于请求所述第一DPU将从所述第二内存地址对应的物理内存中读取的数据写入所述目标缓存中;
所述读数据响应还包括所述目标缓存的缓存地址,所述读数据响应用于指示所述第二DPU将所述第二数据写入所述目标缓存中。
12.根据权利要求9至11任一所述的方法,其特征在于,所述方法还包括:
所述第一DPU获取所述存储节点的物理内存对应的虚拟内存地址;
在所述第一DPU与所述第二DPU建立通信链接之后,所述第一DPU向所述第二DPU发送内存地址分配信息,所述内存地址分配信息包括所述存储节点分配给所述计算节点的物理内存对应的虚拟内存地址。
13.根据权利要求12所述的方法,其特征在于,所述存储节点包括多个存储器,所述第一DPU获取所述存储节点的物理内存对应的虚拟内存地址,包括:
所述第一DPU对所述多个存储器统一编址,得到所述存储节点的物理内存对应的虚拟内存地址。
14.根据权利要求9至13任一所述的方法,其特征在于,所述存储节点包括固态硬盘,所述第一DPU与所述固态硬盘通过内存访问接口连接,所述内存访问接口包括缓存和内存控制芯片;
所述缓存用于存储所述第一DPU写入所述固态硬盘的待存储数据,所述内存控制芯片用于将所述缓存中的待存储数据写入所述固态硬盘中;
所述内存控制芯片还用于将所述第一DPU从所述固态硬盘中读取的待读取数据写入所述缓存中,以供所述第一DPU从所述缓存中读取所述待读取数据。
15.根据权利要求14所述的方法,其特征在于,所述内存访问接口集成在所述固态硬盘上。
16.一种计算节点,其特征在于,所述计算节点包括第一数据处理单元DPU和中央处理单元CPU,第一DPU与存储节点中的第二DPU之间建立有通信链接,所述第一DPU中存储有内存地址分配信息,所述内存地址分配信息用于指示所述存储节点分配给所述计算节点的物理内存对应的虚拟内存地址,所述第一DPU包括:
第一通信模块,用于接收来自所述CPU中的第一业务进程的内存分配请求;
处理模块,用于根据所述内存地址分配信息,在所述存储节点分配给所述计算节点的物理内存对应的虚拟内存地址中,确定分配给所述第一业务进程的虚拟内存地址范围;
第二通信模块,用于当所述第一通信模块接收到来自所述第一业务进程的数据存储请求时,通过所述通信链接向所述第二DPU发送写数据请求,所述数据存储请求包括第一数据和第一内存地址,所述第一内存地址属于所述虚拟内存地址范围,所述写数据请求包括所述第一数据和所述第一内存地址,所述写数据请求用于请求所述第二DPU将所述第一数据写入所述第一内存地址对应的物理内存中。
17.根据权利要求16所述的计算节点,其特征在于,
所述第一通信模块,还用于当所述第二通信模块通过所述通信链接接收到来自所述第二DPU的写数据响应,且所述写数据响应指示所述第一数据已写入成功时,向所述第一业务进程发送数据存储响应,所述数据存储响应指示所述第一数据已存储成功;
所述CPU,用于通过所述第一业务进程在元数据服务设备中存储所述第一数据对应的第一元数据,所述第一元数据包括所述第一内存地址。
18.根据权利要求16或17所述的计算节点,其特征在于,
所述第二通信模块,还用于当所述第一DPU通过所述第一通信模块接收到来自所述CPU中的第二业务进程的数据读取请求时,通过所述通信链接向所述第二DPU发送读数据请求,所述数据读取请求包括第二内存地址,所述第二内存地址为所述存储节点中的物理内存对应的虚拟内存地址,所述读数据请求包括所述第二内存地址,所述读数据请求用于请求所述第二DPU从所述第二内存地址对应的物理内存中读取第二数据。
19.根据权利要求18所述的计算节点,其特征在于,
所述处理模块,还用于当所述第二通信模块通过所述通信链接接收到来自所述第二DPU的包括所述第二数据的读数据响应时,将所述第二数据写入所述计算节点的目标缓存中;
所述CPU,用于通过所述第二业务进程从所述目标缓存中读取所述第二数据。
20.根据权利要求16至19任一所述的计算节点,其特征在于,
所述第二通信模块,还用于在所述计算节点上电后,与所述第二DPU建立所述通信链接;
所述第二通信模块,还用于接收所述第二DPU发送的所述内存地址分配信息。
21.一种存储节点,其特征在于,所述存储节点包括第一数据处理单元DPU,第一DPU与计算节点中的第二DPU之间建立有通信链接,所述第一DPU包括:
通信模块,用于通过所述通信链接接收来自所述第二DPU的写数据请求,所述写数据请求包括第一数据和第一内存地址,所述第一内存地址为所述存储节点分配给所述计算节点的物理内存对应的虚拟内存地址;
处理模块,用于将所述第一数据写入所述第一内存地址对应的物理内存中;
所述通信模块,还用于通过所述通信链接向所述第二DPU发送写数据响应,所述写数据响应指示所述第一数据已写入成功。
22.根据权利要求21所述的存储节点,其特征在于,
所述通信模块,还用于通过所述通信链接接收来自所述第二DPU的读数据请求,所述读数据请求包括所述第二内存地址,所述第二内存地址为所述存储节点中的物理内存对应的虚拟内存地址;
所述处理模块,还用于从所述第二内存地址对应的物理内存中读取第二数据;
所述通信模块,还用于通过所述通信链接向所述第二DPU发送读数据响应,所述读数据响应包括所述第二数据。
23.根据权利要求21或22所述的存储节点,其特征在于,
所述处理模块,还用于获取所述存储节点的物理内存对应的虚拟内存地址;
所述通信模块,还用于在与所述第二DPU建立通信链接之后,向所述第二DPU发送内存地址分配信息,所述内存地址分配信息包括所述存储节点分配给所述计算节点的物理内存对应的虚拟内存地址。
24.根据权利要求23所述的存储节点,其特征在于,所述存储节点包括多个存储器,
所述处理模块,用于对所述多个存储器统一编址,得到所述存储节点的物理内存对应的虚拟内存地址。
25.根据权利要求21至24任一所述的存储节点,其特征在于,所述存储节点包括固态硬盘,所述第一DPU与所述固态硬盘通过内存访问接口连接,所述内存访问接口包括缓存和内存控制芯片;
所述缓存用于存储所述第一DPU写入所述固态硬盘的待存储数据,所述内存控制芯片用于将所述缓存中的待存储数据写入所述固态硬盘中;
所述内存控制芯片还用于将所述第一DPU从所述固态硬盘中读取的待读取数据写入所述缓存中,以供所述第一DPU从所述缓存中读取所述待读取数据。
26.一种计算节点,其特征在于,包括:数据处理单元DPU和中央处理单元CPU;
所述CPU,用于调用包含程序指令的计算机程序,实现运行业务进程;
所述DPU,用于调用包含程序指令的计算机程序,实现如权利要求1至8任一所述的数据处理方法中第一DPU执行的动作。
27.一种存储节点,其特征在于,包括:数据处理单元DPU和存储器;
所述DPU,用于调用包含程序指令的计算机程序,从所述存储器中读取数据和/或向所述存储器写入数据,实现如权利要求9至15任一所述的数据处理方法。
28.一种数据处理***,其特征在于,包括:计算节点和存储节点,所述计算节点包括第一数据处理单元DPU和中央处理单元CPU,所述存储节点包括第二DPU和存储器,第一DPU与所述第二PDU之间建立有通信链接,所述第一DPU中存储有内存地址分配信息,所述内存地址分配信息用于指示所述存储节点分配给所述计算节点的物理内存对应的虚拟内存地址,所述存储节点中的物理内存属于所述存储器;
所述CPU用于向所述第一DPU发送来自第一业务进程的内存分配请求,所述第一业务进程为所述CPU中运行的任一映射进程;
所述第一DPU用于根据所述内存地址分配信息,在所述存储节点分配给所述计算节点的物理内存对应的虚拟内存地址中,确定分配给所述第一业务进程的虚拟内存地址范围;
所述CPU还用于向所述第一DPU发送来自所述第一业务进程的数据存储请求,所述数据存储请求包括第一数据和第一内存地址,所述第一内存地址属于所述虚拟内存地址范围;
所述第一DPU用于通过所述通信链接向所述第二DPU发送写数据请求,所述写数据请求包括所述第一数据和所述第一内存地址;
所述第二DPU用于将所述第一数据写入所述第一内存地址对应的物理内存中;
所述第二DPU还用于通过所述通信链接向所述第一DPU发送写数据响应,所述写数据响应指示所述第一数据已写入成功。
29.根据权利要求28所述的***,其特征在于,
所述CPU还用于向所述第一DPU发送来自第二业务进程的数据读取请求,所述数据读取请求包括第二内存地址,所述第二内存地址为所述存储节点中的物理内存对应的虚拟内存地址,所述第二业务进程为所述CPU中运行的任一归纳进程;
所述第一DPU用于通过所述通信链接向所述第二DPU发送读数据请求,所述读数据请求包括所述第二内存地址;
所述第二DPU用于从所述第二内存地址对应的物理内存中读取第二数据;
所述第二DPU还用于通过所述通信链接向所述第一DPU发送读数据响应,所述读数据响应包括所述第二数据。
30.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,当所述指令被处理器执行时,实现如权利要求1至15任一所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2023/101605 WO2023246843A1 (zh) | 2022-06-25 | 2023-06-21 | 数据处理方法、装置及*** |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210731856 | 2022-06-25 | ||
CN2022107318560 | 2022-06-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117311593A true CN117311593A (zh) | 2023-12-29 |
Family
ID=89236078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210981958.8A Pending CN117311593A (zh) | 2022-06-25 | 2022-08-16 | 数据处理方法、装置及*** |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117311593A (zh) |
WO (1) | WO2023246843A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117539664B (zh) * | 2024-01-08 | 2024-05-07 | 北京火山引擎科技有限公司 | 基于dpu的远程过程调用方法、设备及存储介质 |
CN117667208B (zh) * | 2024-02-01 | 2024-05-24 | 腾讯科技(深圳)有限公司 | 数据运算方法、存储器及计算机设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013082809A1 (zh) * | 2011-12-09 | 2013-06-13 | 华为技术有限公司 | 协处理加速方法、装置及*** |
CN111435943B (zh) * | 2019-01-14 | 2022-07-19 | 阿里巴巴集团控股有限公司 | 数据处理方法、设备、***及存储介质 |
CN114610232A (zh) * | 2020-04-28 | 2022-06-10 | 华为技术有限公司 | 一种存储***、内存管理方法和管理节点 |
CN113805789A (zh) * | 2020-06-11 | 2021-12-17 | 华为技术有限公司 | 存储设备中的元数据处理方法及相关设备 |
CN113961139A (zh) * | 2020-07-02 | 2022-01-21 | 华为技术有限公司 | 使用中间设备对数据处理的方法、计算机***、及中间设备 |
CN114401262A (zh) * | 2022-01-17 | 2022-04-26 | 东云睿连(武汉)计算技术有限公司 | 基于rdma的大数据传输***、方法、装置、设备及存储介质 |
-
2022
- 2022-08-16 CN CN202210981958.8A patent/CN117311593A/zh active Pending
-
2023
- 2023-06-21 WO PCT/CN2023/101605 patent/WO2023246843A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023246843A1 (zh) | 2023-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11663029B2 (en) | Virtual machine storage controller selection in hyperconverged infrastructure environment and storage system | |
US11042311B2 (en) | Cluster system with calculation and storage converged | |
KR102457611B1 (ko) | 터넌트-어웨어 스토리지 쉐어링 플랫폼을 위한 방법 및 장치 | |
Nanavati et al. | Decibel: Isolation and sharing in disaggregated {Rack-Scale} storage | |
US20210365185A1 (en) | Snapshot-enabled storage system implementing algorithm for efficient reclamation of snapshot storage space | |
EP2437167B1 (en) | Method and system for virtual storage migration and virtual machine monitor | |
TWI549060B (zh) | Access methods and devices for virtual machine data | |
US10496613B2 (en) | Method for processing input/output request, host, server, and virtual machine | |
KR20200017363A (ko) | 호스트 스토리지 서비스들을 제공하기 위한 NVMe 프로토콜에 근거하는 하나 이상의 호스트들과 솔리드 스테이트 드라이브(SSD)들 간의 관리되는 스위칭 | |
CN117311593A (zh) | 数据处理方法、装置及*** | |
US9092426B1 (en) | Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing | |
CN103095834B (zh) | 一种跨虚拟化数据中心的虚拟机在线迁移方法 | |
US20140025890A1 (en) | Methods and structure for improved flexibility in shared storage caching by multiple systems operating as multiple virtual machines | |
CN107203411B (zh) | 一种基于远程ssd的虚拟机内存扩展方法及*** | |
US10318393B2 (en) | Hyperconverged infrastructure supporting storage and compute capabilities | |
US11210240B2 (en) | Memory appliance couplings and operations | |
CN111708719B (zh) | 计算机存储加速方法、电子设备及存储介质 | |
US10642520B1 (en) | Memory optimized data shuffle | |
US11842051B2 (en) | Intelligent defragmentation in a storage system | |
KR102471966B1 (ko) | 스토리지 노드 기반의 키-값 스토어를 이용하는 데이터 입출력 방법 | |
CN115793957A (zh) | 写数据的方法、装置及计算机存储介质 | |
CN111708601A (zh) | 一种面向云计算的智能存储网关、***及其控制方法 | |
WO2023273803A1 (zh) | 一种认证方法、装置和存储*** | |
EP4318257A1 (en) | Method and apparatus for processing data, reduction server, and mapping server | |
TWI619026B (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 |