翁利國 陳杰 汪宇杰 吳亦靈
摘要:近年來,隨著物聯網和社交網絡等網絡技術的飛速發展,全球總數據量呈現爆炸式增長,大數據平臺興起,例如 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.