?

Hadoop MapReduce新舊架構的對比研究綜述*

2017-02-09 09:52于金良朱志祥李聰穎
計算機與數字工程 2017年1期
關鍵詞:任務調度資源分配集群

于金良 朱志祥 李聰穎

(西安郵電大學 西安 710061)

?

Hadoop MapReduce新舊架構的對比研究綜述*

于金良 朱志祥 李聰穎

(西安郵電大學 西安 710061)

Hadoop MapReduce架構經過了一次重構,新舊架構有著巨大的差異。論文首先介紹了舊版本MapReduce的架構,作業執行的流程與其中的任務的調度、資源分配等,指出了舊框架的局限性。再介紹了新框架的架構,任務調度和資源分配等。并從二者的架構、任務調度、資源分配等方面進行了對比,指出了新框架的優勢。新一代的MapReduce框架YARN是共享模式的,可以在同一集群上運行使用不同的計算框架編寫的應用程序,同時也減少了運維的難度,提高了集群資源的利用率。

MapReduce; YARN; 任務調度; 資源分配

Class Number TP274.2

1 引言

MapReduce[1]是谷歌在2004年提出的能夠并發處理大規模數據集(大于1TB)的編程模型。它的名字來源于函數式編程模型中的兩個核心操作:Map和Reduce,當然它們的思想也是一致的。Map是把數據分開的過程,而Reduce則是把分開的數據合并的過程。它的特點是簡單易學、使用廣泛,能夠降低并行編程難度,讓程序員從繁雜的并行編程工作中解脫出來,輕松地編寫簡單、高效地并行程序[2]。

隨著近年來大數據的發展,數據規模越大,對其挖掘可能得到的價值更大[3],MapReduce可以很好地做這些工作。Hadoop MapReduce是谷歌MapReduce的開源版本,作為一種編程模型MapReduce是高語言等級的,它屏蔽了底層實現細節,降低了編程難度,提高了編程效率[4]。它即使部署在廉價的機器組成的集群上,也可以擁有很高的性能。但是作為一個計算引擎,它還有很多的劣勢,如它存在單點故障的問題,由于它擁有一套自己的資源分配、任務調度的功能,即使做MapReduce的高可用(High Availability),由于主節點上存儲了很多任務的信息、資源的信息,使得故障的恢復變得極其困難,所以需要一種新的任務調度工具完成MapReduce作業的調度和資源分配。

2 MapReduceV1研究

MapReduce采用了“分而治之,然后整合”的處理思想。Hadoop會將一個大任務分解多個小任務,然后并行執行。每一個MapReduce任務都被初始化為一個Job。每個Job又可以分為兩個階段,Map階段和Reduce階段[5]。這兩個階段分別有兩個函數來表示。Map函數接收一個〈key,value〉形式的輸入,然后產生同樣的〈key,value〉形式的中間輸出,執行Reduce任務的機器負責拉取所有的具有相同Key的〈Key,Value〉數據,然后傳遞給Reduce函數,Reduce函數接收一個如〈key,(list of value)〉形式的輸入,然后對這個value集合處理并輸出結果,Reduce的輸出也是〈key,value〉形式的[6]。如圖1是MapReduce處理數據的變化流程。

圖1 Mapreduce數據流變化

MapReduce采用的是主/從架構,其中主節點是JobTracker(作業服務器),從節點是TaskTracker(任務服務器)。二者之間通過定時心跳進行通信。

JobTracker主要負責與客戶端通信,接受客戶端的命令,如提交作業,殺死作業等,并將這些命令發送給TaskTracker來執行。它與TaskTracker之間的通信是以定時心跳的形式進行的,它為TaskTracker分配任務、所需要的計算資源(CPU、內存、帶寬等),以及記錄任務狀態等,它之中保存著關于作業的所有信息。

TaskTracker是溝通JobTracker和tasks之間的橋梁:一方面,接收并執行JobTracker發送來的命令;另一方面將本節點上各個任務的狀態、執行的進度以定時心跳的形式發送給JobTracker[7]。

下面是MapReduce作業執行的具體流程:

1) 提交作業

一個MapReduce作業提交到Hadoop之后,會進入完全地自動化執行過程,在這個過程中,用戶除了監控作業的執行情況和強制終止作業之外,不能對作業的執行過程進行干擾,所以在作業提交之前,用戶需要將作業所有的需要的參數配置完備。

