主权项 |
一种Hadoop大数据平台中基于网络I/O代价评估的ReduceTask数据本地性调度方法,其特征在于:包括以下步骤:步骤一:为JobTracker初始化的每个用户作业(Job)维护一张映射表,它是关于JobTracker分配给某个Host节点的MapTask与这个Host的映射表,即<HostId,MapTaskId>,每当JobTracker分配一个新的该作业的MapTask,便将新的映射条目更新到这张表;步骤二:为每个JobTracker初始化的用户作业(Job)维护一张映射表,即<网络I/O代价,HostId>,是集群中分配了该作业的MapTask的物理节点与其网络I/O代价的映射,这一部分的Host与步骤一中的Host一样,但是去除了重复的Host节点;除此之外还包含另一些Host节点,它们是与上一部分Host节点同子区域(即有相同的拓扑路径长度)的一个代表节点(储备节点)与其网络I/O代价的映射;步骤三:由步骤一中的映射表<HostId,MapTaskId>,将相同HostId上分配过该项作业的MapTask数合并,得出每个Host对应的MapTask数;由Hadoop集群的网络拓扑树分别得出各记录节点与所要计算的作为ReduceTask执行节点的拓扑距离;由以上数据根据网络I/O代价计算模型计算出以步骤二中的任意一个物理节点为ReduceTask执行节点的网络I/O代价,并将结果更新到步骤二中的映射表中;步骤四:当MapTask完成数达到配置文件mapred‑default.xml中由参数mapred.reduce.slowstart.completed.maps设定的门限值,JobTracker便可以开始分配ReduceTask,分配ReduceTask的策略就是按照步骤三中的当前Hadoop集群中<网络I/O代价,HostId>映射表,节点的网络I/O代价越小则优先级越高的原则为节点分配ReduceTask。 |