一种基于映射-归约计算模型的洗牌数据缓存方法技术

技术编号:14525158 阅读:58 留言:0更新日期:2017-02-02 03:42
本发明专利技术公开了一种基于映射‑归约计算模型的洗牌数据缓存方法,包括映射‑归约计算框架将一个映射‑归约工作按任务为单位的划分通过接口发送到洗牌缓存主机,洗牌缓存主机接收到任务划分数据后,加上时间戳保存在本地内存中;洗牌缓存主机对任务划分数据采用随机算法将其中的归约任务与集群的各个节点做一个一对三的映射,并以哈希表的形式保存在洗牌缓存主机的内存中等步骤。本发明专利技术能够提升基于映射‑归约模型的分布式计算框架的计算性能,避免低效的用户手动设置检查点,提升分布式计算框架的鲁棒性。

【技术实现步骤摘要】

本专利技术涉及计算机分布式系统以及分布式计算框架领域。具体来讲,主要是为基于映射(Map)-归约(Reduce)计算模型提供基于内存的分布式洗牌(shuffle)数据缓存,从而提升该计算框架的性能和鲁棒性。
技术介绍
映射-归约计算模型以及基于该模型设计的分布式计算系统是目前主流的大数据分布式系统,比如Spark,Hadoop。基于该模型的计算在映射和归约阶段之间存在着一个洗牌(Shuffle),将映射和归约进行了隔离。目前的所有设计都是采用将洗牌数据写入磁盘做持久化处理,然后再进行传输。而磁盘的性能远不如内存,因此给计算系统带来了此较大的性能开销。于此同时,该类型的计算框架主要通过磁盘来保证计算的容错性(Hadoop),或者需要用户手动地增加检查点(Spark)。这些容错机制由于和计算逻辑相互重叠,不但没有充分利用现有的硬件特性,而且穿插在计算过程中大大影响了计算本身的性能。目前虽然有一些基于内存的分布式文件系统,但是他们主要的是针对数据块本身,而数据块本身的体积往往远大于洗牌数据,因此需要大量的内存作为支撑。基于以上的背景,本专利技术提供了一种基于内存的分布式洗牌数据缓存方法来消除洗牌传输和基于磁盘的容错性机制带来的性能开销,提升计算框架的性能和鲁棒性。
技术实现思路
本专利技术针对基于映射-归约模型的分布式计算系统,通过将洗牌传输数据缓存在分布式系统的内存中来消除洗牌传输和基于磁盘的容错性机制带来的性能开销。本专利技术的技术解决方案如下:一种映射-规约计算模型的洗牌数据缓存方法,包括如下步骤:步骤1:映射-归约计算框架将一个映射-归约工作按任务为单位的划分通过接口发送到洗牌缓存主机。这里的任务包含了洗牌传输依赖的ID,映射任务总数与归约任务总数,主机接收后,加上时间戳保存在本地内存中。步骤2:洗牌缓存主机收到工作划分数据之后,采用随机算法将其中的归约任务与集群的各个节点做一个一对三的映射。及一个归约任务对应随机三个节点,其中一个为主要节点,剩下两个为备份节点。归约任务与节点的映射以哈希表的形式保存在主机的内存中。步骤3:计算框架调度其中一个节点执行一个映射任务。该节点执行完映射任务的计算过程之后,通过调用缓存系统的接口将该映射任务的洗牌数据发送至本地洗牌缓存执行器进程的内存空间。同时立即返回,表示任务执行完成。步骤4:当一个节点上的缓存系统的执行器进程收到映射任务的洗牌数据时,会按照洗牌数据默认的划分方式(由计算框架指定),将数据按照归约任务划分成多个洗牌归约数据块,保存在内存中。通常一个映射任务会产生与归约任务个数相同或者小于归约任务个数的数据块。步骤5:执行器向洗牌缓存主机请求归约任务与节点的映射表,该步骤在整个映射-归约工作中只会执行一次)。映射表保证了所有执行器的分发规则是一致。执行器根据主机的归约任务与节点的映射表,将步骤4中划分完毕的洗牌归约数据块分发到与之对应的三个归约任务远程节点。执行器发送洗牌归约数据块时,会按照步骤2中主从节点的设置分别给数据块加上主从备份的标签。步骤6:远程节点收到洗牌归约数据块时读取该数据块的标签。如果该标签显示为主备份则将其保存在内存中,如果实从备份则将其写入硬盘。步骤7:重复步骤3到步骤6的过程,直到该工作的所有映射任务执行完毕,进入步骤10。步骤8:计算框架在调度前通过洗牌缓存系统的接口查询所有归约任务的分布情况。步骤9:计算框架根据归约任务的分布情况调度归约任务。计算框架首先选取其中的主备份节点,将一个归约任务分发到该节点上。如果主备份节点失效,进入步骤10,否则进入步骤11。步骤10:计算框架选择从备份节点,将归约任务发送到该节点上。如果两个从备份节点同时失效,则该任务失败,抛出错误。终止所有步骤。步骤11:归约任务在节点上执行时,通过接口向本地的洗牌缓存执行器获取数据。步骤12:本地洗牌缓存执行器接受到请求后,首先检查数据是否在内存中,如在内存中则直接返回对应数据,否则去磁盘获取对应的数据并返回。步骤13:归约任务收到数据后开始计算。步骤14:重复步骤9至步骤13直到所有归约任务执行完毕,映射-归约工作结束。洗牌缓存系统的缓存数据替换策略:由于每个节点的内存资源有限,为了不影响任务执行时的性能,洗牌缓存系统只会占用固定的内存空间(可以通过配置文件设置)。然而随着任务的不断执行,就会在主备份节点的内存缓存大量的洗牌归约数据。为了节约内存资源,洗牌缓存系统提供了最早缓存任务最先被剔除的策略。该策略遵循以下步骤。步骤1:洗牌缓存系统执行节点检测到内存余量不足。步骤2:该备份节点向洗牌缓存系统主机发送剔除请求。步骤3:洗牌缓存系统主机收到剔除请求后,根据本地内存记录,找到最早被缓存的映射-洗牌工作对应的洗牌传输依赖ID,以及该工作所有归约任务的主备份节点。步骤4:洗牌缓存系统将该洗牌传输依赖ID广播给集群中所有洗牌缓存系统的主备份节点。步骤5:执行节点收到洗牌传输依赖ID之后从自己的内存中将对应的数据块从内存中删除。洗牌缓存体统为计算框架提供的鲁棒性支持的恢复策略。由于映射-归约计算框架在执行整个工作流程的时候包含了大量的映射-归约过程。如果配合了洗牌缓存系统,计算框架将不需要对计算数据进行手动的检查点设置。在任务执行过程中发生失败,则可以直接从最近的一次映射-归约的数据中直接恢复,大大减少了恢复时间,提升了计算性能。该策略遵循以下步骤。步骤1:计算框架出现运行错误。步骤2:计算框架根据用户执行逻辑开始从后向前寻找最近被持久化的数据。步骤3:计算框架搜寻时通过接口向洗牌缓存系统查询是否有相应的洗牌数据备份。步骤4:如果查到有备份则直接从该步骤开始恢复。步骤5:如果没有查到备份,则继续向前寻找,如果都没有备份,则按照计算框架的容错机制开始恢复。与现有技术相比,本专利技术的有益效果是:能够提升基于映射-归约模型的分布式计算框架(如Spark,Hadoop)的计算性能,避免低效的用户手动设置检查点,提升分布式计算框架的鲁棒性。附图说明图1.架构示意图图2.映射任务工作示意图图3.主节点归约任务执行示意图图4.从节点归约任务执行示意图图5.任务划分信息图6.洗牌缓存主机追踪信息具体实施方法以下将结合附图对本专利技术的实施例做详细说明。本实施例在本专利技术技术方案和算法的前提下进行实施,并给出详细实施方式和具体操作过程,但是适用平台不限于下述实施例。本实例的具体操作平台是由两台普通服务器组成的小型集群,每个服务器上装有UbuntuServer14.04.1LTS64bit,并且配备8GB内存。本专利技术的具体开发是基于ApacheSpark1.6的源码版本作为说明,Hadoop等其他映射-归约分布式计算框架也同样适用。首先需要通过修改Spark的源代码使其通过本方法的接口来传输洗牌数据。本专利技术通过在分布式计算集群中部署缓存系统,同时修改分布式计算框架的少部分代码,实现对本方法的接口调用,来实现对于映射-规约计算中洗牌数据的分布式多备份内存/磁盘缓存。在本方法的支持下,能提升现有的基于映射-归约模型的分布式计算框架的性能和鲁棒性。基于图1中的架构来设计,在洗牌缓存系统的主机采用了Paxos协议来维护系统本身状态的一致性和鲁棒性。同时,在分布式计算集群的各个节点上部署了洗牌执行器,来本文档来自技高网...

