基于Spark平台的资源调度策略研究现状
2019-03-14翁利国陈杰汪宇杰吴亦灵
翁利国 陈杰 汪宇杰 吴亦灵
摘要:近年来,随着物联网和社交网络等网络技术的飞速发展,全球总数据量呈现爆炸式增长,大数据平台兴起,例如 Hadoop, Spark, Storm等优异的大数据处理平台,其中 Spark是基于内存处理的分布式计算平台,较为受欢迎。但是资源管理仍是大数据平台性能优化的核心研究,有效的资源管理对于调度的优化是非常重要。他们总结分析了目前国内外Spark平台资源调度策略的研究现状。
关键词:大数据;Spark;资源调度;性能优化;分布式
中图分类号:TP302 文献标识码:A 文章编号:1009-3044(2019)01-0014-03
Research Status of Resource Scheduling Strategy Based on Spark Platform
WENG Li-guo, CHEN Jie, WANG Yu-jie, WU Yi-ling
(State Grid Zhejiang Hangzhou Xiaoshan District Power Supply Co., Ltd., Hangzhou 311200,China)
Abstract:In recent years, with the rapid development of network technologies such as the Internet of Things and social networks, the total amount of data in the world has exploded, and big data platforms have emerged, such as Hadoop, Spark, Storm and other excellent big data processing platforms, of which Spark is based on memory processing. The distributed computing platform is more popular. However, resource management is still the core research of big data platform performance optimization. Effective resource management is very important for scheduling optimization. They summarizes and analyzes the current research status of Spark platform resource scheduling strategies at home and abroad.
Key words:big data; Spark; resource scheduling; performance optimization; distributed
1 引言
由于大數据计算方面的需求较大,通常集群会访问数百甚至上千台的机器,节约成本和有效的管理各种计算框架,并且提高集群资源利用率等等这些问题迫在眉睫。资源管理器Mesos[1],YARN因而被提出来,但是它们主要管理集群的计算和存储两个方面资源,而在大数据平台往往还有其他的资源例如网络资源,节点等需要权衡,这些都可能会成为调度的瓶颈。 当前,随着云计算和物联网的不断发展,基于地理分布的数据中心的大数据分析平台已逐渐普及。特别是大数据的爆炸性增长超过了单个数据中心内的处理能力。不同网络中心在传输数据时会有很大的网络延迟,以及大数据可能出现带宽不足等网络资源瓶颈。另外,不同的物理节点处理数据的性能是不一样的,因此节点自身的特点也会成为影响调度性能的瓶颈。
当前很多国内外学者从很多方面进行大数据平台的调度优化,例如基于数据本地 性研究与改进、基于集群异构性以及负载均衡、基于作业优先级等等。文献[2]所提出的算法通过比较任务传输所花时间与其等待执行的时间进行比较选择来决定是否进行本地执行。此外,一个好的负载平衡算法通过权衡任务来为负载重新分配,以此来优化系统资源利用率和任务响应时间。[3]提出了一种基于负载均衡的动态延迟调度机制,该机制能够防止节点过载而导致任务缓慢执行或者执行失败,这样就减少了作业的运行时间。在文献[4]中,考虑公平调度算法的不足,该文献提出了对其改进,即基于优先级的延迟公平调度算法。 对于资源调度优化也进行了很研究,当前SDN(Software Defined Network)架构被提出,很多文献针对网络资源使用SDN控制器来优化调度。 另外,近来强化学习越来越受到广大业界学者的喜欢,已经有学者使用强化学习在调度上进行了优化。
资源调度优化对大数据平台系统性能具有重要意义。 尽管Mesos、YARN等集群资源管理框架被提出,但是资源分配不合理,负载不均衡,网络拥塞等都会成为调度的瓶颈。 因此优化资源调度能够缓解资源分配,减缓网络拥塞等等,使得大数据平台作业运行时间减少,处理速率变得更高,资源利用率增加,整体系统性能提高。 因此研究资源调度优化对大数据平台非常重要。
2 研究现状
Spark大数据平台的普及应用,例如腾讯、 Yahoo、淘宝等电子供应商使用Spark大数据分析平台进行大数据分析和大数据量计算, 主要在市场推荐、机器学习、图像处理、日志存储等领域都得到了深入而广泛的研究和成功的应用。当前的各个数据中心通常部署多个集群计算框架,并且由统一的集群资源管理器进行管理。 本章主要从网络资源和节点资源进行研究。
2.1 基于网络资源调度策略研究现状
当前资源管理大多只集中在计算资源和存储资源,例如Mesos等资源管理都集中在管理计算和存储资源。但研究表明,网络资源管理更加合理化对于优化作业非常重要。 基于已有的研究表明,在作业运行中,网络运输需要的时间占完成总时间的33%,甚至超过50%。 所以基于网络资源调度的研究也逐渐增加。
在国内,文献[5]提出了一种基于SDN的数据中心网络资源调度机制,它是一种基于管理员预设的网络资源分配策略,为了优化性能,文中使用加权网络资源调度,将更多网络资源分配给优先级高的这类作业。文献[6]提出了一种基于能量评估的均衡大数据网络的调度平台。它综合分析了大数据平台中资源调度的能量评估问题,使用调度平台来收集数据。
国外,FireBird [7],本文改进了基于传统调度的调度算法,使用SDN来获取全局网络情况,综合考虑了网络资源的情况来进一步资源综合调度。 FlowComb [8]: 扫描数据日志并获得应用程序需求进行预测,其使用SDN控制器检测网络拥塞并对产生拥塞的数据流重新选择合适的路径。
国内外从网络资源的角度,针对带宽分配、网络拥塞等做出相应的调度策略研究来达到调度优化目的,进而提高整个系统的性能。
2.2 基于节点资源调度策略研究现状
正文内容。基于Spark平台,节点资源性能的研究是调度中需要考虑的核心因素之一。 很多针对借点资源与任务进行匹配,以运行时间最小为目标函数,通过最小化运行时间,以提高了节点利用率,增大了系统整体性能。
在国内,文献[9]基于异构集群结点固有性能,给出了一种基于任务特征和机架之间节点计算能力的资源分配策略。文献[10]考虑了节点之间的异质性问题,并提出了量化异构集群数据负载平衡的数学模型。由于原有的算法没有考虑到系统的负载水平,这样不能充分的利用集群中节点的处理能力,文献[11]提出了一种改进的基于优先级的多尺度算法。该算法根据计算能力进行排序,另外充分考虑了系统的负载水平,能够分配具有良好計算能力的节点给更高优先级作业中的任务。文献[12]提出了一种负载均衡算法,它充分地利用了节点性能和当前计算资源,并且根据集群负载均衡指标来分配任务。将任务分配给适当的节点以逐步平衡群集负载以提高群集节点利用率。在文献[13]中,研究了基于Hadoop平台的任务调度机制,设计一种了基于节点负载容量和动态优先级的计算方法。
国外, Xie J[14]等人提出的算法将节点的计算能力与其存储的数据量进行关联,将更多的数据存储在处理速度更快的节点上, 在提高数据的处理速度的同时,也达到了负载平衡的效果。 Polo[15]创新性的将每个节点的任务槽进行动态调整,使得硬件环境不同的节点能有不同的计算负载,并根据实时情况调整自身任务槽数量。
国内外针对节点性能例如计算能力、节点大小等调度策略研究来达到负载均衡的目的,提高节点利用率,进而提高整个系统的运行效率。
3 Spark资源调度原理
Spark调度主要两种:任务调度和资源调度。任务调度主要是通过一系列的调度器进行的作业调度,资源调度指的是实际的应用程序是如何来获取资源的。因此任务调度是在资源调度的基础上执行的。
在Spark平台上进行资源调度和任务调度时,SparkContext是调度的入口,在调度中起着重要作用,它负责与主节点通信,然后完成申请资源的任务,进入应用程序后,它还创建高级调度对象和底层调度对象。之后,对所有任务进行分片,并且将任务集并行化,并发送给已经获取了资源的任务执行,循环执行结果。
而其中DAG调度器和任务调度器的工作即Spark核心工作分片Stage的划分。对于工作分片划分最基本的思想:
(1)每个任务是由多个分片构成,并且它可以有一个或多个分片。
(2)根据依赖性,从标题开始按顺序执行多个阶段。
Spark应用程序中可由不同的动作触发多个任务,即说一个应用程序中可以有多个的作业,每个作业可以由一个或者很多分片构成,当位置靠前的分片完成计算,接着才会后面的分片才会执行。
(3)Stage有惰性特性。由作业生成的分片会形成一个有向无环图,分片有懒惰的特性,当动作函数发生时,才会触发实际发生作业的执行,在采取动作之前,所要做的是将进行中的计算标记下来,事实上没有真的执行。两个动作导致作业执行,一个是触发作业,一个是发送消息。Spark平台中使用递归创建有向无环图,若创建位置靠后的一个分片时,一定要保证跟它之间是直系父亲分片已经被创建(如果直系的父分片未创建,就会递调用getParent()函数来创建该直系父亲的分片),直到遇到了有向无环图中的第一个RDD片段(Resilient Distributed Datasets),这个时候Spark会为当前的依赖创建分片,然后作业生成的分片就会跳出函数底层递归,然后一步一步创建每一个分片,直到最后到达顶层,创建最终的结果分片,完成有向无环图的创建,此时分片也就完成了。
以上就是Spark资源调度原理的总结,资源调度的核心就是对任务进行分片,经过的寻找窄依赖来形成又向无环图。Spark的处理速度快其中一个原因就是又向无环图的存在。
4 总结
本文针对国内外学者从网络资源和节点资源详细进行了研究,当前网络资源方向的主要研究是基于SDN集中控制,收集网络资源,进而全局考虑网络资源进行调度优化。针对结点资源分配是否合理,当前的主要研究方向是只用强化学习自适应地对任务和节点进行匹配,减少运行时间。资源调度优化将会一直是大数据平台性能优化的热点问题,对于Spark整个系统性能有很大的影响。
参考文献:
[1] 刘文斌. 基于Mesos的数据中心资源调度和存储性能优化技术研究[D].广西大学,2018.
[2] Zhang X, Feng Y, Feng S, et al. An effective data locality aware task scheduling method for MapReduce framework in heterogeneous environments[C]l/Cloud and Service Computing (CSC},2011 International Conference on. IEEE, 2011:235-242.
[3] 陶永才,李文洁,石磊,刘磊,卫琳,曹仰杰.基于负载均衡的Hadoop动态延迟调度机制[J].小型微型计算机系统,2015,36(03):445-449.
[4] 吴涛. 基于Hadoop平台的作业调度算法优化研究[D].华北电力大学,2016.
[5] Sandeep Chinchali, Pan Hu, Tianshu Chu, Manu Sharma, Manu Bansal, Rakesh Misra, Marco Pavone, Sachin Katti. Cellular Network Traffic Scheduling With Deep Reinforcement Learning[M]// Proceedings of the Thirty-Second {AAAI} Conference on Artificial Intelligence, New Orleans, Louisiana, USA, February 2-7, 2018.
[6]汪正康,周鵬,肖俊超,武延军.基于SDN的数据中心网络资源调度机制[J].计算机系统应用,2015,24(08):212-218.
[7] Xin He and Prashant Shenoy. Firebird: Network-aware task scheduling for spark using sdns. In International Conference on Computer Communication and Networks, pages 1–10, 2016.
[8] Rajat Chaudhary, Gagangeet Singh Aujla, Neeraj Kumar, and Joel J. P. C. Rodrigues. Optimized big data management across multicloud data centers: Software-defined-network-based analysis. IEEE Communications Magazine, 56(2):118–126, 2018.
[9] 林常航,郭文忠,陈煌宁.针对Hadoop异构集群节点性能的数据分配策略[J].小型微型计算机系统,2015,36(01):83-88.
[10] 张松,杜庆伟,孙静,孙振.Hadoop异构集群中数据负载均衡的研究[J].计算机应用与软件,2016,33(05):31-34.
[11] 谷连军. 云计算环境下基于优先级与可靠度的Hadoop作业调度研究[D].湖南大学,2013.
[12] 秦军,冯亮亮,孙蒙.基于异构Hadoop集群的负载均衡策略研究[J].计算机技术与发展,2017,27(06):110-113.
[13] 唐玮峰,赵振戟.Hadoop的负载均衡调度算法研究[J].软件导刊,2016,15(05):47-49.
[14] Xie J, Yin S, Ruan X, et al. Improving mapreduce performance through data placement in heterogeneous hadoop clusters[C]//Parallel&Distributed Processing, Workshops and Phd Forum.
[15] Polo J, Castillo C, Camera D, et al. Resource-aw-are adaptive scheduling for mapreduce clusters[M]//M序号dleware 201].Springer Berlin He序号elberg, 2011.