Yarn與Mr

yarn應用:node

    分佈式計算框架(Mapreduce、spark等)做爲yarn應用運行在集羣計算層(yarn)和存儲層(hdfs和hbase上)。app

    

Yarn的運行機制:框架

    

(1) 客戶端練習資源管理器,請求他運行一個application master。分佈式

(2) 資源管理器找到一個可以在容器中啓動application master 的節點管理器。oop

(3)根據application master 本身來肯定的,若是所需資源少或者代碼給定爲一個,那麼就通過簡單的計算將結果反饋給客戶端:若是所需資源大,或者須要節點運算,那麼就向資源管理器申請更多的容器。spa

(4)進行分佈式計算。當程序運行完成時,ApplicationMaster從Resourcemanager註銷其容器,執行週期就完成了。線程

yarn中的調度:blog

在yarn中有三種調度器能夠選擇:FIFO Scheduler,Capacity Scheduler,Fair Scheduler。隊列

FIFO Scheduler 把應用按提交的順序排成一個隊列,這是一個先進先出隊列,在進行資源分配的時候,先給隊列中最頭上的應用進行分配資源,待最頭上的應用需求知足後再給下一個分配,以此類推. FIFO Scheduler 是最簡單的也是最容易理解的調度器,也不須要任何配置,但它並不適用於共享集羣。大的應用可能會佔用全部集羣資源,這就致使其餘應用被阻塞。進程

    而對於Capacity調度器,有一個專門的隊列用來運行小任務,可是爲小任務專門設置一個隊列會預先佔用必定的集羣資源,這就致使大任務的執行時間會落後於使用FIFO 調度器時的時間。

    在Fair調度器中,咱們不須要預先佔用必定的系統資源,Fair調度器回爲全部運行的job動態的調整系統資源。以下圖所示:當第一個大job提交時,只有這一個job在運行,此時它得到了全部集羣資源;當第二個小任務提交後,Fair調度器會分配通常資源給這個小任務,讓這兩個小任務公平的共享集羣資源。須要注意的是,在下圖fair調度器中,從第二個任務提交得到資源會有必定的延遲,由於它須要等待第一個任務釋放佔用的Container。小任務執行完成後也會釋放本身佔用的資源,大任務又得到了所有的系統資源。最終的效果就是Fair調度器即獲得了高的資源利用率又能保證小任務及時完成。

    搶佔當一個job提交到一個繁忙集羣中的空隊列時,job並不會立刻執行,而是阻塞直到正在運行的job釋放系統資源,爲了使提交job的執行時間更具預測性(能夠設置等待的超時時間),Fair調度器支持搶佔,搶佔就是容許調度器殺掉佔用超過其應占份額資源隊列的containers,這些cintainers資源即可被分配到應該享有這些份額資源的隊列中,須要注意搶佔會下降集羣的執行效率,由於被終止的containers須要被從新執行。

hadoop_yarn內存調優

(1) yarn.nodemanager.resource.memory-mb

    表示在該節點上yarn可以使用的物理內存數量,默認是8192(MB),注意,若是你的節點內存資源不夠8GB,則須要減少這個值,而yarn不會只能的檢測節點的物理內存總量。

(2)yarn.nodemanager.vmem-pmem-ratio

    任務每使用1mb物理內存,最多可以使用虛擬內存,默認是2.1

(3)yarn.nodemanager.pmem-check-enabled

    是否啓動一個線程檢查每一個任務正使用的物理內存量,若是任務超出分配值,則直接將其殺掉,默認是true。

(4)yarn.nodemanager.vmem-check-enabled

    是否啓動一個線程檢查每一個任務正使用的虛擬內存量,若是任務超出分配值,則直接將其殺掉,默認是true。

(5)yarn.scheduler.minimum-allocation-mb

單個任務可申請的最少物理內存量,默認是1024(MB),若是一個任務申請的物理內存量少於該值,則該對應的值改成這個數。

(6)yarn.scheduler.maximum-allocation-mb

單個任務可申請的最多物理內存量,默認是8192(MB).

(7)小總結:計算節點的內存佔用量。

默認狀況下,一個同時運行了 namenode,secondarynamenode 和 nodemanager 的主節點,各自使用1000M 內存,因此總計使用3000M。

默認狀況下,一個從節點運行了以下守護進程:

1個 datanode:默認佔用1000M內存.

1個 tasktracker:默認佔用1000M內存.

最多2個map任務:2*200M=400M.

最多2個reduce任務:2*200M=400Ma

相關文章
相關標籤/搜索