论文部分内容阅读
摘要:在互联网技术和计算机技术快速发展的背景下,云计算在数据挖掘等海量数据处理中起着重要作用。Hadoop是一个开源云计算平台,其核心是作业调度算法,通过作业调度算法的研究,可以提升大规模数据的处理能力。文章阐述了Hadoop平台和其作业调度算法,然后进行实验环境搭建,进而对Hadoop平台下作业调度算法进行研究。
关键词:Hadoop;作业调度;集群
前言
随着互联网技术的迅猛发展,其面临的问题也日益突显,主要问题是用户的飞速增长,使得大规模数据处理成为难题。因此,需要借助Hadoop这个大数据处理工具。但是,在实际应用中,需要通过作业调度算法对Hadoop平台性能改进,减少资源的浪费,同时提升数据的处理能力。
一、Hadoop平台概述
云计算是由网格计算、分布式计算等发展而成的一种全新的商业计算模型。云计算技术由上至下可以划分为软件即服务、平台即服务、基础设施即服务三层[1]。而文章所研究的Hadoop属于平台即服务层,即云计算开源组织的分布式计算框架。Hadoop平台为应用程序提供了可靠的接口,节约了用户数据处理的成本,具有良好的可靠性、扩展性等优点。且在云环境下较为容易的搭建数据存储与数据分析平台,同时也助力了云环境数据处理技术的发展。
二、作业调度算法
作业调度目标是以满足用户作业需求为前提,提高系统的吞吐量,保障系统的负载均衡。目前,Hadoop平台主要的作业调度算法有FIFO调度算法、公平调度算法、计算能力调度算法三种,下面对这三种算法进行介绍。
(1)FIFO算法
FIFO(First In First Out,先进先出)调度算法是Hadoop平台中默认的算法[2]。FIFO调度算法在集群中,将接收到的用户作业提交到一个队列中,提交操作是按照作业优先级顺序或者是提交时间顺序进行。将数据初始化后,由TaskTracker为每一个节点进行任务的分配操作,分配的顺序一般是按照提交时间来进行的。节点任务在执行的过程中,任务是不能被剥夺的。FIFO算法的实现是JobQueueTask Scheduler,位于org.apache.mapred文件夹中。
该算法的主要优点是实现简单、运行稳定,因为该算法针对的是单用户、单类型的作业调度。而在调度处理多用户多类型过程中,出现性能不稳、队列尾端作业饿死、资源浪费等问题。
(2)公平调度算法
公平调度算法是针对多用户多类型的作业进行调度的算法。公平调度算法中,在作业优先级一致的条件下,几乎均匀的将资源分配给各个作业节点。如果集群中仅有一个作业运行的情况下,该作业独自享有这个集群。当新的作业进入时,需要按照作业的优先级进行集群分享。简而言之,作业权重相同,作业分配的集群资源是相同的。
该算法的主要优点是实现多用户的资源平均共享,提交时间较晚的作业不会饿死。但是该算法忽视了作业调度优先级问题。
(3)计算调度算法
计算调度算法功能与公平调度算法类似,但是在调度设计与实现中存在差异。该算法针对的是多用户作业队列,每个队列按照配置获取节点执行任务TaskTrack,然后按照配置的不同,對集群资源的百分比进行分配,这种算法能够对每个队列的资源予以限制。每个队列采用的是FIFO调度算法,队列内的调度是按照作业优先级进行的,而任务提交是系统随机进行分配的。
该算法的设计思想是能够合理的分配计算资源在用户之间、队列之间的比例。但是,该调度算法简爱那个数据处理放置到最后进行考虑,就导致了作业的执行效率降低。
三、实验及结果分析
文章通过实验平台的搭建,对上述三种调度算法在执行中的不同进行对比。针对多个测试队列、多类型作业在不同作业调度算法下的性能,得出实验数据。
1、实验环境搭建
Hadoop实验环境的搭建,采用的是三台普通的服务器进行测试,三台服务器的主机名分别为f1、f2、f3,其IP地址分别为178.178.1.31、178.178.1.32、178.178.1.33。
集群节点的硬件配置是,CPU 是4核,内存4GB,硬盘是320GB,;软件环境是Ubuntu-desktop操作系统,安装javajdkl和Hadoop软件,适用的开发工具是eclipse。其中,Hadoop软件安装的分别是1.0.4版本和2.2.0版本。
2、实验实施
实验的思路是,通过两个量级规模较小且相近的作业,和一个量级较大的作业进行比较,比较的是调度算法的运行时间和响应的情况。
实验中测试文件是英文小说。在/Lerasort路径下生成三组作业原始数据,分别时10MB、15MB、1G。然后在Hadoop平台中运行,Teragen生成行大小是100B的数据。运行命令中参数的设置是根据生成数据的总量计算得出的。接下来在三台PC机中提交作业,且不同调度算法中的提交顺序相同。
实验选择WordCount测试方式对作业执行,该方式主要是对文件中单词出现的次数进行获取。将参试文件转到HDFS中,然后进行调度算法的测试。
3、结果分析
使用FIFO调度算法对作业调度情况进行测试,按照顺序提交作业,作业运行的情况如表1所示。
使用公平调度算法运行作业,运行的情况如表2所示。
使用计算能力调度算法对每个作业运行,运行信息如表3所示。
通过实验结果可以看出,公平调度算法的执行更为有效,因为其在提交作业时,就对资源进行分配。
总结:
为了对Hadoop平台下的作业调度算法进行研究,文章建立了小型的Hadoop集群,通过三种不同规模的作业,对三种调度算法进行了解。实验结果表明,公平调度算法较其他两种算法具有灵活、高效的优势。这一研究提高Hadoop平台的性能和资源利用效率都具有十分重要的实际意义。
参考文献:
[1]戴小平,张宜力.Hadoop平台下计算能力调度算法的改进与实现[J].计算机工程与应用,2015,51(19):61-65.
[2]李千目,张晟骁,陆路,等.一种Hadoop平台下的调度算法及混合调度策略[J].计算机研究与发展,2013,50(s1):361-368.
关键词:Hadoop;作业调度;集群
前言
随着互联网技术的迅猛发展,其面临的问题也日益突显,主要问题是用户的飞速增长,使得大规模数据处理成为难题。因此,需要借助Hadoop这个大数据处理工具。但是,在实际应用中,需要通过作业调度算法对Hadoop平台性能改进,减少资源的浪费,同时提升数据的处理能力。
一、Hadoop平台概述
云计算是由网格计算、分布式计算等发展而成的一种全新的商业计算模型。云计算技术由上至下可以划分为软件即服务、平台即服务、基础设施即服务三层[1]。而文章所研究的Hadoop属于平台即服务层,即云计算开源组织的分布式计算框架。Hadoop平台为应用程序提供了可靠的接口,节约了用户数据处理的成本,具有良好的可靠性、扩展性等优点。且在云环境下较为容易的搭建数据存储与数据分析平台,同时也助力了云环境数据处理技术的发展。
二、作业调度算法
作业调度目标是以满足用户作业需求为前提,提高系统的吞吐量,保障系统的负载均衡。目前,Hadoop平台主要的作业调度算法有FIFO调度算法、公平调度算法、计算能力调度算法三种,下面对这三种算法进行介绍。
(1)FIFO算法
FIFO(First In First Out,先进先出)调度算法是Hadoop平台中默认的算法[2]。FIFO调度算法在集群中,将接收到的用户作业提交到一个队列中,提交操作是按照作业优先级顺序或者是提交时间顺序进行。将数据初始化后,由TaskTracker为每一个节点进行任务的分配操作,分配的顺序一般是按照提交时间来进行的。节点任务在执行的过程中,任务是不能被剥夺的。FIFO算法的实现是JobQueueTask Scheduler,位于org.apache.mapred文件夹中。
该算法的主要优点是实现简单、运行稳定,因为该算法针对的是单用户、单类型的作业调度。而在调度处理多用户多类型过程中,出现性能不稳、队列尾端作业饿死、资源浪费等问题。
(2)公平调度算法
公平调度算法是针对多用户多类型的作业进行调度的算法。公平调度算法中,在作业优先级一致的条件下,几乎均匀的将资源分配给各个作业节点。如果集群中仅有一个作业运行的情况下,该作业独自享有这个集群。当新的作业进入时,需要按照作业的优先级进行集群分享。简而言之,作业权重相同,作业分配的集群资源是相同的。
该算法的主要优点是实现多用户的资源平均共享,提交时间较晚的作业不会饿死。但是该算法忽视了作业调度优先级问题。
(3)计算调度算法
计算调度算法功能与公平调度算法类似,但是在调度设计与实现中存在差异。该算法针对的是多用户作业队列,每个队列按照配置获取节点执行任务TaskTrack,然后按照配置的不同,對集群资源的百分比进行分配,这种算法能够对每个队列的资源予以限制。每个队列采用的是FIFO调度算法,队列内的调度是按照作业优先级进行的,而任务提交是系统随机进行分配的。
该算法的设计思想是能够合理的分配计算资源在用户之间、队列之间的比例。但是,该调度算法简爱那个数据处理放置到最后进行考虑,就导致了作业的执行效率降低。
三、实验及结果分析
文章通过实验平台的搭建,对上述三种调度算法在执行中的不同进行对比。针对多个测试队列、多类型作业在不同作业调度算法下的性能,得出实验数据。
1、实验环境搭建
Hadoop实验环境的搭建,采用的是三台普通的服务器进行测试,三台服务器的主机名分别为f1、f2、f3,其IP地址分别为178.178.1.31、178.178.1.32、178.178.1.33。
集群节点的硬件配置是,CPU 是4核,内存4GB,硬盘是320GB,;软件环境是Ubuntu-desktop操作系统,安装javajdkl和Hadoop软件,适用的开发工具是eclipse。其中,Hadoop软件安装的分别是1.0.4版本和2.2.0版本。
2、实验实施
实验的思路是,通过两个量级规模较小且相近的作业,和一个量级较大的作业进行比较,比较的是调度算法的运行时间和响应的情况。
实验中测试文件是英文小说。在/Lerasort路径下生成三组作业原始数据,分别时10MB、15MB、1G。然后在Hadoop平台中运行,Teragen生成行大小是100B的数据。运行命令中参数的设置是根据生成数据的总量计算得出的。接下来在三台PC机中提交作业,且不同调度算法中的提交顺序相同。
实验选择WordCount测试方式对作业执行,该方式主要是对文件中单词出现的次数进行获取。将参试文件转到HDFS中,然后进行调度算法的测试。
3、结果分析
使用FIFO调度算法对作业调度情况进行测试,按照顺序提交作业,作业运行的情况如表1所示。
使用公平调度算法运行作业,运行的情况如表2所示。
使用计算能力调度算法对每个作业运行,运行信息如表3所示。
通过实验结果可以看出,公平调度算法的执行更为有效,因为其在提交作业时,就对资源进行分配。
总结:
为了对Hadoop平台下的作业调度算法进行研究,文章建立了小型的Hadoop集群,通过三种不同规模的作业,对三种调度算法进行了解。实验结果表明,公平调度算法较其他两种算法具有灵活、高效的优势。这一研究提高Hadoop平台的性能和资源利用效率都具有十分重要的实际意义。
参考文献:
[1]戴小平,张宜力.Hadoop平台下计算能力调度算法的改进与实现[J].计算机工程与应用,2015,51(19):61-65.
[2]李千目,张晟骁,陆路,等.一种Hadoop平台下的调度算法及混合调度策略[J].计算机研究与发展,2013,50(s1):361-368.