圖2 MapReduce架構圖

2) 初始化作業

在客戶端中,當用戶作業調用JobTracker對象的submitJob()方法之后,JobTracker會把這個作業放在一個作業隊列中去,進行調度,默認的調度方式是FIFO。當作業被調度執行時,JobTracker會對此作業進行初始化,根據處理數據的情況為其創建Map任務和Reduce任務。

3) 分配任務

TaskTracker是一個單獨循環運行的軟件,每間隔一段時間向JobTracker發送心跳信息(heartbeat),包括告知JobTracker此TaskTracker是否存活,是否準備好執行新的任務。在JobTracker接收到心跳信息后,如果任務隊列中有待分配的任務時,它就會給一個準備好的TaskTracker分配一個任務,并將分配信息(包括要執行的任務信息和分配的資源信息)封裝在心跳信息返回值返回給TaskTracker,TaskTracker根據此返回信息來執行任務。在JobTracker為TaskTracker分配任務時,為了減少數據移動I/O開銷大的問題,會考慮將任務分配到數據所在的TaskTracker上。

4) 執行任務

TaskTracker根據心跳返回值的信息來執行任務,并跟蹤任務執行的狀態,并定時向JobTracker報告任務的狀態,直到任務執行完成[8]。

· 錯誤處理機制:

在作業調度過程中,故障處理是一個很重要的方面。這里主要兩種故障:硬件故障和任務執行失敗。

· 硬件故障就是服務器宕機:

從MapReduce任務執行的角度出發,所涉及的硬件主要是JobTracker和TaskTracker。顯然硬件故障就是JobTracker和TaskTracker機器故障。

在Hadoop集群中,任何時候都只有唯一的一個JobTracker。所以JobTracker的單點故障是所有故障中最嚴重的。到目前為止,在Hadoop中還沒有相關的解決辦法,能夠想到的是通過創建多個備用JobTracker節點,在主JobTracker失敗之后采用選舉算法(一種Hadoop中常用的確定主節點的算法)來重新確定JobTracker節點。一些企業提供Hadoop服務時,就是通過使用了這種方法來解決這種問題[8]。

TaskTracker故障相對較為常見。并且MapReduce也有相應的解決辦法,主要是重新執行任務。在實際任務中,MapReduce作業還會遇到用戶代碼缺陷或進程崩潰引起的任務失敗等情況。用戶代碼缺陷會導致它在執行過程中拋出異常,導致任務執行失敗,這種情況下TaskTracker會報告給JobTracker,JobTracker會重啟這個任務。

3 MapReduceV2研究

新版本的MapReduceV2又稱為YARN,是為了解決舊版的MapReduce的問題才出現的。舊版MapReduce的局限性在于:

· 可靠性差,舊版采用了主從結構,導致主節點存在單點故障,一旦主節點出現問題整個集群就無法工作,而且單點故障發生后恢復的難度很大。

· 可擴展性差,在舊版本的MapReduce中JobTracker同時作為資源管理器和作業調度器兩個角色,當集群逐漸擴大時,JobTracker的壓力會越來越大,成為了Hadoop系統的瓶頸,制約了Hadoop集群的可擴展性。

· 只能支持MapReduce編程框架,隨著互聯網的高速發展,MapReduce的簡單離線批處理框架已經很難滿足所有需求,出現了實時流處理框架如storm、迭代計算框架Spark等,但是舊版的MapReduce不能支持這些框架。

· 資源利用率低。為了解決舊版MapReduce的這些局限性,促進Hadoop更加長遠的發展,Hadoop對MapReduce框架進行了完全重構,從根本上發生了變化。

圖3 MapReduce2架構圖

重構的根本思想是將JobTracker的資源管理和任務調度這兩個主要功能進行分離,由兩個單獨的組件完成。新的資源管理器全局管理整個集群上所有計算資源的分配;YARN為每一個應用分配一個ApplicationMaster,由它負責相應作業的調度和資源的協調。

RsourceManager是一個主節點,它負責管理集群中所有資源的統一管理和分配,它接受來自各個節點上NodeManager的資源匯報信息[9]。它主要由兩個組件構成:資源調度器和ApplicationMaster管理器。資源調度器根據作業的情況、集群中計算資源的情況,將系統中的資源分配給正在運行的應用程序。資源調度器為每個應用程序分配的資源的單位是Container,它是一個抽象的單位,是一種動態的資源分配單位,將CPU、內存、磁盤、網絡等資源封裝在一起[10]。應用程序管理器負責生成、管理整個集群中運行的所有ApplicationMaster,監控ApplicationMaster的運行情況,在它失敗時重啟。