【技术保护点】
一种基于映射‑归约计算模型的洗牌数据缓存方法,其特征在于,该方法包括如下步骤:步骤1:映射‑归约计算框架将一个映射‑归约工作按任务为单位的划分通过接口发送到洗牌缓存主机,洗牌缓存主机接收到任务划分数据后,加上时间戳保存在本地内存中;步骤2:洗牌缓存主机对任务划分数据采用随机算法将其中的归约任务与集群的各个节点做一个一对三的映射,并以哈希表的形式保存在洗牌缓存主机的内存中步骤3:计算框架调度其中一个节点执行一个映射任务,该节点执行完映射任务后,通过调用缓存系统的接口将该映射任务的洗牌数据发送至本地洗牌缓存执行器进程的内存空间,同时返回,表示任务执行完成;步骤4:当一个节点上的缓存系统的执行器进程收到映射任务的洗牌数据时,按照洗牌数据默认的划分方式,将数据按照归约任务划分成多个洗牌归约数据块,保存在内存中;步骤5:本地洗牌缓存执行器向洗牌缓存主机请求归约任务与节点的映射表,并根据洗牌缓存主机的归约任务与节点的映射表,将步骤4中划分完毕的洗牌归约数据块分发到与之对应的三个归约任务远程节点,并按照步骤2中主从节点的设置分别给数据块加上主备份和从备份的标签;步骤6:远程节点收到洗牌归约数据块时读取该数据块的标签,如果该标签显示为主备份则将其保存在内存中,如果该标签显示为从备份则将其写入硬盘;如果此时主备份节点的内存空间不足,则会触发洗牌缓存体统的洗牌数据剔除步骤;,同时进入步骤7。步骤7:重复步骤3到步骤6的过程,直到该工作的所有映射任务执行完毕,进入步骤8;步骤8:计算框架在调度前通过洗牌缓存系统的接口查询所有归约任务的分布情况;步骤9:计算框架根据归约任务的分布情况调度归约任务:首先选取其中的主备份节点,将一个归约任务分发到该节点上,如果主备份节点失效,进入步骤10,否则进入步骤11;步骤10:计算框架选择从备份节点,将归约任务发送到该节点上,如果两个从备份节点同时失效,则该任务失败,抛出错误,终止所有步骤。步骤11:归约任务在节点上执行时,通过接口向本地洗牌缓存执行器获取数据;步骤12:本地洗牌缓存执行器接收到请求后,首先检查数据是否在内存中,如在内存中则直接向该任务返回对应数据,否则去磁盘获取对应的数据并返回;步骤13:归约任务收到数据后开始计算;步骤14:重复步骤9至步骤13直到所有归约任务执行完毕,映射‑归约工作结束。...

