分享

yarn资源设置的一些疑问

Joker 发表于 2015-4-30 11:46:16 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 16147
最近总是内存不足导致Task OOM,就寻思设置下内存,但是在配置时候有个疑问

我设置了yarn.scheduler.minimum-allocation-mb和yarn.scheduler.maximum-allocation-mb两参数后,系统只按照前者分配Container可使用的内存,当使用的内存量超过该最小值但不大于这个最大值的时候就报OOM的错误呢?【这是引用一段网友的话】

回答是
这两个参数不是你说的这个意思,这两个参数是管理员用来设置用户能够设置的每个任务可申请的最小和最大内存资源。具体每个任务到底申请多少,由各个应用程序单独设置,如果是mapreduce程序,可以map task申请的资源可通过mapreduce.map.memory.mb指定,reduce task的资源可通过mapreduce.reduce.memory.mb指定,这两个参数最大不能超过yarn.scheduler.maximum-allocation-mb。

就是不是特明白我设置了yarn.scheduler.minimum-allocation-mb和yarn.scheduler.maximum-allocation-mb作用,因为上面说
mapreduce.map.memory.mb通过这来设置map/reduce的内存

那么yarn.scheduler.minimum-allocation-mb和yarn.scheduler.maximum-allocation-mb是负责给那些task分配和管理

pig和hive都是M/R程序



已有(4)人评论

跳转到指定楼层
bioger_hit 发表于 2015-4-30 12:04:51

yarn.scheduler.minimum-allocation-mb和yarn.scheduler.maximum-allocation-mb是负责给那些task分配和管理只要是申请资源的任务,应该都管,但是只限于mapreduce

对于hive、pig,他们应该有自己的配置文件来限制。楼主可以尝试在hive和pig中来限制他们申请的内存
回复

使用道具 举报

Joker 发表于 2015-4-30 12:25:27
bioger_hit 发表于 2015-4-30 12:04
yarn.scheduler.minimum-allocation-mb和yarn.scheduler.maximum-allocation-mb是负责给那些task分配和管 ...

yarn.scheduler.minimum-allocation-mb和yarn.scheduler.maximum-allocation-mb只是为MapReduce Task申请资源,一个容器包括了CPU,内存等
设置mapreduce.map.memory.mb通过这来设置map/reduce的内存,按照这个大小决定Task内存,

那这样的话,就是Map Task或者Reduce Task阶段,可以按照设置的
mapreduce.map.memory.mb内存进行运行任务,超过了就会出现OOM问题

那么设置yarn.scheduler.minimum-allocation-mb和yarn.scheduler.maximum-allocation-mb就没多大意思了?

理解不对还请指正


回复

使用道具 举报

arsenduan 发表于 2015-4-30 12:32:44
Joker 发表于 2015-4-30 12:25
yarn.scheduler.minimum-allocation-mb和yarn.scheduler.maximum-allocation-mb只是为MapReduce Task申请 ...



个人理解:
yarn.scheduler.minimum-allocation-mb和yarn.scheduler.maximum-allocation-mb
是资源池,比如最大5G
每个mapreduce申请1G,那么最多跑5个mapreduce.
如果还有就得排队。
所以如果mapreduce超过1G就报错oom了,因为超出了它的设置
回复

使用道具 举报

Joker 发表于 2015-4-30 12:58:47
arsenduan 发表于 2015-4-30 12:32
个人理解:
yarn.scheduler.minimum-allocation-mb和yarn.scheduler.maximum-allocation-mb
是资源 ...

赞同。

这样的话设置了mapreduce.map.memory.mb运行task还是从yarn.scheduler.minimum-allocation-mb和yarn.scheduler.maximum-allocation-mb
这里面抽取内存大小,但是抽取多少按照
mapreduce.map.memory.mb这里设置的内存大小,如果你task运行任务大于了也就会出现OOM。

所以mapreduce.map.memory.mb或mapreduce.reduce.memory.mb不能大于yarn.scheduler.minimum-allocation-mb和yarn.scheduler.maximum-allocation-mb 设置的值
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条