CN113590323A - 面向MapReduce的数据传输方法、装置、设备及存储介质 - Google Patents
面向MapReduce的数据传输方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113590323A CN113590323A CN202110872377.6A CN202110872377A CN113590323A CN 113590323 A CN113590323 A CN 113590323A CN 202110872377 A CN202110872377 A CN 202110872377A CN 113590323 A CN113590323 A CN 113590323A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- memory
- information
- memory buffer
- 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.)
- Withdrawn
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/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- 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/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种面向MapReduce的数据传输方法、装置、设备及存储介质,解决了MapReduce存算分离架构下基于以太网和TCP/IP协议数据传输效率低下的技术问题。本申请中,包括:根据接收拉取数据请求中的第一元信息,进而在本节点上预设的RDMA通信内存中分片的第一内存缓冲区中查找对应的数据分片,并将查询到的数据分片和对应的存储位置生成第二元信息反馈给Reduce节点上的Reduce进程,以使Reduce进程根据所述第二元信息在Reduce节点上的预设的RDMA通信内存中分配第二内存缓冲区,并根据所述第二元信息将数据分片从所述第一内存缓冲区中拉取到所述第二内存缓冲区中。
Description
技术领域
本发明涉及计算机通信技术领域,尤其涉及一种面向MapReduce的数据传输方法、装置、设备及存储介质。
背景技术
近年来,大数据分析与处理技术在以互联网为代表的行业中得到了广泛应用。在多类典型的数据分析与处理方法中,MapReduce计算模型最为流行。MapReduce是一种编程模型,用于大规模数据集的并行运算,它具有较强的通用性和可伸缩性,能够很好地满足多种算法、各类数据在不同规模的计算资源上执行的需求。
MapReduce计算模型的计算过程分为Map和Reduce两个阶段。在Map阶段,模型依照用户关心的字段完成数据的分类组织;在Reduce阶段,模型在完成同类数据上目标字段的汇总计算。因此,MapReduce计算过程中必然涉及到数据的传输,具体包括:Map阶段加载输入数据;Map阶段的中间结果传输给Reduce阶段;Reduce阶段保存输出数据。其中,Map阶段的中间结果传输给Reduce阶段的机制一般称为“混洗”。
传统大数据计算框架的混洗机制在经典场景下有其合理性,它们在技术实现的简单性、应用环境的兼容性具有一定优势。然而,在当今数据计算业务复杂度提升、存算分离架构流行的趋势下,传统混洗机制的数据传输效率低的问题也开始突显。因此,如何进一步提高混洗机制的效率是我们亟待解决的问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种面向MapReduce的数据传输方法、装置、设备及存储介质,旨在解决现有技术混洗机制数据传输性能不足的技术问题。
为实现上述目的,本发明提供了一种面向MapReduce的数据传输方法,所述方法包括以下步骤:
接收Reduce节点上的Reduce进程发送的拉取数据请求,获取所述拉取数据请求中的第一元信息;
根据所述第一元信息,在本节点上预设的RDMA通信内存中分配的第一内存缓冲区中查找所述Reduce进程需要拉取的数据分片;
若存在,获取所述数据分片在所述第一内存缓冲区的存储位置,根据所述数据分片和所述存储位置生成第二元信息;
将所述第二元信息发送给所述Reduce进程,以使所述Reduce进程根据所述第二元信息在Reduce节点上的预设的RDMA通信内存中分配第二内存缓冲区,并根据所述第二元信息将所述数据分片从所述第一内存缓冲区中拉取到所述第二内存缓冲区中。
优选地,所述接收Reduce节点上的Reduce进程发送的拉取数据请求,获取所述拉取数据请求中的第一元信息的步骤之前,还包括:
接收Map节点上的Map进程发送的数据推送请求,获取所述数据推送请求中的第三元信息;
根据所述第三元信息在本节点上的预设的RDMA通信内存中分配对应的第三内存缓冲区,并生成第四元信息;
将所述第四元信息反馈给所述Map进程,以使所述Map进程接收到第四元信息后,根据所述第四元信息推送对应的数据分片;
接收所述Map进程推送的数据分片,根据所述第四元信息将所述数据分片写入所述对应的第三内存缓冲区;
在所述对应的第三内存缓冲区写入完毕后,将所述数据分片写入本节点上的本地磁盘中。
优选地,所述接收Map节点上的Map进程发送的数据推送请求,获取所述数据推送请求中的第三元信息的步骤之前,还包括:系统初始化的步骤;
调用本节点上的RDMA开发库API,在本节点的内存中注册一块内存区域作为第一RDMA通信内存,生成第一通信地址;
将所述第一通信地址发送给Map节点上的Map进程,以使Map进程获取所述第一通信地址后,Map节点上的混洗客户端调用Map节点上的RDMA开发库API,将Map节点上的预置的内存块注册为第二RDMA通信内存,生成第二通信地址,反馈所述第二通信地址至本节点;
将所述第一通信地址发送给Reduce节点上的Reduce进程,以使Reduce进程获取所述第一通信地址后,Reduce节点上的混洗客户端调用Reduce节点上的RDMA开发库API,将Reduce节点上的预置的内存块注册为第三RDMA通信内存,生成第三通信地址,反馈所述第三通信地址至本节点。
优选地,所述在所述对应的第二内存缓冲区写入完毕后,将所述数据分片写入独立混洗节点上的本地磁盘中的步骤之后,还包括:
获取本节点上的本地RDMA通信内存资源的使用情况;
在所述使用情况达到预设值时,清除所述第三内存缓冲区的数据分片,释放所述第三内存缓冲区内存。
优选地,所述若存在,获取所述数据分片在所述第一内存缓冲区的存储位置,根据所述数据分片和所述存储位置生成第二元信息的步骤,还包括:
若不存在,则获取所述数据分片在本节点磁盘上的存储位置,将所述存储位置映射到本节点的RDMA通信内存中的第一内存缓冲区,得到所述数据分片在所述第一内存缓冲区的映射存储位置,根据所述数据分片和所述映射存储位置生成第二元信息。
优选地,所述将所述第二元信息发送给所述Reduce进程,以使所述Reduce进程根据所述第二元信息在Reduce节点上的预设的RDMA通信内存中分配第二内存缓冲区,并根据所述第二元信息将所述数据分片从所述第一内存缓冲区中拉取到所述第二内存缓冲区中的步骤之后,还包括:
获取数据拉取状态;
在所述数据拉取状态为拉取完毕时,断开所述数据分片与本节点上的所述第一内存缓冲区的映射。
优选地,所述在所述数据拉取状态为拉取完毕时,断开所述数据分片与本节点上的所述第一内存缓冲区的映射的步骤之后,还包括:
获取本节点的本地RDMA通信内存资源的使用情况;
在所述使用情况达到预设值时,清除本节点的所述第一内存缓冲区的数据分片,释放本节点的所述第一内存缓冲区内存。
此外,为实现上述目的,本发明还提出一种面向MapReduce的数据传输装置,所述面向MapReduce的数据传输装置包括:
请求接收模块,用于接收Reduce节点上的Reduce进程发送的拉取数据请求,获取所述拉取数据请求中的第一元信息;
数据查询模块,用于根据所述第一元信息,在本节点上预设的RDMA通信内存中分配的第一内存缓冲区中查找所述Reduce进程需要拉取的数据分片;
信息生成模块,用于在所述数据分片存在所述第一内存缓冲区时,获取所述数据分片在所述第一内存缓冲区的存储位置,根据所述数据分片和所述存储位置生成第二元信息。
信息发送模块,用于将所述第二元信息发送给所述Reduce进程,以使所述Reduce进程根据所述第二元信息在Reduce节点上的预设的RDMA通信内存中分配第二内存缓冲区,并根据所述第二元信息将所述数据分片从所述第一内存缓冲区中拉取到所述第二内存缓冲区中。
此外,为实现上述目的,本发明还提出一种面向MapReduce的数据传输设备,所述面向MapReduce的数据传输设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的面向MapReduce的数据传输程序,所述面向MapReduce的数据传输程序配置为实现如上文所述的面向MapReduce的数据传输方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有面向MapReduce的数据传输程序,所述面向MapReduce的数据传输程序被处理器执行时实现如上文所述的面向MapReduce的数据传输方法的步骤。
本发明通过接收Reduce节点上的Reduce进程发送的拉取数据请求,获取所述拉取数据请求中的第一元信息;根据所述第一元信息,在本节点上预设的RDMA通信内存中分配的第一内存缓冲区中查找所述Reduce进程需要拉取的数据分片;若存在,获取所述数据分片在所述第一内存缓冲区的存储位置,根据所述数据分片和所述存储位置生成第二元信息;将所述第二元信息发送给所述Reduce进程,以使所述Reduce进程根据所述第二元信息在Reduce节点上的预设的RDMA通信内存中分配第二内存缓冲区,并根据所述第二元信息将所述数据分片从所述第一内存缓冲区中拉取到所述第二内存缓冲区中;从而实现了MapReduce计算模型中独立混洗服务与Reduce服务的独立模块化部署,进而实现了通信与计算解耦,让各模块的独立优化更易于实现,且通过实现RDMA在MapReduce计算模型存算分离架构中的应用,进而完成了RDMA网络替换传统的以太网和TCP/IP协议传输,从而提高了MapReduce计算模型存算分离架构中各节点间的数据传输效率,并且提高了MapReduce计算模型的数据计算性能和效率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的面向MapReduce的数据传输设备的结构示意图;
图2为本发明面向MapReduce的数据传输方法第一实施例的流程示意图;
图3为传统大数据计算框架的混洗机制的系统结构示意图;
图4为本发明面向MapReduce的数据传输方法的独立混洗机制的系统结构图;
图5为本发明面向MapReduce的数据传输方法第二实施例的流程示意图;
图6为本发明面向MapReduce的数据传输方法第三实施例的流程示意图;
图7为本发明面向MapReduce的数据传输装置第一实施例的结构框图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的面向MapReduce的数据传输设备结构示意图。
如图1所示,该面向MapReduce的数据传输设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless-Fidelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM),也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对面向MapReduce的数据传输设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及面向MapReduce的数据传输程序。
在图1所示的面向MapReduce的数据传输设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明面向MapReduce的数据传输设备中的处理器1001、存储器1005可以设置在面向MapReduce的数据传输设备中,所述面向MapReduce的数据传输设备通过处理器1001调用存储器1005中存储的面向MapReduce的数据传输程序,并执行本发明实施例提供的面向MapReduce的数据传输方法。
本发明实施例提供了一种面向MapReduce的数据传输方法,参照图2,图2为本发明一种面向MapReduce的数据传输方法第一实施例的流程示意图。
本实施例中,所述面向MapReduce的数据传输方法包括以下步骤:
步骤S100:接收Reduce节点上的Reduce进程发送的拉取数据请求,获取所述拉取数据请求中的第一元信息。
需要说明的是,本实施例的方法的执行主体可以是具有数据处理、网络通信以及程序运行功能的计算服务设备,例如云服务器、独立服务器,也可以是其他能够实现上述功能的设备,本实施例对此不作限制。
此外,值得一提的是上述计算服务设备中需要部署有独立混洗服务。
还需要说明的是,MapReduce是一个并行计算的大数据模型,为了便于理解,本实施中将以Spark为例进行说明。
Spark是Apache开源社区维护的一套大数据计算框架,支持批式、流式、SQL(Structured Query Language,结构化查询语言)查询等多种分析与处理模式。所述Spark典型的分析与处理作业在后台均以MapReduce计算模型执行。
社区开源版本的Spark采用传统的混洗机制,即基于本地混洗服务和TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)网络,参见图3,图3是传统大数据计算框架的混洗机制的结构示意图,传统的混洗机制一般包括Map阶段的数据收集(collect)、溢写(spill),以及Reduce阶段的数据复制(copy)、排序(sort)等过程。传统混洗机制通常具有以下技术特征:(1)混洗机制存在于Map进程和Reduce进程管理的本地混洗服务中,而非以独立服务的形式存在;(2)混洗过程中,数据传输是由Reduce进程发起,由Reduce进程从Map进程拉取(pull)数据;(3)数据传输一般通过以太网和TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)协议实现。
可理解的是,传统大数据计算框架的混洗机制在经典场景下有其合理性,它们在技术实现的简单性、应用环境的兼容性等方面具有一定优势。然而,在当今数据计算业务复杂度提升、存算分离架构流行的趋势下,传统混洗机制的缺点也开始突显。特别是随着高性能计算技术的普及,以InfiniBand(无限带宽网络)、RoCE(RDMA over ConvergedEthernet,聚合以太网上的RDMA)为代表的高性能网络也开始在大数据集群中应用。这类网络上可以运行高性能通信协议,其中典型的代表是RDMA(Remote Direct Memory Access,远程直接内存访问)协议。如何在大数据计算框架中充分发挥高性能网络硬件,尤其是RDMA网卡的性能优势,也成为业界关心的问题。在这样的背景下,传统数据混洗方法与系统的缺点主要体现在以下方面:
(1)对存算分离架构的适配性不足、容易产生性能瓶颈。在传统的存算一体架构中,混洗过程的中间数据如果被保存在分布式文件系统(如HDFS),那么当它被访问时,可以利用存储的局部性或短路访问方式进行优化。但在存算分离架构下,分布式文件系统与计算进程运行在不同节点,甚至不同网络环境当中,混洗过程的中间数据一旦需要进出分布式文件系统,就会产生较大的远程访问开销。
(2)混洗过程的性能难以系统性地优化,特别是难以基于高性能网络技术来优化。传统混洗机制的实现逻辑分散在Map和Reduce进程的多个组件当中,且涉及内存、本地文件系统、分布式文件系统等多重存储机制,以及RPC(Remote Procedure Call,远程过程调用)、HTTP(HyperText Transfer Protocol,超文本传输协议)等多重通信机制,对其性能实施优化涉及复杂的组件间协同。特别是在引入InfiniBand、RoCE等高性能网络硬件时,如何以系统化、整体化的思路改进多种存储机制和通信机制之间的网络性能,成为系统设计者的重大挑战。
(3)混洗机制在容器环境下的存储开销大,不利于大数据服务上云。大数据框架以云服务方式运营已成为趋势,而容器环境是云服务的主流宿主环境。业界现有的混洗机制普遍对本地文件系统的依赖性强,传统的本地混洗服务在容器内工作时的性能、容错性及其对存储空间的弹性需求均受制于容器本地存储机制或存储挂载机制,难以取得较优的读写性能以及较灵活的空间管理能力。
而基于上述问题,本实施例中是在基于Spark的大数据计算集群中提出RDMA替换传统混洗机制中TCP/IP网络进行数据传输的一种数据传输方法。参见图4,图4为本发明面向MapReduce的数据传输方法的独立混洗机制的系统结构图,本系统分为以下几个组成部分:
(1)一个或多个计算节点,可以是物理机,也可以是虚拟机或者容器,本实施例对此不作限制;上述计算节点包含有本地存储系统,其中包括有内存及文件系统;还包含有一块TCP/IP网卡;还包含一块RDMA网卡;且运行至少一个计算进程,计算进程可以是Map进程、Reduce进程或者Map进程与Reduce进程的组合,其中计算进程中包含有混洗服务客户端。
(2)一个或多个混洗节点,可以是物理机,也可以是虚拟机或者容器,本实施例对此不作限制;上述混洗节点包含有本地存储系统,其中包括有内存及文件系统;还包含有一块TCP/IP网卡;还包含一块RDMA网卡;且运行至少一个独立混洗服务。
(3)一套分布式文件系统。
(4)一套TCP/IP网络,其中至少包含一台TCP/IP交换机,可以是物理交换机,也可以是虚拟交换机,本实施例对此不作限制;一组通信链路,从TCP/IP交换机连接到每个计算节点和每个混洗节点的TCP/IP网卡;可以是物理链路,也可以是虚拟链路,本实施例对此不作限制。
(5)一套RDMA网络,其中至少包含一台RDMA交换机,可以是物理交换机,也可以是虚拟交换机,本实施例对此不作限制;一组通信链路,从RDMA交换机连接到每个计算节点和每个混洗节点的RDMA网卡;可以是物理链路,也可以是虚拟链路,本实施例对此不作限制。
应理解的是,上述系统旨在以一种创新性的思路改进并优化MapReduce计算中的混洗机制,使得大数据分析与处理业务更好地适配于存算分离架构及高性能网络硬件,提升计算和通信的性能。
可以理解的是,本实施例基于Spark的数据传输的方法,特别是针对于Spark的存算分离架构,Spark计算模型的Map进程、Reduce进程以及独立混洗服务是以独立的服务形式存在,可以分别部署在不同的服务器中,也可以部署在同一台服务器上,这里以部署在不同的服务器中为例。例如:有三台虚拟服务器,Map进程部署在服务器A上,Reduce进程部署在服务器B上,独立混洗服务部署在服务器C上。上述部署方式即是Spark的计算模型的存算分离架构的典型署方式。
应理解的是,所述本节点是指部署有独立混洗服务的节点服务器,所述独立混洗服务中包含数据分片管理器和RDMA通信管理器,其中,数据分片管理器用于管理本地存储上的Spark数据分片,它记录了各个数据分片的标识号、长度、存储位置等元信息,并提供元信息访问接口;RDMA通信管理器用于管理本地RDMA网卡的数据通信、内存注册等操作。
其中,上述RDMA是指远程直接内存访问技术,一种高性能网络通信协议,具体有高带宽、低延迟的技术特性。支持该协议的网卡称为RDMA网卡。
此外,还需理解的是,所述元信息是指数据分片的描述性信息,包括但不限于数据分片的标识号、长度、存储位置等。所述数据分片可以是在MapReduce通信过程中,依据存储结果或者通信接口对数据长度的约束,将待通信的数据进行切分而形成的数据单元。
应理解的是,所述Reduce进程是指Spark计算模型中的Reduce节点上部署的Reduce进程,大数据的计算分析在Reduce节点通过Reduce进程进行,Reduce进程主要完成同类数据上的目标字段的汇总计算,并将结果发送到后面的处理步骤。
还应理解的是,在本实施例中,所述Reduce节点还部署有混洗服务客户端和RDMA通信管理器,所述RDMA通信管理器是用于管理本地RDMA网卡的数据通信、内存注册等操作,并参与完成Reduce进程与独立混洗服务的数据交互。
此外,还需要说明的是,所述Reduce节点上的混洗服务客户端可用于通过TCP/IP网络向独立混洗服务发起拉取数据分片请求消息,还可用于通过RDMA网络向独立混洗服务发起拉取数据分片请求消息,在本实施例中对此不作限制。本实施例中所述拉取数据分片请求的内容包括:消息类型、数据分片标识、数据分片长度等信息。
其次,还需说明的是,在本实施例中,数据分片传输的机制是基于RoCE网卡和RoCE交换机的RDMA网络。
在具体实现中,Reduce进程将拉取数据请求封装在一个数据结构中,所述拉取数据分片请求包括:消息类型、第一元信息等信息,并通过套接字的发送接口将封装有拉取数据请求的数据结构发送给独立混洗服务,独立混洗服务接收到所述请求消息后,对所述请求消息进行解析,获取到对应的第一元信息。
步骤S200:根据所述第一元信息,在本节点上预设的RDMA通信内存中分配的第一内存缓冲区中查找所述Reduce进程需要拉取的数据分片。
需要说明的是,所述本节点是指部署有独立混洗服务的节点服务器,用于为独立混洗服务提供计算服务。
可以理解的是,所述预设的RDMA通信内存是指本节点上的RDMA通信管理器在初始化时,在本地内存中注册的一块内存地址,用于临时存储所述数据分片,且满足RDMA网络的技术需要,能够进行RDMA数据通信的内存空间,其物理上等同于普通的内存空间,但满足特定的约束条件,包括:页面锁定等。
应理解的是,所述第一内存缓冲区是指RDMA通信管理器在RDMA通信内存中分配的一块临时内存,并非在本地内存中重新分配的内存。
在具体实现中,本节点上的独立混洗服务通过数据分片管理器根据接收到的第一元信息查询本地存储的元信息列表,在查询到第一元信息对应元信息列表中的元信息后,根据元信息中的存储位置在本节点上RDMA通信内存中分配的第一内存缓冲区中获取对应的数据分片。例如:本节点上的独立混洗服务接收到的第一元信息中数据分片的ID是9527,独立混洗服务通过调用数据分片管理器查询本地存储的元信息列表中ID是9527的元信息,即可理解为根据所述第一元信息,在本节点上的预设RDMA通信内存中分配的第一内存缓冲区中查找是否存在所述Reduce进程需要拉取的数据分片。
此外,需要说明的是,如果数据分片位于RDMA通信内存中分配的第一内存缓冲区,那么存储位置包括内存键、内存地址;如果数据分片位于本地磁盘,那么存储位置包括文件名、偏移量。
步骤S300:若存在,获取所述数据分片在所述第一内存缓冲区的存储位置,根据所述数据分片和所述存储位置生成第二元信息。
在具体实现中,当数据分片位于本节点的RDMA通信内存的内存缓冲区时,独立混洗服务将所述数据分片对应的元信息设定为第二元信息,并将消息类型、第二元信息等信息封装在一个数据结构中,采用TCP/IP网络或者RDMA网络,通过套接字的发送接口返回给Reduce节点上的Reduce进程。在本实施例中对此不作限制。
进一步的,为了保证一定能获取到数据,本实施例还包括另外一种数据获取路径,所述若存在,获取所述数据分片在所述第一内存缓冲区的存储位置,根据所述数据分片和所述存储位置生成第二元信息的步骤,还包括:若不存在,则获取所述数据分片在本节点磁盘上的存储位置,将所述存储位置映射到本节点的RDMA通信内存中的第一内存缓冲区,得到所述数据分片在所述第一内存缓冲区的映射存储位置,根据所述数据分片和所述映射存储位置生成第二元信息。
需要说明的是,所述若不存在,则获取所述数据分片在本节点磁盘上的存储位置是指独立混洗服务将所述数据分片保存到本地磁盘后,所述数据分片在本地磁盘上的位置。例如:第一内存缓冲区的存储位置是指独立混洗服务上RDMA通信内存上分配的临时内存的R区,数据分片在本地磁盘上的位置是指独立混洗服务将数据分片保存到本地磁盘的D区,本节点磁盘上的存储位置是指上述磁盘的D区的地址。
可以理解的是,所述将所述存储位置映射到本节点的RDMA通信内存中的第一内存缓冲区,得到所述数据分片在所述第一内存缓冲区的映射存储位置的步骤是指将本地磁盘上的数据分片原样映射到本节点RDMA通信内存地址空间的机制,在数据传输过程中,Reduce进程在访问该内存地址空间时,实际访问的是本节点本地磁盘上的文件,且不发生数据的复制。
在具体实现中,本节点上的独立混洗服务在接收到第一元信息后,通过数据分片管理器查询本地RDMA通信内存中分配的第一内存缓冲区,在第一内存缓冲区中没有查询到所述对应的数据分片时,则数据分片管理器查询本地磁盘中是否存有所述对应的数据分片,当本地磁盘中存有所述对应的数据分片时,独立混洗服务在内存缓冲区对数据文件做内存映射操作,使得数据分片可以通过内存地址空间访问。在本实施例中,数据分片管理器以所述第一元信息作为输入参数,调用操作系统的内存映射接口,将数据分片所在文件中偏移量所指示的文件内容原样映射到本地内存地址空间中,将所述本地内存地址空间等信息设定为第二元信息。
步骤S400:将所述第二元信息发送给所述Reduce进程,以使所述Reduce进程根据所述第二元信息在Reduce节点上的预设的RDMA通信内存中分配第二内存缓冲区,并根据所述第二元信息将所述数据分片从所述第一内存缓冲区中拉取到所述第二内存缓冲区中。
在具体实现中,本节点上的独立混洗服务将所述第二元信息发送给Reduce节点上的Reduce进程,Reduce进程接收到所述第二元信息后,Reduce进程的RDMA通信管理器调用RDMA开发库API,将本地存储中的一块内存区域注册为RDMA通信内存,并在RDMA通信内存中分配一块用于本次数据通信的内存缓冲区,Reduce进程的混洗服务客户端对所述第二元信息进行解析,获取对应的数据分片的存储地址等信息,Reduce进程通过Reduce节点上的混洗服务客户端通过所述存储地址找到对应的内存缓冲区,然后通过RDMA网络从独立混洗服务的内存缓冲区拉取数据分片。
进一步的,为了降低运行内存占用率,提高服务器计算能力,所述将所述第二元信息发送给所述Reduce进程,以使所述Reduce进程根据所述第二元信息在Reduce节点上的预设的RDMA通信内存中分配第二内存缓冲区,并根据所述第二元信息将所述数据分片从所述第一内存缓冲区中拉取到所述第二内存缓冲区中的步骤之后,还包括:获取数据拉取状态;在所述数据拉取状态为拉取完毕时,断开所述数据分片与本节点上的所述第一内存缓冲区的映射。
需要说明的是,所述数据拉取状态是指Reduce节点上的Reduce进程通过RDMA网络直接拉取数据分片的任务状态,所述任务状态包括:数据准备中、数据传输中、拉取完毕。
在具体实现中,本节点上的独立混洗服务获取所述数据分片的数据传输状态,在所述数据传输状态为拉取完毕时,断开所述数据分片与所述本节点上的所述第一内存缓冲区的映射。在所述数据传输状态为非拉取完毕以外的其他状态时,继续保持所述数据分片与所述预设内存缓冲区的映射。
进一步的,为了进一步降低运行内存占用率,提高服务器计算能力,所述在所述数据拉取状态为拉取完毕时,断开所述数据分片与本节点上的所述第一内存缓冲区的映射的步骤之后,还包括:获取本节点的本地RDMA通信内存资源的使用情况;在所述使用情况达到预设值时,清除本节点的所述第一内存缓冲区的数据分片,释放本节点的所述第一内存缓冲区内存。
可以理解的是,所述预设值是管理员设置的一个内存使用百分比的数值,根据独立混洗服务所部署的服务器性能,可以将所述预设值设置成不同的数值,例如:50%、70%、90%,本实施例对此不作限制。
在具体实现中,独立混洗服务获取当前本地RDMA通信内存资源的使用情况,在所在所述使用情况达到预设值时,清除内存缓冲区数据,释放内存缓冲区内存。
本实施例通过接收Reduce节点上的Reduce进程发送的拉取数据请求,获取所述拉取数据请求中的第一元信息;根据所述第一元信息,在本节点上预设的RDMA通信内存中分配的第一内存缓冲区中查找所述Reduce进程需要拉取的数据分片;若存在,获取所述数据分片在所述第一内存缓冲区的存储位置,根据所述数据分片和所述存储位置生成第二元信息;将所述第二元信息发送给所述Reduce进程,以使所述Reduce进程根据所述第二元信息在Reduce节点上的预设的RDMA通信内存中分配第二内存缓冲区,并根据所述第二元信息将所述数据分片从所述第一内存缓冲区中拉取到所述第二内存缓冲区中;从而实现了MapReduce计算模型中独立混洗服务与Reduce服务的独立模块化部署,进而实现了通信与计算解耦,让各模块的独立优化更易于实现,且通过实现RDMA在MapReduce计算模型存算分离架构中的应用,进而完成了RDMA网络替换传统的以太网和TCP/IP协议传输,从而提高了MapReduce计算模型存算分离架构中各节点间的数据传输效率,并且提高了MapReduce计算模型的数据计算性能和效率。
此外,本发明实施例提供的面向MapReduce的数据传输方法,由于MapReduce计算模型中独立混洗服务与Reduce服务的独立模块化部署,使得基于本发明的MapReduce计算模型更适应于容器环境运行,并且通过实现RDMA在MapReduce计算模型存算分离架构中的应用,提高了MapReduce计算模型存算分离架构中各节点间的数据传输效率,从而更有利于以云服务方式使用基于本发明的MapReduce计算模型。
参考图5,图5为本发明一种面向MapReduce的数据传输方法第二实施例的流程示意图。
基于上述第一实施例,本实施例面向MapReduce的数据传输方法在所述步骤S100之前,还包括:
步骤S101:接收Map节点上的Map进程发送的数据推送请求,获取所述数据推送请求中的第三元信息。
需要说明的是,所述Map节点是指部署有Map进程的节点服务器,所述Map进程是指Spark计算模型中的Map节点上部署的Map进程,在Map节点数据处理的过程包括:数据收集、溢写等操作,以及将数据处理结果发送给后面的处理步骤。
可以理解的是,在本实施例中,所述Map节点上还部署有混洗服务客户端和RDMA通信管理器,所述RDMA通信管理器是用于管理本地RDMA网卡的数据通信、内存注册等操作,并参与完成Map进程与独立混洗服务的数据交互。
此外,还需说明的是,所述Map节点上的混洗服务器客户端可用于通过TCP/IP网络向独立混洗节点上的独立混洗服务发起拉取数据分片请求消息,还可用于通过RDMA网络向独立混洗节点上的独立混洗服务发起拉取数据分片请求消息,在本实施例中对此不作限制。本实施例中所述拉取数据分片请求消息的内容包括:消息类型、数据分片标识、数据分片长度等信息。
在具体实现中,Map进程的混洗服务客户端通过TCP/IP网络或者RDMA网络向独立混洗服务发起推送数据分片的请求消息,本实施例对此不作限制。所述推送数据分片请求消息的内容包括:消息类型、第三元信息,并将上述推送数据分片请求消息封装在一个数据结构中,通过套接字的发送接口将所述推送数据分片请求消息发送至独立混洗服务,独立混洗服务接收到所述推送数据分片请求消息后,对所述拉取数据分片请求消息进行解析,获取到对应的第三元信息。
步骤S102:根据所述第三元信息在本节点上的预设的RDMA通信内存中分配对应的第三内存缓冲区,并生成第四元信息。
需要说明的是,所述本节点是指部署有独立混洗服务的节点服务器,用于为独立混洗服务提供计算服务。
可以理解的是,所述本节点上的预设的RDMA通信内存是独立混洗节点上的RDMA通信管理器在本地内存中注册的一块内存区域,所述对应的内存缓冲区是指RDMA通信内存中的分配的一个临时存储区域,而非重新在内存其他区块申请的新的内存区域。
在具体实现中,独立混洗服务根据所述第三元信息,在本地的RDMA通信内存中分配一块用于本次数据通信的内存缓冲区,并将所述内存缓冲区对应的元信息设定为第四元信息。
步骤S103:将所述第四元信息反馈给所述Map进程,以使所述Map进程接收到第四元信息后,根据所述第四元信息推送数据分片。
在具体实现中,本节点上的独立混洗服务将第四元信息反馈给对应的Map进程,Map进程在接收到所述第四元信息后,通过RDMA网络根据第四元信息向独立混洗节点上指定的内存缓冲区中推送数据分片。
步骤S104:接收所述Map进程推送的数据分片,根据所述第四元信息将所述数据分片写入所述对应的第三内存缓冲区。
步骤S105:在所述对应的第三内存缓冲区写入完毕后,将所述数据分片写入本节点上的本地磁盘中。
在具体实现中,本节点上的独立混洗服务接收到Map节点上的Map进程推送的数据分片后,将数据分片临时保存到独立混洗服务第四元信息对应的第三内存缓冲区,然后再将数据分片保存到独立混洗节点的本地磁盘中。
进一步的,为了降低运行内存占用率,提高服务器计算能力,所述在所述对应的第三内存缓冲区写入完毕后,将所述数据分片写入本节点上的本地磁盘中的步骤之后,还包括:获取本节点上的本地RDMA通信内存资源的使用情况;在所述使用情况达到预设值时,清除所述第三内存缓冲区的数据分片,释放所述第三内存缓冲区内存。
可以理解的是,所述预设值是管理员设置的一个内存使用百分比的数值,根据独立混洗服务所部署的服务器性能,可以将所述预设值设置成不同的数值,例如:50%、70%、90%,本实施例对此不作限制。
在具体实现中,独立混洗服务获取独立混洗节点上本地RDMA通信内存资源的使用情况,在所在所述使用情况达到预设值时,清除所述第三内存缓冲区数据,释放所述第三内存缓冲区内存。
本实施例通过接收Map节点上的Map进程发送的数据推送请求,获取所述数据推送请求中的第三元信息;根据所述第三元信息在本节点上的预设的RDMA通信内存中分配对应的第三内存缓冲区,并生成第四元信息;将所述第四元信息反馈给所述Map进程,以使所述Map进程接收到第四元信息后,根据所述第四元信息推送对应的数据分片;接收所述Map进程推送的数据分片,根据所述第四元信息将所述数据分片写入所述对应的第三内存缓冲区;在所述对应的第三内存缓冲区写入完毕后,将所述数据分片写入本节点上的本地磁盘中;从而实现了MapReduce计算模型中独立混洗服务与Map服务的独立模块化部署,进而实现了通信与计算解耦,让各模块的独立优化更易于实现,且通过实现RDMA在MapReduce计算模型存算分离架构中的应用,进而完成了RDMA网络替换传统的以太网和TCP/IP协议传输,从而提高了MapReduce计算模型存算分离架构中各节点间的数据传输效率,并且提高了MapReduce计算模型的数据计算性能和效率。
此外,本发明实施例提供的面向MapReduce的数据传输方法,由于MapReduce计算模型中独立混洗服务与Map服务的独立模块化部署,使得基于本发明的MapReduce计算模型更适应于容器环境运行,并且通过实现RDMA在MapReduce计算模型存算分离架构中的应用,提高了MapReduce计算模型存算分离架构中各节点间的数据传输效率,从而更有利于以云服务方式使用基于本发明的MapReduce计算模型。
参考图6,图6为本发明一种面向MapReduce的数据传输方法第三实施例的流程示意图。
基于上述第二实施例,本实施例面向MapReduce的数据传输方法在所述步骤S101之前,还包括:系统初始化的步骤;
步骤S001:调用本节点上的RDMA开发库API,在本节点的内存中注册一块内存区域作为第一RDMA通信内存,生成第一通信地址。
在具体实现中,当一个Spark任务被运行之后,独立混洗节点上的独立混洗服务在启动时,独立混洗服务的RDMA通信管理器调用RDMA开发库API,将本地内存的一块内存区域注册为RDMA通信内存,并生成第一通信地址。
步骤S002:将所述第一通信地址发送给Map节点上的Map进程,以使Map进程获取所述第一通信地址后,Map节点上的混洗客户端调用Map节点上的RDMA开发库API,将Map节点上的内存中注册一块内存区域作为第二RDMA通信内存,生成第二通信地址,反馈所述第二通信地址至本节点。
在具体实现中,独立混洗节点上的独立混洗服务将第一通信地址通过TCP/IP或者RDMA网络发送给Map节点上的Map进程,Map进程接收到独立混洗服务发送的第一通信地址后,Map进程将第一通信地址发送给同节点上的混洗客户端,混洗客户端再调用同节点上的RDMA开发库API,在同节点的内存上注册一块内存区域作为第二RDMA通信内存,并根据第二RDMA通信内存的信息生成第二通信地址,反馈给地理混洗节点上的独立混洗服务。
步骤S003:将所述第一通信地址发送给Reduce节点上的Reduce进程,以使Reduce进程获取所述第一通信地址后,Reduce节点上的混洗客户端调用Reduce节点上的RDMA开发库API,将Reduce节点上的内存中注册一块内存区域作为第三RDMA通信内存,生成第三通信地址,反馈所述第三通信地址至本节点。
在具体实现中,独立混洗节点上的独立混洗服务将第一通信地址通过TCP/IP或者RDMA网络发送给Reduce节点上的Reduce进程,Reduce进程接收到独立混洗服务发送的第一通信地址后,Reduce进程将第一通信地址发送给同节点上的混洗客户端,混洗客户端再调用同节点上的RDMA开发库API,在同节点的内存上注册一块内存区域作为第三RDMA通信内存,并根据第二RDMA通信内存的信息生成第二通信地址,反馈给地理混洗节点上的独立混洗服务。
本实施例通过调用本节点上的RDMA开发库API,在本节点的内存中注册一块内存区域作为第一RDMA通信内存,生成第一通信地址;将所述第一通信地址发送给Map节点上的Map进程,以使Map进程获取所述第一通信地址后,Map节点上的混洗客户端调用Map节点上的RDMA开发库API,将Map节点上的内存中注册一块内存区域作为第二RDMA通信内存,生成第二通信地址,反馈所述第二通信地址至本节点;将所述第一通信地址发送给Reduce节点上的Reduce进程,以使Reduce进程获取所述第一通信地址后,Reduce节点上的混洗客户端调用Reduce节点上的RDMA开发库API,将Reduce节点上的内存中注册一块内存区域作为第三RDMA通信内存,生成第三通信地址,反馈所述第三通信地址至本节点;从而完成了面向MapReduce计算模型存算分离的RDMA数据传输系统的环境搭建工作,进而将MapReduce计算模型与RDMA技术结合,使得在MapReduce的数据传输层也能充分发挥出高性能RDMA技术的优势,实现了面向MapReduce计算模型的分布式计算能力的显著提升,使得大规模分布式数据分析与处理业务受益于RDMA高带宽、低延迟的技术优势,解决了传统MapReduce基于以太网和TCP/IP协议的数据传输效率低下的问题。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有面向MapReduce的数据传输程序,所述面向MapReduce的数据传输程序被处理器执行时实现如上文所述的面向MapReduce的数据传输方法的步骤。
参照图7,图7为本发明面向MapReduce的数据传输装置第一实施例的结构框图。
如图7所示,本发明实施例提出的面向MapReduce的数据传输装置包括:
请求接收模块100,用于接收Reduce进程发送的拉取数据请求,获取所述拉取数据请求中的第一元信息。
需要说明的是,本实施例的方法的执行主体可以是具有数据处理、网络通信以及程序运行功能的计算服务设备,例如云服务器、独立服务器,也可以是其他能够实现上述功能的设备,本实施例对此不作限制。且该设备中部署有独立混洗服务。
还需要说明的是,MapReduce是一个并行计算的大数据模型,为了便于理解,本实施中将以Spark为例进行说明。
应理解的是,所述本节点是指部署有独立混洗服务的节点服务器,所述独立混洗服务中包含数据分片管理器和RDMA通信管理器,其中,数据分片管理器用于管理本地存储上的Spark数据分片,它记录了各个数据分片的标识号、长度、存储位置等元信息,并提供元信息访问接口;RDMA通信管理器用于管理本地RDMA网卡的数据通信、内存注册等操作。
此外,还需理解的是,所述元信息是指数据分片的描述性信息,包括但不限于数据分片的标识号、长度、存储位置等。所述数据分片可以是在MapReduce通信过程中,依据存储结果或者通信接口对数据长度的约束,将待通信的数据进行切分而形成的数据单元。
应理解的是,所述Reduce进程是指Spark计算模型中的Reduce节点上部署的Reduce进程,大数据的计算分析在Reduce节点通过Reduce进程进行,Reduce进程主要完成同类数据上的目标字段的汇总计算,并将结果发送到后面的处理步骤。
还应理解的是,在本实施例中,所述Reduce节点还部署有混洗服务客户端和RDMA通信管理器,所述RDMA通信管理器是用于管理本地RDMA网卡的数据通信、内存注册等操作,并参与完成Reduce进程与独立混洗服务的数据交互。
此外,还需要说明的是,所述Reduce节点上的混洗服务客户端可用于通过TCP/IP网络向独立混洗服务发起拉取数据分片请求消息,还可用于通过RDMA网络向独立混洗服务发起拉取数据分片请求消息,在本实施例中对此不作限制。本实施例中所述拉取数据分片请求的内容包括:消息类型、数据分片标识、数据分片长度等信息。
此外,还需说明的是,在本实施例中,数据分片传输的机制是基于RoCE网卡和RoCE交换机的RDMA网络。
在具体实现中,Reduce进程将拉取数据请求封装在一个数据结构中,所述拉取数据分片请求包括:消息类型、第一元信息等信息,并通过套接字的发送接口将封装有拉取数据请求的数据结构发送给独立混洗服务,独立混洗服务接收到所述请求消息后,对所述请求消息进行解析,获取到对应的第一元信息。
数据查询模块200,用于根据所述第一元信息,在本节点上预设的RDMA通信内存中分配的第一内存缓冲区中查找所述Reduce进程需要拉取的数据分片,获取所述数据分片在所述第一内存缓冲区的存储位置。
可以理解的是,所述预设的RDMA通信内存是指本节点上的RDMA通信管理器在初始化时,在本地内存中注册的一块内存地址,用于临时存储所述数据分片,且满足RDMA网络的技术需要,能够进行RDMA数据通信的内存空间,其物理上等同于普通的内存空间,但满足特定的约束条件,包括:页面锁定等。
应理解的是,所述第一内存缓冲区是指RDMA通信管理器在RDMA通信内存中分配的一块临时内存,并非在本地内存中重新分配的内存。
在具体实现中,本节点上的独立混洗服务通过数据分片管理器根据接收到的第一元信息查询本地存储的元信息列表,在查询到第一元信息对应元信息列表中的元信息后,根据元信息中的存储位置在本节点上RDMA通信内存中分配的第一内存缓冲区中获取对应的数据分片。例如:本节点上的独立混洗服务接收到的第一元信息中数据分片的ID是9527,独立混洗服务通过调用数据分片管理器查询本地存储的元信息列表中ID是9527的元信息,即可理解为根据所述第一元信息,在本节点上的预设RDMA通信内存中分配的第一内存缓冲区中查找是否存在所述Reduce进程需要拉取的数据分片。
此外,需要说明的是,如果数据分片位于RDMA通信内存中分配的第一内存缓冲区,那么存储位置包括内存键、内存地址;如果数据分片位于本地磁盘,那么存储位置包括文件名、偏移量。
信息生成模块300,用于在所述数据分片存在所述第一内存缓冲区时,获取所述数据分片在所述第一内存缓冲区的存储位置,根据所述数据分片和所述存储位置生成第二元信息。
在具体实现中,当数据分片位于本节点的RDMA通信内存的内存缓冲区时,独立混洗服务将所述数据分片对应的元信息设定为第二元信息,并将消息类型、第二元信息等信息封装在一个数据结构中,采用TCP/IP网络或者RDMA网络,通过套接字的发送接口返回给Reduce节点上的Reduce进程。在本实施例中对此不作限制。
进一步的,为了保证一定能获取到数据,本实施例还包括另外一种数据获取路径,所述若存在,获取所述数据分片在所述第一内存缓冲区的存储位置,根据所述数据分片和所述存储位置生成第二元信息的步骤,还包括:若不存在,则获取所述数据分片在本节点磁盘上的存储位置,将所述存储位置映射到本节点的RDMA通信内存中的第一内存缓冲区,得到所述数据分片在所述第一内存缓冲区的映射存储位置,根据所述数据分片和所述映射存储位置生成第二元信息。
需要说明的是,所述若不存在,则获取所述数据分片在本节点磁盘上的存储位置是指独立混洗服务将所述数据分片保存到本地磁盘后,所述数据分片在本地磁盘上的位置。例如:第一内存缓冲区的存储位置是指独立混洗服务上RDMA通信内存上分配的临时内存的R区,数据分片在本地磁盘上的位置是指独立混洗服务将数据分片保存到本地磁盘的D区,本节点磁盘上的存储位置是指上述磁盘的D区的地址。
可以理解的是,所述将所述存储位置映射到本节点的RDMA通信内存中的第一内存缓冲区,得到所述数据分片在所述第一内存缓冲区的映射存储位置的步骤是指将本地磁盘上的数据分片原样映射到本节点RDMA通信内存地址空间的机制,在数据传输过程中,Reduce进程在访问该内存地址空间时,实际访问的是本节点本地磁盘上的文件,且不发生数据的复制。
在具体实现中,本节点上的独立混洗服务在接收到第一元信息后,通过数据分片管理器查询本地RDMA通信内存中分配的第一内存缓冲区,在第一内存缓冲区中没有查询到所述对应的数据分片时,则数据分片管理器查询本地磁盘中是否存有所述对应的数据分片,当本地磁盘中存有所述对应的数据分片时,独立混洗服务在内存缓冲区对数据文件做内存映射操作,使得数据分片可以通过内存地址空间访问。在本实施中,数据分片管理器以所述第一元信息作为输入参数,调用操作系统的内存映射接口,将数据分片所在文件中偏移量所指示的文件内容原样映射到本地内存地址空间中,将所述本地内存地址空间等信息设定为第二元信息。
信息发送模块400,用于将所述第二元信息发送给所述Reduce进程,以使所述Reduce进程根据所述第二元信息在Reduce节点上的预设的RDMA通信内存中分配第二内存缓冲区,并根据所述第二元信息将所述数据分片从所述第一内存缓冲区中拉取到所述第二内存缓冲区中。
在具体实现中,本节点上的独立混洗服务将所述第二元信息发送给Reduce节点上的Reduce进程,Reduce进程接收到所述第二元信息后,Reduce进程的RDMA通信管理器调用RDMA开发库API,将本地存储中的一块内存区域注册为RDMA通信内存,并在RDMA通信内存中分配一块用于本次数据通信的内存缓冲区,Reduce进程的混洗服务客户端对所述第二元信息进行解析,获取对应的数据分片的存储地址等信息,Reduce进程通过Reduce节点上的混洗服务客户端通过所述存储地址找到对应的内存缓冲区,然后通过RDMA网络从独立混洗服务的内存缓冲区拉取数据分片。
进一步的,为了降低运行内存占用率,提高服务器计算能力,所述将所述第二元信息发送给所述Reduce进程,以使所述Reduce进程根据所述第二元信息在Reduce节点上的预设的RDMA通信内存中分配第二内存缓冲区,并根据所述第二元信息将所述数据分片从所述第一内存缓冲区中拉取到所述第二内存缓冲区中的步骤之后,还包括:获取数据拉取状态;在所述数据拉取状态为拉取完毕时,断开所述数据分片与本节点上的所述第一内存缓冲区的映射。
需要说明的是,所述数据拉取状态是指Reduce节点上的Reduce进程通过RDMA网络直接拉取数据分片的任务状态,所述任务状态包括:数据准备中、数据传输中、拉取完毕。
在具体实现中,本节点上的独立混洗服务获取所述数据分片的数据传输状态,在所述数据传输状态为拉取完毕时,断开所述数据分片与所述本节点上的所述第一内存缓冲区的映射。在所述数据传输状态为非拉取完毕以外的其他状态时,继续保持所述数据分片与所述预设内存缓冲区的映射。
进一步的,为了进一步降低运行内存占用率,提高服务器计算能力,所述在所述数据拉取状态为拉取完毕时,断开所述数据分片与本节点上的所述第一内存缓冲区的映射的步骤之后,还包括:获取本节点的本地RDMA通信内存资源的使用情况;在所述使用情况达到预设值时,清除本节点的所述第一内存缓冲区的数据分片,释放本节点的所述第一内存缓冲区内存。
可以理解的是,所述预设值是管理员设置的一个内存使用百分比的数值,根据独立混洗服务所部署的服务器性能,可以将所述预设值设置成不同的数值,例如:50%、70%、90%,本实施例对此不作限制。
在具体实现中,独立混洗服务获取当前本地RDMA通信内存资源的使用情况,在所在所述使用情况达到预设值时,清除内存缓冲区数据,释放内存缓冲区内存。
本实施例通过接收Reduce节点上的Reduce进程发送的拉取数据请求,获取所述拉取数据请求中的第一元信息;根据所述第一元信息,在本节点上预设的RDMA通信内存中分配的第一内存缓冲区中查找所述Reduce进程需要拉取的数据分片;若存在,获取所述数据分片在所述第一内存缓冲区的存储位置,根据所述数据分片和所述存储位置生成第二元信息;将所述第二元信息发送给所述Reduce进程,以使所述Reduce进程根据所述第二元信息在Reduce节点上的预设的RDMA通信内存中分配第二内存缓冲区,并根据所述第二元信息将所述数据分片从所述第一内存缓冲区中拉取到所述第二内存缓冲区中;从而实现了MapReduce计算模型中独立混洗服务与Reduce服务的独立模块化部署,进而实现了通信与计算解耦,让各模块的独立优化更易于实现,且通过实现RDMA在MapReduce计算模型存算分离架构中的应用,进而完成了RDMA网络替换传统的以太网和TCP/IP协议传输,从而提高了MapReduce计算模型存算分离架构中各节点间的数据传输效率,并且提高了MapReduce计算模型的数据计算性能和效率。
此外,本发明实施例提供的面向MapReduce的数据传输方法,由于MapReduce计算模型中独立混洗服务与Reduce服务的独立模块化部署,使得基于本发明的MapReduce计算模型更适应于容器环境运行,并且通过实现RDMA在MapReduce计算模型存算分离架构中的应用,提高了MapReduce计算模型存算分离架构中各节点间的数据传输效率,从而更有利于以云服务方式使用基于本发明的MapReduce计算模型。
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的面向MapReduce的数据传输方法,此处不再赘述。
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种面向MapReduce的数据传输方法,其特征在于,所述数据传输方法包括:
接收Reduce节点上的Reduce进程发送的拉取数据请求,获取所述拉取数据请求中的第一元信息;
根据所述第一元信息,在本节点上预设的RDMA通信内存中分配的第一内存缓冲区中查找所述Reduce进程需要拉取的数据分片;
若存在,获取所述数据分片在所述第一内存缓冲区的存储位置,根据所述数据分片和所述存储位置生成第二元信息;
将所述第二元信息发送给所述Reduce进程,以使所述Reduce进程根据所述第二元信息在Reduce节点上的预设的RDMA通信内存中分配第二内存缓冲区,并根据所述第二元信息将所述数据分片从所述第一内存缓冲区中拉取到所述第二内存缓冲区中。
2.如权利要求1所述的面向MapReduce的数据传输方法,其特征在于,所述接收Reduce节点上的Reduce进程发送的拉取数据请求,获取所述拉取数据请求中的第一元信息的步骤之前,还包括:
接收Map节点上的Map进程发送的数据推送请求,获取所述数据推送请求中的第三元信息;
根据所述第三元信息在本节点上的预设的RDMA通信内存中分配对应的第三内存缓冲区,并生成第四元信息;
将所述第四元信息反馈给所述Map进程,以使所述Map进程接收到第四元信息后,根据所述第四元信息推送对应的数据分片;
接收所述Map进程推送的数据分片,根据所述第四元信息将所述数据分片写入所述对应的第三内存缓冲区;
在所述对应的第三内存缓冲区写入完毕后,将所述数据分片写入本节点上的本地磁盘中。
3.如权利要求2所述的面向MapReduce的数据传输方法,其特征在于,所述接收Map节点上的Map进程发送的数据推送请求,获取所述数据推送请求中的第三元信息的步骤之前,还包括:系统初始化的步骤;
调用本节点上的RDMA开发库API,在本节点的内存中注册一块内存区域作为第一RDMA通信内存,生成第一通信地址;
将所述第一通信地址发送给Map节点上的Map进程,以使Map进程获取所述第一通信地址后,Map节点上的混洗客户端调用Map节点上的RDMA开发库API,将Map节点上的内存中注册一块内存区域作为第二RDMA通信内存,生成第二通信地址,反馈所述第二通信地址至本节点;
将所述第一通信地址发送给Reduce节点上的Reduce进程,以使Reduce进程获取所述第一通信地址后,Reduce节点上的混洗客户端调用Reduce节点上的RDMA开发库API,将Reduce节点上的内存中注册一块内存区域作为第三RDMA通信内存,生成第三通信地址,反馈所述第三通信地址至本节点。
4.如权利要求2所述的面向MapReduce的数据传输方法,其特征在于,所述在所述对应的第三内存缓冲区写入完毕后,将所述数据分片写入本节点上的本地磁盘中的步骤之后,还包括:
获取本节点上的本地RDMA通信内存资源的使用情况;
在所述使用情况达到预设值时,清除所述第三内存缓冲区的数据分片,释放所述第三内存缓冲区内存。
5.如权利要求1所述的面向MapReduce的数据传输方法,其特征在于,所述若存在,获取所述数据分片在所述第一内存缓冲区的存储位置,根据所述数据分片和所述存储位置生成第二元信息的步骤,还包括:
若不存在,则获取所述数据分片在本节点磁盘上的存储位置,将所述存储位置映射到本节点的RDMA通信内存中的第一内存缓冲区,得到所述数据分片在所述第一内存缓冲区的映射存储位置,根据所述数据分片和所述映射存储位置生成第二元信息。
6.如权利要求5所述的MapReduce的数据传输方法,其特征在于,所述将所述第二元信息发送给所述Reduce进程,以使所述Reduce进程根据所述第二元信息在Reduce节点上的预设的RDMA通信内存中分配第二内存缓冲区,并根据所述第二元信息将所述数据分片从所述第一内存缓冲区中拉取到所述第二内存缓冲区中的步骤之后,还包括:
获取数据拉取状态;
在所述数据拉取状态为拉取完毕时,断开所述数据分片与本节点上的所述第一内存缓冲区的映射。
7.如权利要求6所述的MapReduce的数据传输方法,其特征在于,所述在所述数据拉取状态为拉取完毕时,断开所述数据分片与本节点上的所述第一内存缓冲区的映射的步骤之后,还包括:
获取本节点的本地RDMA通信内存资源的使用情况;
在所述使用情况达到预设值时,清除本节点的所述第一内存缓冲区的数据分片,释放本节点的所述第一内存缓冲区内存。
8.一种面向MapReduce的数据传输装置,其特征在于,所述数据传输装置包括:
请求接收模块,用于接收Reduce节点上的Reduce进程发送的拉取数据请求,获取所述拉取数据请求中的第一元信息;
数据查询模块,用于根据所述第一元信息,在本节点上预设的RDMA通信内存中分配的第一内存缓冲区中查找所述Reduce进程需要拉取的数据分片,获取所述数据分片在所述第一内存缓冲区的存储位置;
信息生成模块,用于在所述数据分片存在所述第一内存缓冲区时,获取所述数据分片在所述第一内存缓冲区的存储位置,根据所述数据分片和所述存储位置生成第二元信息。
信息发送模块,用于将所述第二元信息发送给所述Reduce进程,以使所述Reduce进程根据所述第二元信息在Reduce节点上的预设的RDMA通信内存中分配第二内存缓冲区,并根据所述第二元信息将所述数据分片从所述第一内存缓冲区中拉取到所述第二内存缓冲区中。
9.一种面向MapReduce的数据传输设备,其特征在于,所述面向MapReduce的数据传输设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的面向MapReduce的数据传输程序,所述面向MapReduce的数据传输程序配置为实现如权利要求1至7中任一项所述的面向MapReduce的数据传输方法。
10.一种存储介质,其特征在于,所述存储介质上存储有面向MapReduce的数据传输程序,所述面向MapReduce的数据传输程序被处理器执行时实现如权利要求1至7任一项所述的面向MapReduce的数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110872377.6A CN113590323A (zh) | 2021-07-30 | 2021-07-30 | 面向MapReduce的数据传输方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110872377.6A CN113590323A (zh) | 2021-07-30 | 2021-07-30 | 面向MapReduce的数据传输方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113590323A true CN113590323A (zh) | 2021-11-02 |
Family
ID=78252717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110872377.6A Withdrawn CN113590323A (zh) | 2021-07-30 | 2021-07-30 | 面向MapReduce的数据传输方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590323A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114401262A (zh) * | 2022-01-17 | 2022-04-26 | 东云睿连(武汉)计算技术有限公司 | 基于rdma的大数据传输系统、方法、装置、设备及存储介质 |
CN115396422A (zh) * | 2022-07-26 | 2022-11-25 | 阿里巴巴(中国)有限公司 | 数据传输方法及装置 |
-
2021
- 2021-07-30 CN CN202110872377.6A patent/CN113590323A/zh not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114401262A (zh) * | 2022-01-17 | 2022-04-26 | 东云睿连(武汉)计算技术有限公司 | 基于rdma的大数据传输系统、方法、装置、设备及存储介质 |
CN115396422A (zh) * | 2022-07-26 | 2022-11-25 | 阿里巴巴(中国)有限公司 | 数据传输方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11243953B2 (en) | Mapreduce implementation in an on-demand network code execution system and stream data processing system | |
US10831562B2 (en) | Method and system for operating a data center by reducing an amount of data to be processed | |
US20200104198A1 (en) | Efficient state maintenance for execution environments in an on-demand code execution system | |
US11637889B2 (en) | Configuration recommendation for a microservice architecture | |
TWI430102B (zh) | 網路卡資源配置方法、儲存媒體、及電腦 | |
EP1330907B1 (en) | Method and apparatus for real-time parallel delivery of segments of a large payload file | |
US11394794B2 (en) | Fast ingestion of records in a database using data locality and queuing | |
US8078574B1 (en) | Network acceleration device cache supporting multiple historical versions of content | |
CN105765578B (zh) | 分布式文件系统中的数据的并行访问 | |
Atchley et al. | The common communication interface (CCI) | |
CN114401262A (zh) | 基于rdma的大数据传输系统、方法、装置、设备及存储介质 | |
CN107135268B (zh) | 基于信息中心网络的分布式任务计算方法 | |
CN113590323A (zh) | 面向MapReduce的数据传输方法、装置、设备及存储介质 | |
CN104754008B (zh) | 网络存储节点、网络存储系统以及用于网络存储节点的装置和方法 | |
CN110601994B (zh) | 云环境下微服务链感知的负载均衡方法 | |
US20050021511A1 (en) | System and method for load balancing in database queries | |
CN110297862A (zh) | 数据库访问方法及数据库访问中间件 | |
WO2019153880A1 (zh) | 集群中镜像文件下载的方法、节点、查询服务器 | |
US8566833B1 (en) | Combined network and application processing in a multiprocessing environment | |
CN112804289A (zh) | 一种资源同步方法、装置、设备及存储介质 | |
CN108139927A (zh) | 联机事务处理系统中事务的基于动作的路由 | |
CN117642724A (zh) | 使用无服务器计算系统的流式分析 | |
US20050188070A1 (en) | Vertical perimeter framework for providing application services | |
US11474846B2 (en) | Controller for bridging database architectures | |
KR101578246B1 (ko) | 고속 서열 분석을 위한 병렬 Intra-Query 라우팅 알고리즘 |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20211102 |