朱立
摘要:在互聯網技術和計算機技術快速發展的背景下,云計算在數據挖掘等海量數據處理中起著重要作用。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.