应用于分布式文件系统的任务调度方法和设备的制造方法_3

文档序号:9810536阅读:来源:国知局
将该数据块写入该数据节点的固态硬盘。
[0059]本实施例中,数据节点采用SSD和HDD混合存储方法,SSD的读取速率比HDD的速率快的多,因此,将SSD作为缓存,元数据节点会预先将要处理的数据块从HDD中读取到SDD中。具体地,元数据节点在获取待处理的任务对应的数据块的待读取副本的存储信息后,根据该待读取副本的存储信息,向该待读取副本所在的数据节点发送预取指令,该预取指令用于指示该待读取副本所在的数据节点从自己的硬盘驱动器中读取该数据块,并将该数据块写入自己的固态硬盘。该预取指令中包括该数据块的标识,该待读取副本所在的数据节点在接收到该预取指令后,根据该预取指令中包括的该数据块的标识,将该数据块的标识对应的数据从HDD中读出并写入SSD中。
[0060]该待读取副本所在的数据节点在将该数据块从HDD预取到SSD之后,若SSD的存储空间已满,该待读取副本所在的数据节点可以采用现有的任意一种页面替换策略淘汰掉一个数据块。常用的页面替换算法有最近最少使用页面置换算法(Least Recently Used,简称LRU)和最近最不常用页面置换算法(Least Frequently Used,简称LFU), LRU优先淘汰最长时间未被使用的页面,LFU优先淘汰一定时期内被访问次数最少的页面。在某个数据节点淘汰掉一个数据块之后,元数据节点会将该数据节点的预取数据块个数减I。
[0061]步骤103、元数据节点将该数据块的元数据添加到预取数据成功表,该预取数据成功表中的任务优先被元数据节点调度,在元数据节点调度该待处理的任务时,元数据节点根据该预取数据成功表中保存的该数据块的元数据从该数据节点的固态硬盘中读取该数据块。
[0062]在该待读取副本所在的数据节点成功将该数据块从HDD中读出并写入SSD后,该待读取副本所在的数据节点会向元数据节点上报数据预取成功消息,元数据节点在接收到该数据预取成功消息后,将该数据块的元数据信息添加到预取数据成功表中,同时元数据节点会将该待读取副本所在的数据节点的预取数据块个数加I。预取数据成功表中保存有所有预取成功的数据块的标识和元数据,元数据节点在后续调度任务时,优先调度预取数据成功的任务,以保证在读取数据块时,尽量从SSD中读取,由于从SSD中读取数据的速率比从HDD中读取快的多,从而提到了数据块的读取速率,提高任务的处理效率,从而能够提高整个分布式文件系统的性能。
[0063]后续在元数据节点调度该待处理的任务时,元数据节点根据该预取数据成功表中保存的该数据块的元数据从该数据节点的SSD中读取该数据块。该数据块的元信息中记录有该数据块的存储位置,具体为该数据块的待读取副本所在的数据节点,预取数据成功表中的数据块默认都存储在数据块所在数据节点的SSD中,因此,元数据节点根据该数据块的待读取副本所在的数据节点的地址,从该数据块的待读取副本所在的数据节点的SSD中读取该数据块。
[0064]本实施例,元数据节点通过获取待处理的任务对应的数据块的标识,并根据该数据块的标识获取该数据块的待读取副本的存储信息,然后,元数据节点根据该待读取副本的存储信息,向待读取副本所在的数据节点发送预取指令,以将该数据块从该数据节点的HDD中预取到SSD中,在预取成功后,元数据节点将所该数据块的元数据添加到预取数据成功表,后续在调度该待处理的任务时,元数据节点根据该数据块的元数据直接从该数据节点的SSD中读取该数据块。由于从SSD中读取数据的速率比从HDD中读取快的多,从而提到了数据块的读取速率,提高任务的处理效率,从而能够提高整个分布式文件系统的性能。现有技术中,在预取数据时是基于对过去的访问情况估计将来,有一定的粗略性,而本实施例中,由于Map Reduce中元数据节点预先知道有哪些待处理的任务,以及这些任务对应的数据块的标识,因此,元数据节点能够准确的将将要处理的数据块预先从HDD中读取到SSD中,提高了缓存的命中率。
[0065]在上述实施例一的基础上,可选地,元数据节点根据该数据块的标识获取该数据块的待读取副本之前,所述方法还包括:元数据节点判断预取数据成功表中是否包含该数据块的元数据,若不包含,则元数据节点根据该数据块的标识获取数据块的待读取副本,进一步执行上述实施例一的方法,将该数据块从HDD中预取到SSD中。若包含,说明该数据块已经预取成功,元数据节点不需要执行实施例一的方法。
[0066]图3为本发明实施例二提供的元数据节点的结构示意图,如图3所示,本实施例的元数据节点可以包括:获取模块21、发送模块22和处理模块23。
[0067]其中,获取模块21,用于获取待处理的任务对应的数据块的标识,并根据所述数据块的标识获取所述数据块的待读取副本的存储信息;
[0068]发送模块22,用于根据所述待读取副本的存储信息,向所述待读取副本所在的数据节点发送预取指令,所述预取指令用于指示所述数据节点从所述数据节点的硬盘驱动器中读取所述数据块,并将所述数据块写入所述数据节点的固态硬盘;
[0069]处理模块23,用于将所述数据块的元数据添加到预取数据成功表,所述预取数据成功表中的任务优先被所述元数据节点调度,在所述元数据节点调度所述待处理的任务时,所述处理模块23还用于根据所述预取数据成功表中保存的所述数据块的元数据从所述数据节点的固态硬盘中读取所述数据块。
[0070]所述获取模块21具体用于:根据所述任务对应的数据块的标识,获取所述数据块的副本信息。然后,根据所述数据块的副本信息,获取所述数据块的各个副本所在的数据节点的资源使用率,确定资源使用率最低的数据节点。若所述资源使用率最低的数据节点只有一个,则将所述资源使用率最低的数据节点上的副本作为所述数据块的待读取副本,并获取所述待读取副本的存储信息;若所述资源使用率最低的数据节点为多个,则获取所述各资源使用率最低的数据节点的预取数据块个数,从所述各资源使用率最低的数据节点中选取预取数据块个数最少的数据节点上的副本作为所述数据块的待读取副本,并获取所述待读取副本的存储信息。
[0071]可选地,所述处理模块23还用于:在将所述数据块的元数据添加到预取数据成功表之后,将所述数据节点的预取计数值加I。
[0072]进一步地,所述获取模块21还用于:在获取待处理的任务对应的数据块的标识之前,接收客户端提交的Map Reduce作业,将所述Map Reduce作业划分为多个待处理的任务。
[0073]可选地,所述获取模块21还用于:在根据所述数据块的标识获取所述数据块的待读取副本之前,判断所述预取数据成功表中是否包含所述数据块的元数据;若不包含,则根据所述数据块的标识获取所述数据块的待读取副本。
[0074]本实施例的装置,可以用于执行实施例一提供的技术方案,其实现原理类似,此处不再赘述。
[0075]图4为本发明实施例三提供的元数据节点的结构示意图,如图4所示,本实施例的元数据就节点300包括:处理器31、存储器32、通信接口 33和系统总线34,所述存储器32和所述通信接口 33通过所述系统总线34与所述处理器31连接并完成相互间的通信;所述通信接口 33用于与其他设备进行通信,所述存储器32,用于存储计算机执行指令321 ;所述处理器31,用于运行所述计算机执行指令321执行如下所述的方法:
[0076]获取待处理的任务对应的数据块的标识,并根据所述数据块的标识获取所述数据块的待读取副本的存储信息;
[0077]根据所述待读取副本的存储信息,向所述待读取副本所在的数据节点发送预取指令,所述预取指令用于指示所述数据节点从所述数据节点的硬盘驱动器中读取所述数据块,并将所述数据块写入所述数据节点的固态硬盘;
[0078]将所述数据块的元数据添加到预取数据成功表,所述预取数据成功表中的任务优先被所述元数据节点调度,在所述元数据节点调度所述待处理的任务时,根据所述预取数据成功表中保存的所述数据块的元数据从所述数据节点的固态硬盘中读取所述数据块
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1