<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-314  評論-209  文章-0  trackbacks-0
    關(guān)于mapreduce程序運行在yarn上時內(nèi)存的分配一直是一個讓我蒙圈的事情,單獨查任何一個資料都不能很好的理解透徹。于是,最近查了大量的資料,綜合各種解釋,終于理解到了一個比較清晰的程度,在這里將理解的東西做一個簡單的記錄,以備忘卻。 首先,先將關(guān)于mapreduce和yarn關(guān)于內(nèi)存分配的參數(shù)粘貼上: yarn.scheduler.minimum-allocation-mb yarn.scheduler.maximum-allocation-mb yarn.nodemanager.resource.memory-mb yarn.nodemanager.vmem-pmem-ratio yarn.scheduler.increment-allocation-mb mapreduce.map.memory.mb mapreduce.reduce.memory.mb mapreduce.map.java.opts mapreduce.reduce.java.opts 個人認(rèn)為,針對mapreduce任務(wù),這些參數(shù)只有放在一起學(xué)習(xí)才能真正理解,如果單獨考慮,理解不清晰。下面開始詳細講解。 一、理解參數(shù)yarn.nodemanager.resource.memory-mb,yarn.nodemanager.vmem-pmem-ratio yarn.nodemanager.resource.memory-mb很簡單,就是你的這臺服務(wù)器節(jié)點上準(zhǔn)備分給yarn的內(nèi)存; yarn.nodemanager.vmem-pmem-ratio網(wǎng)上解釋都是"每使用1MB物理內(nèi)存,最多可用的虛擬內(nèi)存數(shù),默認(rèn)2.1",但是目前我還是不太理解其作用是什么,有知道的朋友希望能詳細解釋下。 二、理解參數(shù)yarn.scheduler.minimum-allocation-mb和yarn.scheduler.maximum-allocation-mb 都知道,在yarn上運行程序時每個task都是在獨立的Container中運行的,單個Container可以申請的最小和最大內(nèi)存的限制就是這兩個參數(shù),注意,并不是這兩個參數(shù)決定單個Container申請內(nèi)存的大小,而僅僅是限制的一個范圍。 三、理解yarn的內(nèi)存規(guī)整化因子和內(nèi)存規(guī)整化算法 先不說和哪個參數(shù)有關(guān),單純理解這一概念。舉例: 假如規(guī)整化因子b=512M,上述講的參數(shù)yarn.scheduler.minimum-allocation-mb為1024,yarn.scheduler.maximum-allocation-mb為8096,然后我打算給單個map任務(wù)申請內(nèi)存資源(mapreduce.map.memory.mb): 申請的資源為a=1000M時,實際得到的Container內(nèi)存大小為1024M(小于yarn.scheduler.minimum-allocation-mb的話自動設(shè)置為yarn.scheduler.minimum-allocation-mb); 申請的資源為a=1500M時,實際得到的Container內(nèi)存大小為1536M,計算公式為:ceiling(a/b)*b,即ceiling(a/b)=ceiling(1500/512)=3,3*512=1536。此處假如b=1024,則Container實際內(nèi)存大小為2048M 也就是說Container實際內(nèi)存大小最小為yarn.scheduler.minimum-allocation-mb值,然后增加時的最小增加量為規(guī)整化因子b,最大不超過yarn.scheduler.maximum-allocation-mb 四、理解mapreduce.map.memory.mb、mapreduce.reduce.memory.mb "三"中提到的"打算給單個map任務(wù)申請內(nèi)存資源"也就是a,其實就是指的"mapreduce.map.memory.mb"或"mapreduce.reduce.memory.mb",注意其值不要超過yarn.scheduler.maximum-allocation-mb 五、理解mapreduce.map.java.opts、mapreduce.reduce.java.opts 以map任務(wù)為例,Container其實就是在執(zhí)行一個腳本文件,而腳本文件中,會執(zhí)行一個 Java 的子進程,這個子進程就是真正的 Map Task,mapreduce.map.java.opts 其實就是啟動 JVM 虛擬機時,傳遞給虛擬機的啟動參數(shù),而默認(rèn)值 -Xmx200m 表示這個 Java 程序可以使用的最大堆內(nèi)存數(shù),一旦超過這個大小,JVM 就會拋出 Out of Memory 異常,并終止進程。而 mapreduce.map.memory.mb 設(shè)置的是 Container 的內(nèi)存上限,這個參數(shù)由 NodeManager 讀取并進行控制,當(dāng) Container 的內(nèi)存大小超過了這個參數(shù)值,NodeManager 會負(fù)責(zé) kill 掉 Container。在后面分析 yarn.nodemanager.vmem-pmem-ratio 這個參數(shù)的時候,會講解 NodeManager 監(jiān)控 Container 內(nèi)存(包括虛擬內(nèi)存和物理內(nèi)存)及 kill 掉 Container 的過程。 也就是說,mapreduce.map.java.opts一定要小于mapreduce.map.memory.mb mapreduce.reduce.java.opts同mapreduce.map.java.opts一樣的道理。 六、理解規(guī)整化因子指的是哪個參數(shù) "三"中提到的規(guī)整化因子也就是b,具體指的是哪個參數(shù)和yarn使用的調(diào)度器有關(guān),一共有三種調(diào)度器:capacity scheduler(默認(rèn)調(diào)度器)、fair scheduler和fifo scheduler 當(dāng)使用capacity scheduler或者fifo scheduler時,規(guī)整化因子指的就是參數(shù)yarn.scheduler.minimum-allocation-mb,不能單獨配置,即yarn.scheduler.increment-allocation-mb無作用; 當(dāng)使用fair scheduler時,規(guī)整化因子指的是參數(shù)yarn.scheduler.increment-allocation-mb 至此,關(guān)于yarn和mapreduce的任務(wù)內(nèi)存配置問題講完了,這也是我目前理解的層次。
    posted on 2017-08-30 21:05 xzc 閱讀(313) 評論(0)  編輯  收藏 所屬分類: hadoop
    主站蜘蛛池模板: **一级毛片免费完整视| 免费被黄网站在观看| 亚洲性线免费观看视频成熟| 日韩电影免费在线观看视频| 久久er国产精品免费观看8| 亚洲网站在线观看| 日本黄页网站免费| 中文字幕日本人妻久久久免费| 亚洲福利一区二区| 亚洲精品动漫人成3d在线| 3344免费播放观看视频| 久久久久久亚洲精品无码| 亚洲精品无码高潮喷水在线| 亚洲电影免费观看| sss在线观看免费高清| 亚洲乱码中文论理电影| 337p日本欧洲亚洲大胆裸体艺术| 在线精品一卡乱码免费| 久久精品免费网站网| 亚洲中文无码mv| 亚洲AV乱码一区二区三区林ゆな| 成人毛片免费播放| 久久免费国产视频| 国产尤物在线视精品在亚洲| 亚洲春色在线观看| 亚洲色无码专区在线观看| 日本视频免费在线| 无人在线直播免费观看| 精品一区二区三区高清免费观看| 亚洲国产成人无码AV在线| 一级做受视频免费是看美女| 亚洲国色天香视频| 亚洲av无码不卡一区二区三区| 国产男女猛烈无遮挡免费视频 | 亚洲男人第一无码aⅴ网站| 国产精品久久永久免费| a毛片全部免费播放| 日韩少妇内射免费播放| 亚洲经典千人经典日产| 亚洲av一本岛在线播放| 亚洲视频.com|