发明名称 一种基于Hadoop架构的移动终端云资源调度方法
摘要 一种基于Hadoop架构的移动终端云资源调度方法,属于云计算平台数据资源访问领域,其特征在于,对基于Hadoop架构的云计算平台中的节点定义一个任务队列,将任务分配到数据副本所在的工作节点的任务队列中,当副本所在节点的任务队列长度大于等待长度阈值时,将任务从副本的任务队列中移除,并加入到副本所在机架内任务队列最短的节点的任务队列中等待调度。该方法结合移动终端请求计算量小、并发性高、用户实时性要求高的特点,大大提高了作业的本地化执行概率,在大量并发请求和发生热点数据的情况下,能够保持集群中各节点的负载均衡。
申请公布号 CN103414761B 申请公布日期 2017.02.08
申请号 CN201310311175.X 申请日期 2013.07.23
申请人 北京工业大学 发明人 沈琦;汤艳;张猛;宋清明
分类号 H04L29/08(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 魏聿珠
主权项 一种基于Hadoop架构的移动终端云资源调度方法,其特征在于,包括以下步骤:步骤(1):Hadoop集群的搭建过程如下;步骤(1.1):选择多台计算机,每台计算机作为一个单独的节点,任意选择其中一台计算机作为管理节点,其他节点为工作节点;节点之间通过网络连接,互相可以ping通;步骤(1.2):在所有节点安装Linux系统,并根据安装过程中的提示给工作节点设置相同的的账号和密码;步骤(1.3):在所有节点安装Java开发包,并对环境变量进行配置;步骤(1.4):在所有节点安装SSH服务,通过在所有节点Linux系统中的终端窗口中输入ssh‑keygen命令,在管理节点上生成密钥对,将公钥复制到所有工作节点上,并追加到authorized_keys文件中;步骤(1.5):下载hadoop压缩包,将Hadoop解压到各节点用户账号的个人目录下;根据系统环境,在hadoop的conf目录中,对Hadoop的JAVA_HOME环境变量、HADOOP_HOME变量、管理节点IP地址、工作节点IP地址、HDFS和MapReduce的端口号以及HDFS文件系统目录进行配置;步骤(1.6):将配置好的Hadoop复制到各个节点上,在Linux系统中的终端窗口中输入hadoop namenode‑format命令,格式化HDFS集群中的NameNode;步骤(2):调度方法的实现过程如下;步骤(2.1):启动Hadoop集群;在管理节点的Linux系统中的终端窗口中输入start‑all.sh命令,Hadoop程序通过配置文件找到各工作节点ip地址,并启动可以连接到的工作节点,从而启动云平台;步骤(2.2):作业的提交;步骤(2.2.1):移动终端运行一个作业,向后台管理进程JobTracker申请一个新的作业ID;步骤(2.2.2):管理节点检查作业的输出说明,如果没有指定输出目录或输出目录已经存在,作业就不提交;根据输入路径和Hadoop配置文件中设置的HDFS块大小计算输入数据的分片;步骤(2.2.3):把运行作业所需的资源复制到JobTracker中的一个以作业ID命名的目录下;步骤(2.3):作业的初始化;步骤(2.3.1):JobTracker接收到作业后,将其放在一个作业队列里,等待作业调度器对其进行调度,JobTracker使用带有优先级的先进先出调度方法,按照作业的优先级顺序和提交时间顺序,选择优先级高且先提交的作业进行调度;步骤(2.3.2):当作业调度器根据自己的调度方法调度到该作业时,会根据输入分片信息,从JobTracker中获取数据,为每个分片创建一个map任务,创建reduce任务的数量由集群配置决定,并将map任务分配给TaskTracker执行;步骤(2.4):任务的分配;步骤(2.4.1):JobTracker根据任务所需数据副本的位置,将任务分配到数据副本所在的节点队列中;步骤(2.4.2):由于数据存在多个副本,这些数据副本在不同节点上,为了避免多个节点调度同一个任务,JobTracker为每个任务设置标志位,用于标识任务是否已被调度,并使用同步块的方法保证对标志位写操作的互斥性;步骤(2.4.3):JobTracker发现某一工作节点有空闲任务槽时,首先遍历该节点任务队列,找到第一个未被调度的任务,将该任务分配给该节点的空闲任务槽执行,同时将该任务所有任务副本的已调度标志位设置为已调度;步骤(2.5):任务的执行;步骤(2.5.1):处理分布式任务的节点进程TaskTracker接收到新的任务后,将任务在所有副本节点的任务队列中的位置与等待长度阈值做比较,如果任务在所有副本节点的任务队列中的位置均大于等待长度阈值,则认为产生了热点数据,对任务进行本机架内更换任务队列操作;步骤(2.5.2):步骤(2.5.1)中所述的热点数据问题的判断过程为:将子任务所需数据的所有副本所在工作节点队列存放在列表中后,遍历该列表,将该子任务加入到列表内的每一个工作节点队列中,并判断该任务副本在队列中的位置是否大于等待长度阈值,若大于则计数器加1,结束遍历后,判断计数器是否等于列表长度,若等于则说明该子任务所有任务副本在队列中的位置均大于等待长度阈值,即说明发现热点数据;步骤(2.5.3):步骤(2.5.1)中所述的本机架内更换任务队列操作的步骤如下描述,任务所需数据的副本存在多个,所有副本所在工作节点存放在一个列表中,首先遍历这个列表,对于每一个工作节点,找到其所在机架,在机架内按各工作节点的任务队列长度由小到大进行排序,然后选出任务队列长度最小的节点,并判断该队列的长度是否已超过等待长度阈值;若没有则将任务从副本节点任务队列中移出,加入该任务队列中,否则任务仍然在原副本节点任务队列中等待调度;步骤(2.5.4):步骤(2.5.1)中所述的等待长度阈值的计算公式如下:p*T=d/s;其中,等待长度阈值为T,平均每个任务执行的实际时间为p秒,系统数据块大小为d兆字节,网络传输速度为s兆字节/秒;步骤(2.5.5):TaskTracker接收到新的任务后,将应用程序所需要的全部文件从共享文件系统复制到本地磁盘新建的工作目录中;步骤(2.5.6):TaskTracker启动一个Java虚拟机执行任务,每隔几秒TaskTracker就会将任务的当前状态和执行进度报告给JobTracker,JobTracker将收到的信息合并起来,并向用户提供一个全局的作业及任务运行状态的视图;步骤(2.5.7):在步骤(2.5.6)中,若系统设定的时间间隔内,JobTracker没有收到TaskTracker的心跳信息,则认为该节点发生故障;步骤(2.5.8):当执行任务节点发生故障时,管理节点将该节点正在执行的任务标志位设置为未调度状态,所有任务的副本任务的调度标志位设置为未调度状态,以便该任务在下次工作节点有空闲任务槽时被调度;步骤(2.6):任务的完成;当JobTracker收到作业的所有任务成功完成的信息后,将执行结果返回给移动终端,并清空自身和TaskTracker上的作业工作状态。
地址 100124 北京市朝阳区平乐园100号