yarn框架原理見:
大資料處理離不開hadoop集群的部署和管理,對於本來硬體資源就不多的創業團隊來說,做好資源的共享和隔離是很有必要的,畢竟不像bat那麼豪,那麼怎麼樣能把有限的節點同時分享給多組使用者使用而且互不影響呢,我們來研究一下yarn多佇列做資源隔離
使用過第一代hadoop的同學應該比較熟悉mapred.job.map.capacity/mapred.job.reduce.capacity這個引數,無論是map還是reduce都可以配置capacity(也就是併發數),表示同時可以有多少個map(或reduce)執行,通過這個引數可以限制乙個任務同時占用的資源(節點)數,這樣不至於影響其他任務的執行。
在這裡有人會問:我把任務的priority設定成very low不就行了嗎?其實這樣在某些場景下不能解決全部問題,因為假如你乙個very low的任務剛啟動時沒有其他人的任務,那麼會先占用所有節點,如果你的每乙個task執行時間都是1天,那麼其他任務就算優先順序再高也只能傻等一天,所以才有必要做資源隔離
第二代hadoop因為使用yarn做資源管理,沒有了槽位的概念,所以就沒有了capacity。但是在yarn中專門有了capacityscheduler這個元件。這是乙個可插裝的排程器,它的用途就是對多使用者實現共享大集群並對每個使用者資源占用做控制
對於很豪的公司來說,每個使用者(團隊)自己有乙個hadoop集群,這樣可以提高自身的穩定性和資源**,但是確降低了資源利用率,因為很多集群大多數時間都是空閒的。
capacityscheduler能實現這樣的功能:
每個組固定享有集群裡的一部分資源,保證低保,同時如果這個固定的資源空閒,那麼可以提供給其他組來搶占,但是一旦這些資源的固定使用者要用,那麼立即釋放給它使用。這種機制在實現上是通過queue(佇列)來實現的。當然capacityscheduler還支援子佇列(sub-queue),
我在《教你成為全棧工程師(full stack developer) 四十五-一文讀懂hadoop、hbase、hive、spark分布式系統架構》中詳細描述了整體一套hadoop搭建的方法。那麼在搭建完成後我們發現對於資源分配方面,yarn的預設配置是這樣的
也就是有乙個預設的佇列
事實上,是否使用capacityscheduler元件是可以配置的,但是預設配置就是這個capacityscheduler,如果想顯式配置需要修改conf/yarn-site.xml內容如下:
這裡的配置項格式應該是yarn.scheduler.capacity..queues,也就是這裡的root是乙個queue-path,因為這裡配置了value是default,所以root這個queue-path只有乙個佇列叫做default,那麼有關default的具體配置都是形如下的配置項:yarn.scheduler.capacity.root.queuesname>
defaultvalue>
the queues at the this level (root is the root queue).
description>
property>
yarn.scheduler.capacity.root.default.capacity:乙個百分比的值,表示占用整個集群的百分之多少比例的資源,這個queue-path下所有的capacity之和是100
yarn.scheduler.capacity.root.default.user-limit-factor:每個使用者的低保百分比,比如設定為1,則表示無論有多少使用者在跑任務,每個使用者占用資源最低不會少於1%的資源
yarn.scheduler.capacity.root.default.maximum-capacity:彈性設定,最大時占用多少比例資源
yarn.scheduler.capacity.root.default.state:佇列狀態,可以是running或stopped
yarn.scheduler.capacity.root.default.acl_administer_queue:哪些使用者或使用者組可以管理佇列
當然我們可以繼續以root.default為queue-path建立他的子佇列,比如:
yarn rmadmin -refreshqueues生效後發現yarn佇列情況類似下面的樣子(配置了兩個佇列:research和default):
如果希望自己的任務排程到research佇列,只需在啟動任務時指定:mapreduce.job.queuename引數為research即可
Yarn資源排程
由於yarn良好的相容性和擴充套件性,目前可以支援大部分資料引擎,所以了解yarn的資源排程原理很有必要,yarn主要由四個重要角色組成 yarn排程主要分為8個步驟如上圖所示 1.有yarnclient提交program資訊打拼resourcemanager,包括 應用 和應用需要的一切引數和環境...
Yarn資源排程
yarn的介紹 yarn是hadoop集群當中的資源管理系統模組,從hadoop2.0開始引入yarn模組,yarn可為各類計算框架提供資源的管理和排程,主要用於管理集群當中的資源 主要是伺服器的各種硬體資源,包括cpu,記憶體,磁碟,網路io等 以及排程執行在yarn上面的各種任務。yarn核心出...
yarn 資源排程
目錄關於yarn常用引數設定 yarn我們都知道主要是用於做資源排程,任務分配等功能的,那麼在hadoop當中,究竟使用什麼演算法來進行任務排程就需要我們關注了,hadoop支援好幾種任務的排程方式,不同的場景需要使用不同的任務排程器.把任務按提交的順序排成乙個佇列,這是乙個先進先出佇列,在進行資源...