YARN的主節點ResourceManager只是負責簡單的任務調度和資源分配,不在監控和記錄每個任務的執行狀態,也不再負責執行失敗任務的重啟等,只負責監控和重啟ApplicationMaster,極大的減少了本身的資源開銷,而且單點故障對整個集群的影響變得很小,恢復也因此變得更加容易。

NodeManager是從節點,是單個節點上的任務和資源管理器,部署在集群的每臺機器上,它管理這集群中的單個節點中的資源,監控Container的生命周期和資源使用情況,還負責與ResourceManger進行通信,報告節點計算資源的使用情況、節點的健康狀況等。

ApplicationMaster是單個作業的管理器和任務監控,每個作業都有一個相對應的,負責向ResourceManager的資源調度器申請資源,管理監控整個作業所有任務的狀態[11]。

YARN是一個彈性的計算平臺,它不再只局限于MapReduce編程模型,而是同時支持多種編程模型如Spark,即是共享集群的模式。YARN的優勢:

· 資源利用率高,一個框架一個集群會造成資源占用的不均衡,某個框架因應用多而造成集群資源緊張,而某個框架因應用少而造成集群資源浪費。而YARN通過多種計算框架共享一個集群,使得集群利用率更高。

· 數據共享,隨著數據量的增加,移動數據的代價越來越大,YARN模式可以有效的降低這種代價。

· 運維成本低。從運維多個集群到一個集群,大大降低了運維成本。

4 新舊版本的對比

首先說下相同點,客戶端不變,應用程序調用的API接口大部分保持了兼容,使得以前的代碼可以很容易的移植到新的框架上。

區別:

原來框架中的JobTracker和TaskTracker不見了,取而代之的是ResourceManager、NodeManager和ApplicationMaster三個。

其中ResourceManger起到了JobTracker的資源分配的作用,它做的關于作業調度的就只有啟動、監控每個作業所屬的ApplicationMaster,并重啟故障的ApplicationMaster。不再負責原來框架中JobTracker的監控、重啟每個Task。使得單點故障的影響變得更小,恢復更加容易。ApplicationMaster負責一個作業的整個生命周期,起到了原來框架JobTracker的任務調度的作用,但是每一個作業都有一個ApplicationMaster,它可以運行在ResourceManager機器上,也可以運行在NodeManager機器上,所以不存在Application Master單點故障的問題。

新框架的優勢:

1) 新框架將JobTracker的分離,減少了它的資源消耗,使系統更容易從單點故障中恢復,并且監測每個作業子任務狀態的程序分布式化了,更安全。

2) 在新框架中,ApplicationMaster是可變的,可以為不同的計算框架編寫自己的ApplicationMaster,使得更多的計算框架可以運行在Hadoop集群上。

3) 在老框架中,JobTracker最大的負擔就是要監控每個作業下的任務的運行情況,還要負責重啟故障的任務,新框架中這部分由ApplicationMaster來完成,而ResourceManager上的任務管理器只需要監控ApplicationMaster的狀態。

4) Container很好地起到了資源隔離的作用。

5 結語

新框架的出現,不僅僅解決了舊框架的很多問題如單點故障恢復,還增加了很多新的特性,本文先任務調度、資源分配等方面介紹了兩種框架的特點,然后對比了二者的不同,注重新框架帶來的相對于舊框架的優勢。

[1] 李建江,崔健,王聃,等.MapReduce并行編程模型研究綜述[J].電子學報,2011,11:2635-2642. LI Jianjiang, CUI Jian, WANG Dan, et al. Survey of MapReduce Parallel Programming Model[J]. Acta Electronica Sinica,2011,11:2635-2642.

[2] 杜江,張錚,張杰鑫,等.MapReduce并行編程模型研究綜述[J].計算機科學,2015,S1:537-541,564. DU Jiang, ZHANG Zheng, ZHANG Jiexin, et al. Survey of MapReduce Parallel Programming Model[J]. Computor Science,2015,S1:537-541,564.