【技术特征摘要】
1.一种基于映射-归约计算模型的洗牌数据缓存方法,其特征在于,该方法包括如下步骤:步骤1:映射-归约计算框架将一个映射-归约工作按任务为单位的划分通过接口发送到洗牌缓存主机,洗牌缓存主机接收到任务划分数据后,加上时间戳保存在本地内存中;步骤2:洗牌缓存主机对任务划分数据采用随机算法将其中的归约任务与集群的各个节点做一个一对三的映射,并以哈希表的形式保存在洗牌缓存主机的内存中步骤3:计算框架调度其中一个节点执行一个映射任务,该节点执行完映射任务后,通过调用缓存系统的接口将该映射任务的洗牌数据发送至本地洗牌缓存执行器进程的内存空间,同时返回,表示任务执行完成;步骤4:当一个节点上的缓存系统的执行器进程收到映射任务的洗牌数据时,按照洗牌数据默认的划分方式,将数据按照归约任务划分成多个洗牌归约数据块,保存在内存中;步骤5:本地洗牌缓存执行器向洗牌缓存主机请求归约任务与节点的映射表,并根据洗牌缓存主机的归约任务与节点的映射表,将步骤4中划分完毕的洗牌归约数据块分发到与之对应的三个归约任务远程节点,并按照步骤2中主从节点的设置分别给数据块加上主备份和从备份的标签;步骤6:远程节点收到洗牌归约数据块时读取该数据块的标签,如果该标签显示为主备份则将其保存在内存中,如果该标签显示为从备份则将其写入硬盘;如果此时主备份节点的内存空间不足,则会触发洗牌缓存体统的洗牌数据剔除步骤;,同时进入步骤7。步骤7:重复步骤3到步骤6的过程,直到该工作的所有映射任务执行完毕,进入步骤8;步骤8:计算框架在调度前通过洗牌缓存系统的接口查询所有归约任务的分布情况;步骤9:计算框架根据归约任务的分布情况调度归约任务:首先选取其中的主备份节点,将一个归约任务分发到该节点...

【专利技术属性】
技术研发人员:付周望王一丁戚正伟管海兵
申请(专利权)人:上海交通大学
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1