[发明专利]一种流水化数据洗牌传输的Spark任务调度与执行方法有效
申请号: | 201610029211.7 | 申请日: | 2016-01-18 |
公开(公告)号: | CN105718244B | 公开(公告)日: | 2018-01-12 |
发明(设计)人: | 付周望;张未雨;戚正伟;管海兵 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 上海恒慧知识产权代理事务所(特殊普通合伙)31317 | 代理人: | 张宁展 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种流水化数据洗牌传输的Spark任务调度与执行方法,从后向前提交并执行阶段和其中的任务,同时采用前驱任务发送执行结果到后继任务的内存,在不改变用户接口,不破坏阶段的完整性和容错性的同时,解决了原本Spark在不同阶段(Stage)中洗牌数据传输(Shuffle)的磁盘读写开销,从而降低了分布式计算程序在Spark上的运行时间。 | ||
搜索关键词: | 一种 流水 数据 洗牌 传输 spark 任务 调度 执行 方法 | ||
【主权项】:
一种流水化数据洗牌传输的Spark任务调度与执行方法,其特征在于,包括如下步骤:步骤1:当Spark提交一个任务且该任务被划分成多个阶段进行提交时,首先找到用户执行任务生成结果的最后一个阶段;步骤2:从最后一个阶段开始,判断该阶段是否包含未完成的前驱阶段:如果这个阶段的前驱阶段全部执行完成,则提交该阶段进行执行;如果有前驱阶段没有被执行,则将该阶段标记为等待,同时提交该阶段进行执行,并且递归提交该阶段的前驱阶段;步骤3:在提交一个阶段进行执行之后,调度器将该阶段拆分成多个任务,并判断该阶段:是否为等待阶段:如果该阶段被标记为等待,则调度器向资源管理器请求与任务个数相同的空闲执行节点,调度器获取相应执行任务的执行节点之后,根据该阶段包含的分布式回弹数据集的依赖关系递归向前寻找洗牌传输依赖,调度器每找到一个洗牌传输依赖就会向映射输出追踪表注册该次洗牌传输依赖信息,在注册完成之后,调度器还会通知每一个即将要运行这个任务的执行节点准备好相应的内存来缓存他们前驱任务发送的中间结果;每个执行节点收到调度器的注册信息之后,会在本地缓存中新建一个以洗牌传输依赖ID为索引,值为规约数据块总数的缓存数组的键值对,同时还会在本地新建一个以洗牌传输依赖ID为索引,值为规约数据块总数的信号量数据结构的键值对,其中每个信号量包含这次洗牌传输依赖的洗牌任务映射总数,;否则,直接进入下一步;步骤4:在调度器封装阶段的任务集合时,判断该阶段是否是一个洗牌映射阶段:如果该阶段是一个洗牌映射阶段,则对该阶段中的每个任务都设置对应的洗牌传输依赖ID;否则,直接进入下一步;步骤5:调度器将封装好的任务分发给各个执行节点;步骤6:当任务被分配到每个执行节点的执行器上进行执行时,执行器会判断这个任务是否为洗牌映射任务:如果是,则根据该任务包含的洗牌传输依赖ID,向映射输出追踪表请求该ID对应的规约任务的执行节点的集合信息,然后,设置洗牌映射任务的对应规约信息,将收到的集合信息中的规约数据块号和远程地址封装成一个哈希表传给该洗牌映射任务,并进入步骤7;如果执行器判断该任务为规约任务,调用该规约任务对应的函数进行计算,并进入步骤11;步骤7:当一个洗牌映射任务开始执行时,会检查是否需要流水化数据输出;如果需要,首先根据用户指定的分类器或者Spark默认的分类器将中间结果键值对按照键计算出他对应的规约数据块号,根据设置的数据块号和远程地址哈希表,将计算获得的数据结果发送给对应的负责后继规约任务的执行节点,发送的信息包括:洗牌传输依赖ID,规约数据块号,数据结果的键值对;在发送数据的同时,执行器向磁盘写入数据,并进入步骤8;同时,当负责规约任务的执行节点收到流水数据之后,会将洗牌传输依赖ID作为索引,保存在该洗牌传输依赖ID对应的缓存数组的第规约数据块号的缓存中,进入步骤8;如果不需要,则直接将执行结果写入磁盘,进入步骤8;步骤8:执行器完成洗牌映射任务;步骤9:当一个洗牌映射任务运行结束时,就会向所有的负责规约任务的执行节点发送流水结束信息,该信息包括:洗牌传输依赖ID,该任务负责的映射数据块号,和该条信息对应的执行节点负责的规约数据块号;步骤10:当负责规约任务的执行节点收到流水结束的信息后,会根据洗牌传输依赖ID作为索引,找到该洗牌传输依赖ID对应的信号量数组,将其中第规约数据块号计数器个数CountDownLatch减一,如果这个计数器个数被减到0,则表示该规约数据块依赖的数据映射全部传输结束;步骤11:当执行器执行规约任务的指定函数时,会调用相应的规约函数,该函数在执行任务读取数据时,会向执行节点请求一个读入数据的迭代器;步骤12:在生成迭代器的时候会向执行节点询问这次洗牌传输是否有本地缓存,即是否被流水化数据传输:如果是,则调用执行节点的获取缓存方法,根据规约任务的洗牌传输依赖ID和该任务负责的规约数据块号向执行节点请求缓存,并进入步骤13;否则,读取远程数据,进入步骤15;步骤13:执行节点收到获取缓存的调用后,就会以洗牌传输依赖ID为索引,找到缓存中对应的缓存数组,并且返回第规约数据块号个缓存的异步引用;步骤14:在迭代器收到缓存的异步引用时,开始等待,直到该任务所需的洗牌传输依赖的规约数据块号中的CountDownLatch信号量变为0,表示该规约数据块所依赖的映射数据块全部完成,进入步骤15;步骤15:执行器执行指定规约函数。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610029211.7/,转载请声明来源钻瓜专利网。
- 上一篇:矿井采掘吊挂皮带组合调偏装置
- 下一篇:刚性散体柔度可调抛光磨头
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置