1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
      HadoopYarn調(diào)度器的選擇和使用

      一、引言

      Yarn在Hadoop的生態(tài)系統(tǒng)中擔(dān)任了資源管理和任務(wù)調(diào)度的角色。在討論其構(gòu)造器之前先簡(jiǎn)單了解一下Yarn的架構(gòu)。

      在惠來(lái)等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需開(kāi)發(fā)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣,外貿(mào)網(wǎng)站建設(shè),惠來(lái)網(wǎng)站建設(shè)費(fèi)用合理。

      Hadoop Yarn調(diào)度器的選擇和使用

      上圖是Yarn的基本架構(gòu),其中ResourceManager是整個(gè)架構(gòu)的核心組件,它負(fù)責(zé)整個(gè)集群中包括內(nèi)存、CPU等資源的管理;ApplicationMaster負(fù)責(zé)應(yīng)用程序在整個(gè)生命周期的任務(wù)調(diào)度;NodeManager負(fù)責(zé)本節(jié)點(diǎn)上資源的供給和隔離;Container可以抽象的看成是運(yùn)行任務(wù)的一個(gè)容器。本文討論的調(diào)度器是在ResourceManager組建中進(jìn)行調(diào)度的,接下來(lái)就一起研究一下包括FIFO調(diào)度器、Capacity調(diào)度器、Fair調(diào)度器在內(nèi)的三個(gè)調(diào)度器。

      二、FIFO調(diào)度器

      Hadoop Yarn調(diào)度器的選擇和使用

      上圖為FIFO調(diào)度器的執(zhí)行過(guò)程示意圖。FIFO調(diào)度器也就是平時(shí)所說(shuō)的先進(jìn)先出(First In First Out)調(diào)度器。FIFO調(diào)度器是Hadoop最早應(yīng)用的一種調(diào)度策略,可以簡(jiǎn)單的將其理解為一個(gè)Java隊(duì)列,它的含義在于集群中同時(shí)只能有一個(gè)作業(yè)在運(yùn)行。將所有的Application按照提交時(shí)候的順序來(lái)執(zhí)行,只有當(dāng)上一個(gè)Job執(zhí)行完成之后后面的Job才會(huì)按照隊(duì)列的順序依次被執(zhí)行。FIFO調(diào)度器以集群資源獨(dú)占的方式來(lái)運(yùn)行作業(yè),這樣的好處是一個(gè)作業(yè)可以充分利用所有的集群資源,但是對(duì)于運(yùn)行時(shí)間短,重要性高或者交互式查詢類(lèi)的MR作業(yè)就要等待排在序列前的作業(yè)完成才能被執(zhí)行,這也就導(dǎo)致了如果有一個(gè)非常大的Job在運(yùn)行,那么后面的作業(yè)將會(huì)被阻塞。因此,雖然單一的FIFO調(diào)度實(shí)現(xiàn)簡(jiǎn)單,但是對(duì)于很多實(shí)際的場(chǎng)景并不能滿足要求。這也就催發(fā)了Capacity調(diào)度器和Fair調(diào)度器的出現(xiàn)。

      三、Capacity調(diào)度器

      Hadoop Yarn調(diào)度器的選擇和使用

      上圖是Capacity調(diào)度器的執(zhí)行過(guò)程示意圖。Capacity調(diào)度器也就是日常說(shuō)的容器調(diào)度器。可以將它理解成一個(gè)個(gè)的資源隊(duì)列。這個(gè)資源隊(duì)列是用戶自己去分配的。例如因?yàn)楣ぷ魉枰颜麄€(gè)集群分成了AB兩個(gè)隊(duì)列,A隊(duì)列下面還可以繼續(xù)分,比如將A隊(duì)列再分為1和2兩個(gè)子隊(duì)列。那么隊(duì)列的分配就可以參考下面的樹(shù)形結(jié)構(gòu):
      —A[60%]
      |—A.1[40%]
      |—A.2[60%]
      —B[40%]
      上述的樹(shù)形結(jié)構(gòu)可以理解為A隊(duì)列占用整個(gè)資源的60%,B隊(duì)列占用整個(gè)資源的40%。A隊(duì)列里面又分了兩個(gè)子隊(duì)列,A.1占據(jù)40%,A.2占據(jù)60%,也就是說(shuō)此時(shí)A.1和A.2分別占用A隊(duì)列的40%和60%的資源。雖然此時(shí)已經(jīng)具體分配了集群的資源,但是并不是說(shuō)A提交了任務(wù)之后只能使用它被分配到的60%的資源,而B(niǎo)隊(duì)列的40%的資源就處于空閑。只要是其它隊(duì)列中的資源處于空閑狀態(tài),那么有任務(wù)提交的隊(duì)列可以使用空閑隊(duì)列所分配到的資源,使用的多少是依據(jù)配來(lái)決定。參數(shù)的配置會(huì)在后文中提到。

      在這里還是要推薦下我自己建的大數(shù)據(jù)學(xué)習(xí)交流群:784557197,群里都是學(xué)大數(shù)據(jù)開(kāi)發(fā)的,如果你正在學(xué)習(xí)大數(shù)據(jù) ,小編歡迎你加入,大家都是軟件開(kāi)發(fā)黨,不定期分享干貨(只有大數(shù)據(jù)軟件開(kāi)發(fā)相關(guān)的),包括我自己整理的一份2018最新的大數(shù)據(jù)進(jìn)階資料和高級(jí)開(kāi)發(fā)教程,歡迎進(jìn)階中和進(jìn)想深入大數(shù)據(jù)的小伙伴加入。

      Capacity調(diào)度器具有以下的幾個(gè)特性:

      • 層次化的隊(duì)列設(shè)計(jì),這種層次化的隊(duì)列設(shè)計(jì)保證了子隊(duì)列可以使用父隊(duì)列設(shè)置的全部資源。這樣通過(guò)層次化的管理,更容易合理分配和限制資源的使用。
      • 容量保證,隊(duì)列上都會(huì)設(shè)置一個(gè)資源的占比,這樣可以保證每個(gè)隊(duì)列都不會(huì)占用整個(gè)集群的資源。
      • 安全,每個(gè)隊(duì)列又嚴(yán)格的訪問(wèn)控制。用戶只能向自己的隊(duì)列里面提交任務(wù),而且不能修改或者訪問(wèn)其他隊(duì)列的任務(wù)。
      • 彈性分配,空閑的資源可以被分配給任何隊(duì)列。當(dāng)多個(gè)隊(duì)列出現(xiàn)爭(zhēng)用的時(shí)候,則會(huì)按照比例進(jìn)行平衡。
      • 多租戶租用,通過(guò)隊(duì)列的容量限制,多個(gè)用戶就可以共享同一個(gè)集群,同事保證每個(gè)隊(duì)列分配到自己的容量,提高利用率。
      • 操作性,Yarn支持動(dòng)態(tài)修改調(diào)整容量、權(quán)限等的分配,可以在運(yùn)行時(shí)直接修改。還提供給管理員界面,來(lái)顯示當(dāng)前的隊(duì)列狀況。管理員可以在運(yùn)行時(shí),添加一個(gè)隊(duì)列;但是不能刪除一個(gè)隊(duì)列。管理員還可以在運(yùn)行時(shí)暫停某個(gè)隊(duì)列,這樣可以保證當(dāng)前的隊(duì)列在執(zhí)行過(guò)程中,集群不會(huì)接收其他的任務(wù)。如果一個(gè)隊(duì)列被設(shè)置成了stopped,那么就不能向他或者子隊(duì)列上提交任務(wù)了。
      • 基于資源的調(diào)度,協(xié)調(diào)不同資源需求的應(yīng)用程序,比如內(nèi)存、CPU、磁盤(pán)等等。

      相關(guān)參數(shù)的配置:

      (1)capacity:隊(duì)列的資源容量(百分比)。 當(dāng)系統(tǒng)非常繁忙時(shí),應(yīng)保證每個(gè)隊(duì)列的容量得到滿足,而如果每個(gè)隊(duì)列應(yīng)用程序較少,可將剩余資源共享給其他隊(duì)列。注意,所有隊(duì)列的容量之和應(yīng)小于100。
      (2)maximum-capacity:隊(duì)列的資源使用上限(百分比)。由于存在資源共享,因此一個(gè)隊(duì)列使用的資源量可能超過(guò)其容量,而最多使用資源量可通過(guò)該參數(shù)限制。(這也是前文提到的關(guān)于有任務(wù)運(yùn)行的隊(duì)列可以占用的資源的最大百分比)
      (3)user-limit-factor:每個(gè)用戶最多可使用的資源量(百分比)。比如,假設(shè)該值為30,則任何時(shí)刻,每個(gè)用戶使用的資源量不能超過(guò)該隊(duì)列容量的30%。
      (4)maximum-applications :集群或者隊(duì)列中同時(shí)處于等待和運(yùn)行狀態(tài)的應(yīng)用程序數(shù)目上限,這是一個(gè)強(qiáng)限制,一旦集群中應(yīng)用程序數(shù)目超過(guò)該上限,后續(xù)提交的應(yīng)用程序?qū)⒈痪芙^,默認(rèn)值為 10000。所有隊(duì)列的數(shù)目上限可通過(guò)參數(shù)yarn.scheduler.capacity.maximum-applications設(shè)置(可看做默認(rèn)值),而單個(gè)隊(duì)列可通過(guò)參數(shù)yarn.scheduler.capacity..maximum- applications設(shè)置適合自己的值。
      (5)maximum-am-resource-percent:集群中用于運(yùn)行應(yīng)用程序 ApplicationMaster的資源比例上限,該參數(shù)通常用于限制處于活動(dòng)狀態(tài)的應(yīng)用程序數(shù)目。該參數(shù)類(lèi)型為浮點(diǎn)型,默認(rèn)是0.1,表示10%。所有隊(duì)列的ApplicationMaster資源比例上限可通過(guò)參數(shù)yarn.scheduler.capacity. maximum-am-resource-percent設(shè)置(可看做默認(rèn)值),而單個(gè)隊(duì)列可通過(guò)參數(shù) yarn.scheduler.capacity.. maximum-am-resource-percent設(shè)置適合自己的值。
      (6)state :隊(duì)列狀態(tài)可以為STOPPED或者 RUNNING,如果一個(gè)隊(duì)列處于STOPPED狀態(tài),用戶不可以將應(yīng)用程序提交到該隊(duì)列或者它的子隊(duì)列中,類(lèi)似的,如果ROOT隊(duì)列處于STOPPED 狀態(tài),用戶不可以向集群中提交應(yīng)用程序,但正在運(yùn)行的應(yīng)用程序仍可以正常運(yùn)行結(jié)束,以便隊(duì)列可以優(yōu)雅地退出。
      (7)acl_submit_applications:限定哪些Linux用戶/用戶組可向給定隊(duì)列中提交應(yīng)用程序。需要注意的是,該屬性具有繼承性,即如果一個(gè)用戶可以向某個(gè)隊(duì)列中提交應(yīng)用程序,則它可以向它的所有子隊(duì)列中提交應(yīng)用程序。配置該屬性時(shí),用戶之間或用戶組之間用“,”分割,用戶和用戶組之間用空格分割,比如“user1, user2 group1,group2”。
      (8)acl_administer_queue:為隊(duì)列指定一個(gè)管理員,該管理員可控制該隊(duì)列的所有應(yīng)用程序,比如殺死任意一個(gè)應(yīng)用程序等。同樣,該屬性具有繼承性,如果一個(gè)用戶可以向某個(gè)隊(duì)列中提交應(yīng)用程序,則它可以向它的所有子隊(duì)列中提交應(yīng)用程序。

      四、Fair調(diào)度器

      Hadoop Yarn調(diào)度器的選擇和使用

      上圖是Fair調(diào)度器在一個(gè)隊(duì)列中的執(zhí)行過(guò)程示意圖。Fair調(diào)度器也就是日常說(shuō)的公平調(diào)度器。Fair調(diào)度器是一個(gè)隊(duì)列資源分配方式,在整個(gè)時(shí)間線上,所有的Job平均的獲取資源。默認(rèn)情況下,F(xiàn)air調(diào)度器只是對(duì)內(nèi)存資源做公平的調(diào)度和分配。當(dāng)集群中只有一個(gè)任務(wù)在運(yùn)行時(shí),那么此任務(wù)會(huì)占用整個(gè)集群的資源。當(dāng)其他的任務(wù)提交后,那些釋放的資源將會(huì)被分配給新的Job,所以每個(gè)任務(wù)最終都能獲取幾乎一樣多的資源。
      Hadoop Yarn調(diào)度器的選擇和使用

      公平調(diào)度器也可以在多個(gè)隊(duì)列間工作,如上圖所示,例如有兩個(gè)用戶A和B,他們分別擁有一個(gè)隊(duì)列。當(dāng)A啟動(dòng)一個(gè)Job而B(niǎo)沒(méi)有任務(wù)提交時(shí),A會(huì)獲得全部集群資源;當(dāng)B啟動(dòng)一個(gè)Job后,A的任務(wù)會(huì)繼續(xù)運(yùn)行,不過(guò)隊(duì)列A會(huì)慢慢釋放它的一些資源,一會(huì)兒之后兩個(gè)任務(wù)會(huì)各自獲得一半的集群資源。如果此時(shí)B再啟動(dòng)第二個(gè)Job并且其它任務(wù)也還在運(yùn)行時(shí),那么它將會(huì)和B隊(duì)列中的的第一個(gè)Job共享隊(duì)列B的資源,也就是隊(duì)列B的兩個(gè)Job會(huì)分別使用集群四分之一的資源,而隊(duì)列A的Job仍然會(huì)使用集群一半的資源,結(jié)果就是集群的資源最終在兩個(gè)用戶之間平等的共享。

      相關(guān)參數(shù)的配置:

      (1)yarn.scheduler.fair.allocation.file: “allocation”文件的位置,“allocation”文件是一個(gè)用來(lái)描述queue以及它們的屬性的配置文件。這個(gè)文件必須為格式嚴(yán)格的xml文件。如果為相對(duì)路徑,那么將會(huì)在classpath下查找此文件(conf目錄下)。默認(rèn)值為“fair-scheduler.xml”。
      (2)yarn.scheduler.fair.user-as-default-queue:是否將與allocation有關(guān)的username作為默認(rèn)的queue name,當(dāng)queue name沒(méi)有指定的時(shí)候。如果設(shè)置成false(且沒(méi)有指定queue name) 或者沒(méi)有設(shè)定,所有的jobs將共享“default” queue。默認(rèn)值為true。
      (3)yarn.scheduler.fair.preemption:是否使用“preemption”(優(yōu)先權(quán),搶占),默認(rèn)為fasle,在此版本中此功能為測(cè)試性的。
      (4)yarn.scheduler.fair.assignmultiple:是在允許在一個(gè)心跳中,發(fā)送多個(gè)container分配信息。默認(rèn)值為false。
      (5)yarn.scheduler.fair.max.assign:如果assignmultuple為true,那么在一次心跳中,最多發(fā)送分配container的個(gè)數(shù)。默認(rèn)為-1,無(wú)限制。
      (6)yarn.scheduler.fair.locality.threshold.node:一個(gè)float值,在0~1之間,表示在等待獲取滿足node-local條件的containers時(shí),最多放棄不滿足node-local的container的機(jī)會(huì)次數(shù),放棄的nodes個(gè)數(shù)為集群的大小的比例。默認(rèn)值為-1.0表示不放棄任何調(diào)度的機(jī)會(huì)。
      (7)yarn.scheduler.fair.locality.threashod.rack:同上,滿足rack-local。
      (8)yarn.scheduler.fair.sizebaseweight:是否根據(jù)application的大小(Job的個(gè)數(shù))作為權(quán)重。默認(rèn)為false,如果為true,那么復(fù)雜的application將獲取更多的資源。

      五、總結(jié)

      如果業(yè)務(wù)邏輯比較簡(jiǎn)單或者剛接觸Hadoop的時(shí)候建議使用FIFO調(diào)度器;如果需要控制部分應(yīng)用的優(yōu)先級(jí)同時(shí)又想要充分利用集群資源的情況下,建議使用Capacity調(diào)度器;如果想要多用戶或者多隊(duì)列公平的共享集群資源,那么就選用Fair調(diào)度器。希望大家能夠根據(jù)業(yè)務(wù)所需選擇合適的調(diào)度器。


      本文題目:HadoopYarn調(diào)度器的選擇和使用
      當(dāng)前地址:http://ef60e0e.cn/article/pjodee.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        德兴市| 色达县| 商丘市| 临安市| 青田县| 米林县| 尤溪县| 吉首市| 辽源市| 定陶县| 泉州市| 琼中| 宁明县| 芜湖县| 渭源县| 绥棱县| 朝阳区| 瑞丽市| 巴彦淖尔市| 莱芜市| 黄大仙区| 瑞丽市| 石柱| 万山特区| 楚雄市| 合江县| 旺苍县| 柳河县| 泸州市| 临江市| 浮山县| 攀枝花市| 卢氏县| 庐江县| 鄂伦春自治旗| 雷州市| 绵竹市| 务川| 密云县| 博客| 法库县|