mapreduce yarn内存参数
1、yarn-site.xml 設置
1.1 RM設置
RM的內存資源配置,主要是通過下面的兩個參數進行的(這兩個值是Yarn平臺特性,應在yarn-sit.xml中配置好):?yarn.scheduler.minimum-allocation-mb?
yarn.scheduler.maximum-allocation-mb
說明:單個容器可申請的最小與最大內存,應用在運行申請內存時不能超過最大值,小于最小值則分配最小值,從這個角度看,最小值有點想操作系統中的頁。最小值還有另外一種用途,計算一個節點的最大container數目注:這兩個值一經設定不能動態改變(此處所說的動態改變是指應用運行時)。
1.2 NM設置
NM的內存資源配置,主要是通過下面兩個參數進行的(這兩個值是Yarn平臺特性,應在yarn-sit.xml中配置) :yarn.nodemanager.resource.memory-mb
yarn.nodemanager.vmem-pmem-ratio
說明:每個節點可用的最大內存,RM中的兩個值不應該超過此值。此數值可以用于計算container最大數目,即:用此值除以RM中的最小容器內存。虛擬內存率,是占task所用內存的百分比,默認值為2.1倍;注意:第一個參數是不可修改的,一旦設置,整個運行過程中不可動態修改,且該值的默認大小是8G,即使計算機內存不足8G也會按著8G內存來使用。
2、map-site.xml 設置
2.1 AM設置
AM內存配置相關參數,此處以MapReduce為例進行說明(這兩個值是AM特性,應在mapred-site.xml中配置),如下:mapreduce.map.memory.mb
mapreduce.reduce.memory.mb
說明:這兩個參數指定用于MapReduce的兩個任務(Map and Reduce task)的內存大小,其值應該在RM中的最大最小container之間。如果沒有配置則通過如下簡單公式獲得:
max(MIN_CONTAINER_SIZE, (Total Available RAM) / containers))
一般的reduce應該是map的2倍。注:這兩個值可以在應用啟動時通過參數改變;
2.2 AM JVM設置
AM中其它與內存相關的參數,還有JVM相關的參數,這些參數可以通過,如下選項配置:mapreduce.map.java.opts
mapreduce.reduce.java.opts
說明:這兩個參主要是為需要運行JVM程序(java、scala等)準備的,通過這兩個設置可以向JVM中傳遞參數的,與內存有關的是,-Xmx,-Xms等選項。此數值大小,應該在AM中的map.mb和reduce.mb之間。
3、所有參數
YARN相關:yarn.scheduler.minimum-allocation-mb
yarn.scheduler.maximum-allocation-mb
yarn.nodemanager.vmem-pmem-ratio
yarn.nodemanager.resource.memory.mb
Map相關參數
mapreduce.map.java.opts
mapreduce.map.memory.mb
Reduce相關參數
mapreduce.reduce.java.opts
mapreduce.reduce.memory.mb
注意: 在hadoop2及以上版本中,map和reduce task 是運行在container中的。mapreduce.{map|reduce}.memory.mb被yarn用來設置container的內存大小。如果container的內存超限,會被yarn殺死。在container中,為了執行map和reduce task,yarn會在contaner中啟動一個jvm來執行task任務。mapreduce.{map|reduce}.java.opts用來設置container啟動的jvm參數,通過設置Xmx來設置map 或者reduce task的最大堆內存。理論上,{map|reduce}.java.opts設置的最大堆內存要比{map|reduce}.memory.mb小。例如: hadoop jar <jarName> -Dmapreduce.reduce.memory.mb=4096 -Dmapreduce.map.java.opts=-Xmx3276
4、舉例說明
如下圖:
YARN-site.xml相關:
yarn.scheduler.minimum-allocation-mb ? ?=1024
yarn.scheduler.maximum-allocation-mb ? ?=8192
yarn.nodemanager.vmem-pmem-ratio ? ? ? =2.1
yarn.nodemanager.resource.memory.mb ?=24576
Map-site.xml相關參數
mapreduce.map.java.opts ? ?=Xmx1024m
mapreduce.map.memory.mb ? ?=1536
mapreduce.reduce.java.opts ?=Xmx2560m
mapreduce.reduce.memory.mb ?=3072
map container的內存("mapreduce.map.memory.mb")被設置為1536mb 。am為其申請了2048m的內存,因為am的最小分配(yarn.scheduler.minimum-allocation-mb)是1024.如果map task對內存超過了2048m,nm會kill掉該task。reduce類似。
When a mapreduce job completes you will see several counters dumped at the end of the job.?
?The three memory counters below show how much physical memory was allocated vs virtual memory.?
默認情況下,yarn.nodemanager.vmem-pmem-ratio被設置為2.1,這意味著,每個map或者task任務只能使用2.1倍("mapreduce.reduce.memory.mb") or ("mapreduce.map.memory.mb") 大小的虛擬內存,否則,會被nm殺掉。
例如下面的的報錯信息:
Current usage: 2.1gb of 2.0gb physical memory used; 1.6gb of 3.15gb virtual memory used.?
Killing container.
總結
以上是生活随笔為你收集整理的mapreduce yarn内存参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring框架结构介绍
- 下一篇: Android加载大图片不OutOfMe