一种基于Hadoop集群的网络预测与调度方法

文档序号:9670706阅读:542来源:国知局
一种基于Hadoop集群的网络预测与调度方法
【技术领域】
[0001]本发明属于计算机应用技术领域,涉及一种基于Hadoop集群的网络预测与调度方法。
【背景技术】
[0002]随着信息和数据爆炸式增长,海量数据处理平台日益重要。Hadoop是一个能够进行分布式处理的存储计算平台,具有优异的可靠性和可扩展性,它凭借着高容量和低成本的双重优势,展现了对于海量数据良好的处理能力。
[0003]Hadoop依据MapReduce编程模型,将一个任务分为map任务与reduce任务,在这之间存在shuffle阶段用来将map的结果传输到reduce所在的节点。由于网络传输速度远远小于计算机内部数据传输速度,所以在shuffle阶段,网络传输已经成为限制作业完成时间的一个“瓶颈”。如何提高shuffle阶段网络传输速度已经成为越来越多学者研究的课题。目前,对于网络预测最常见的方法就是在网络层通过对交换机的分析得出网络流量,根据网络情况将各个流分配到合适的路径上。这种方法存在问题:在预测方面,由于采用TCP网络传输协议的拥塞控制会导致在传输中监测的结果没有真实反映出对网络的真实需求,而且这种方法是被动的;在大数据多作业的情况下,网络流之间有相互依赖的关系,仅仅考虑流的调度可能会造成作业的滞后。

【发明内容】

[0004]为了解决现有问题,本发明提供了一种基于Hadoop集群的网络预测与调度方法,该方法从应用层来分析网络流量并且考虑网络流之间的依赖关系。
[0005]为了达到上述目的,本发明采用的技术方案是:
[0006]本发明详细分析Hadoop运行过程,中间结果组织方式,提取相关信息;采用实时监控的方法分析Hadoop中间结果,提取出每个作业(Hadoop程序)的map与reduce之间所需传递的数据量;将采集到的信息传递到中央控制器中为网络调度提供依据。
[0007]一种基于Hadoop集群的网络预测与调度方法,通过分析Hadoop运行所产生的中间临时文件,从应用层角度预测网络流量;根据预测的网络流量信息,考虑Hadoop运行时网络流之间的相互依赖关系,以网络流所属Hadoop的作业(Hadoop程序)为单位,按照优先级的高低对网络流进行调度,具体包括以下步骤:
[0008]第一步,预测:整体Hadoop集群的预测采用C/S模式,在集群的每个节点运行监控程序;
[0009]1) Hadoop米用Map Reduce编程模型,一个Hadoop作业分为map任务和reduce任务,Hadoop作业在map任务的执行结果并没有存储到其自身提供的HDFS文件系统中,而是暂时储存在相应节点的本地磁盘上;利用Linux本身的inotify机制,从Hadoop运行时产生的中间数据中提取出Hadoop应用对网络的需求;所述的中间数据的组织形式分为工作目录和日志目录,工作目录和日志目录随着Hadoop任务的运行临时创建和删除;
[0010]2)由于inotify只支持监测存在的文件,设计动态监测系统对工作目录和日志目录进行实时监测,首先在工作目录和日志目录分别监测各自子目录创建事件,然后在子目录创建其子目录的创建事件,以此类推,直到监测到“attempt_xxxx_xxx”目录和“container_xxxx_xxx,,目录。
[0011]对于工作目录,监测attempt_xxxx_xxx目录下file.0ut.1ndex的创建事件,按照file.0ut.1ndex的存储格式解析出该map向每个reduce传输的数据量;
[0012]对于日志目录,提取出container_xxxx_xxx目录下的作业ID ;监测container_xxxx_xxx目录下syslog的修改事件,Hadoop具有“先写日志后操作”的特点,Hadoop中每个reduce最多向5个map请求抓取数据,从syslog的修改事件中提取关于该map与reduce的发送日志信息,解析出网络数据流的目的地址,将提取的时间作为各对map/reduce网络传输的网络时间预测,判断每一对map/reduce何时开始进行传输,由于在map节点进行预测,所以网络数据流的源地址就是本机的IP地址。
[0013]3)将“源地址,数据量,目的地址,作业ID,时间”的五元组信息发送给中央控制器,中央控制器以作业ID为单位存储预测信息,按照先来先服务的原则,将最先监测到的网络流所属的作业设置为最高优先级,下一个监测到的网络流所属的作业设置为次高优先级,依次类推将监测到的作业设置相应优先级。
[0014]第二步,调度:根据网络数据流之间的相互关系进行调度
[0015]根据MapReduce编程模型的特点,即在一个reduce获得所有map的输出结果之后才能执行reduce操作,所有reduce执行完毕后,该任务得到最终结果。采用先来先服务的原则,将同属一个作业(Hadoop程序)的网络数据流当做一个整体,以作业为单位对网络数据流进行调度;
[0016]将交换机的每个端口的缓冲队列虚拟成多个队列。当交换机接收数据包时,根据数据包所属的作业的优先级(或者id)存入相应缓冲队列,每个优先级的数据包进入到相应的虚拟缓冲队列中;当相应的虚拟缓冲队列所属的端口发送数据包时,按照优先级的顺序在有缓存的最高优先级的队列中,选择该队列的队头数据包转发出去,从而达到按照作业的优先级来转发数据包的目的。
[0017]本方法由于采用实时监控中间文件分析提取关键信息的方法,并不需要对Hadoop架构和相关作业的编码进行改动,对于Hadoop和作业编码人员展示了很好的透明性;而且,由于从Hadoop本身应用层提取到的信息能真实反映该作业对网络的需要,保证了预测的主动性和准确性;采用linux系统提供的实时监测机制,能够快速反映相关文件的变化,在第一时间获取有用信息,体现了快速、提前性的特点。
[0018]本方明采用以作业为单位的网络调度方法,在调度方面考虑每个单独网络流的调度的同时,考虑网络流之间的相关关系等因素。根据MapReduce编程模型的特点,只有当一个reduce收集到所有map的结果后才能执行reduce的操作,而且一个作业的所有reduce都完成,作业才能得到最终的结果。
【附图说明】
[0019]图1是预测方法的系统结构图。
[0020]图2是Hadoop运行时工作目录的组织形式。[0021 ] 图3是Hadoop运行时日志目录的组织形式。
[0022]图4是中间数据的索引文件file.0ut.1ndex存储格式。
【具体实施方式】
[0023]下面结合附图和【具体实施方式】对本发明做进一步说明。
[0024]预测:
[0025]预测分为在各个节点的监测程序和中心收集程序。采用C/S模式,在集群的每个节点运行监控程序,在Hadoop应用运行时提取网络需求信息并发送给中央控制器,中央控制器采用以
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1