中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Yarn中JVM重用功能uber怎么用

發布時間:2021-12-09 09:20:10 來源:億速云 閱讀:235 作者:小新 欄目:云計算

這篇文章主要介紹了Yarn中JVM重用功能uber怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

理解一下Container:容器中封裝了機器資源,如內存,CPU, 磁盤,網絡等,每個任務(Task)會被分配一個容器,該任務只能在該容器中執行,并使用該容器封裝的資源。

一個應用程序所需的Container分為兩大類,如下:

(1) 運行ApplicationMaster的Container:這是由ResourceManager(向內部的資源調度器)申請和啟動的,用戶提交應用程序時,可指定唯一的ApplicationMaster所需的資源;

(2) 運行各類任務的Container:這是由ApplicationMaster向ResourceManager申請的,并由ApplicationMaster與NodeManager通信以啟動之。

以上兩類Container可能在任意節點上,它們的位置通常而言是隨機的,即ApplicationMaster可能與它管理的任務運行在一個節點上。

Jvm重用:


首先,簡單回顧一下Hadoop 1.x中的JVM重用功能:用戶可以通過更改配置,來指定TaskTracker在同一個JVM里面最多可以累積執行的Task的數量(默認是1)。這樣的好處是減少JVM啟動、退出的次數,從而達到提高任務執行效率的目的。 配置的方法也很簡單:通過設置mapred-site.xml里面參數mapred.job.reuse.jvm.num.tasks的值。該值默認是1,意味著TaskTracker會為每一個Map任務或Reduce任務都啟動一個JVM,當任務執行完后再退出該JVM。依次類推,如果該值設置為3,TaskTracker則會在同一個JVM里面最多依次執行3個Task,然后才會退出該JVM。

在 Yarn(Hadoop MapReduce v2)里面,不再有參數mapred.job.reuse.jvm.num.tasks,但它也有類似JVM Reuse的功能——uber。據Arun的說法,啟用該功能能夠讓一些任務的執行效率提高2到3倍(“we've observed 2x-3x speedup for some jobs”)。不過,由于Yarn的結構已經大不同于MapReduce v1中JobTracker/TaskTracker的結構,因此uber的原理和配置都和之前的JVM重用機制大不相同。

1) uber的原理:

Yarn的默認配置會禁用uber組件,即不允許JVM重用。我們先看看在這種情況下,Yarn是如何執行一個MapReduce job的。首先,Resource Manager里的Application Manager會為每一個application(比如一個用戶提交的MapReduce Job)在NodeManager里面申請一個container,然后在該container里面啟動一個Application Master。container在Yarn中是分配資源的容器(內存、cpu、硬盤等),它啟動時便會相應啟動一個JVM。此時,Application Master便陸續為application包含的每一個task(一個Map task或Reduce task)向Resource Manager申請一個container。等每得到一個container后,便要求該container所屬的NodeManager將此container啟動,然后就在這個container里面執行相應的task。等這個task執行完后,這個container便會被NodeManager收回,而container所擁有的JVM也相應地被退出。在這種情況下,可以看出每一個JVM僅會執行一Task, JVM并未被重用。

用戶可以通過啟用uber組件來允許JVM重用——即在同一個container里面依次執行多個task。在yarn-site.xml文件中,改變一下幾個參數的配置即可啟用uber的方法:

參數| 默認值 | 描述

- mapreduce.job.ubertask.enable | (false) | 是否啟用uber功能。如果啟用了該功能,則會將一個“小的application”的所有子task在同一個JVM里面執行,達到JVM重用的目的。這個JVM便是負責該application的ApplicationMaster所用的JVM(運行在其container里)。那具體什么樣的application算是“小的application"呢?下面幾個參數便是用來定義何謂一個“小的application"

- mapreduce.job.ubertask.maxmaps | 9 | map任務數的閥值,如果一個application包含的map數小于該值的定義,那么該application就會被認為是一個小的application

- mapreduce.job.ubertask.maxreduces | 1 | reduce任務數的閥值,如果一個application包含的reduce數小于該值的定義,那么該application就會被認為是一個小的application。不過目前Yarn不支持該值大于1的情況“CURRENTLY THE CODE CANNOT SUPPORT MORE THAN ONE REDUCE”

- mapreduce.job.ubertask.maxbytes | | application的輸入大小的閥值。默認為dfs.block.size的值。當實際的輸入大小部超過該值的設定,便會認為該application為一個小的application。

最后,我們來看當uber功能被啟用的時候,Yarn是如何執行一個application的。首先,Resource Manager里的Application Manager會為每一個application在NodeManager里面申請一個container,然后在該container里面啟動一個Application Master。containe啟動時便會相應啟動一個JVM。此時,如果uber功能被啟用,并且該application被認為是一個“小的application”,那么Application Master便會將該application包含的每一個task依次在這個container里的JVM里順序執行,直到所有task被執行完("WIth 'uber' mode enabled, you'll run everything within the container of the AM itself")。這樣Application Master便不用再為每一個task向Resource Manager去申請一個單獨的container,最終達到了 JVM重用(資源重用)的目的。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Yarn中JVM重用功能uber怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

清涧县| 江孜县| 方正县| 唐河县| 如东县| 平塘县| 丘北县| 平利县| 嵩明县| 增城市| 忻城县| 大渡口区| 沽源县| 泗阳县| 凤山市| 红安县| 阳曲县| 株洲市| 视频| 文登市| 库车县| 星子县| 卢龙县| 邢台县| 柳河县| 吉首市| 即墨市| 桑日县| 玛沁县| 贵阳市| 永康市| 兰溪市| 北碚区| 福安市| 嘉祥县| 新密市| 肃宁县| 镇巴县| 大化| 庆安县| 舞钢市|