[3] 李芬,朱志祥,劉盛輝.大數據發展現狀及面臨的問題[J].西安郵電大學學報,2013,5:1-3.

[4] 亢麗蕓,王效岳,白如江.MapReduce原理及其主要實現平臺分析[J].現代圖書情報技術,2012,2:60-67. KANG Liyun, WANG Xiaoyue, BAI Rujiang. Analysis of MapReduce Principle and Its Main Implementation Platforms[J]. New Technology of Library and Information Service,2012,2:60-67.

[5] 韓海雯.MapReduce計算任務調度的資源配置優化研究[D].廣州:華南理工大學,2013. HAN Haiwen. Researches on Optimization of Resource Allocation for MapReduce Scheduling[D]. Guangzhou: South China University of Technology,2013.

[6] 徐淑琦.基于MapReduce的高性能云計算任務調度技術的研究[D].北京:北京工業大學,2013. Xu Shuqi. The Research on High Performance Task Scheduling Technology Based on Mapreduce in Cloud Computing[D]. Beijing: Beijing University of Technology,2013.

[7] 王博,陳莉君.Hadoop遠程過程調用機制的分析和應用[J].西安郵電學院學報,2012,6:74-77. WANG Bo, CHEN Lijun. Analysis and application of mechanism of Hadoop RPC communication[J]. Journal of Xi’an University of Posts and Telecommunications,2012,6:74-77.

[8] 戎翔,李玲娟.基于MapReduce的頻繁項集挖掘方法[J].西安郵電學院學報,2011,4:37-39,43. RONG Xiang, LI Lingjuan. A method for frequent set mining based on MapReduce[J]. Journal of Xi’an University of Posts and Telecommunications,2011,4:37-39,43.

[9] 詹文濤,艾中良,劉忠麟,等.一種基于YARN的高優先級作業調度實現方案[J].軟件,2016,3:84-88. ZHAN Wentao, AI Zhongliang, LIU Zhonglin, et al. A Kind of High-priority Job Scheduler Implementation based on YARN[J]. Computer Engineering & Software,2016,3:84-88.

[10] 董春濤,李文婷,沈晴霓,等.Hadoop YARN大數據計算框架及其資源調度機制研究[J].信息通信技術,2015,1:77-84. DONG Chuntong, LI Wenting, CHEN Qingxia, et al. Research on the Framework and Resource Scheduling Mechanisms of Hadoop YARN[J]. Information and Communications Technologies,2015,1:77-84.

[11] http://hadoop.apache.org/[EB/OL]. 2016.

Comparative Study of Old and New Architecture of Hadoop MapReduce

YU Jinliang ZHU Zhixiang LI Congying

(Xi’an University of Posts and Telecommunications, Xi’an 710061)

After a reconstruction of Hadoop MapReduce framework, it changes a lot. This paper firstly describes the architecture of the old version of MapReduce, processes in which the job execution scheduling, resource allocation and other tasks, it points the limitations of the framework. And then it introduces the new architecture, task scheduling and resource allocation. Compared both new and old architecture, it points the advantages of the new framework. With the new generation MapReduce framework YARN, it applications using different computational framework on it, and reduce the difficulty of operation and maintenance, improve the utilization of cluster resources.

MapReduce, YARN, task schedule, resource allocation

2016年7月13日,

2016年8月28日

2015年工信部通信軟科學研究項目(編號:2015-R-19);2015陜西省信息化技術研究項目課題(編號:2015-002)資助。

于金良,男,碩士研究生,研究方向:大數據分析處理。朱志祥,男,教授,研究方向:計算機網絡、信息化應用和網絡安全。李聰穎,女,碩士研究生,研究方向:云計算與大數據。

TP274.2

10.3969/j.issn.1672-9722.2017.01.018

猜你喜歡
任務調度資源分配集群
基于生產函數的云計算QoS任務調度算法
基于動態能量感知的云計算任務調度模型
新研究揭示新冠疫情對資源分配的影響 精讀
海上小型無人機集群的反制裝備需求與應對之策研究
培育世界級汽車產業集群
一種無人機集群發射回收裝置的控制系統設計
QoS驅動的電力通信網效用最大化資源分配機制①
基于動態規劃理論的特種設備檢驗資源分配研究
基于動態規劃理論的特種設備檢驗資源分配研究
云環境下公平性優化的資源分配方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合