YARN资源管理

资源管理container容器配置详解

1.开题引文

yarn是hadoop2.x引入的概念,hadoop1.x这个工作是MapReduce做的,在2.x引入了yarn,yarn是用来做资源管理和任务调度,本文详细介绍了yarn在生产上如何资源管理,即yarn的container容器.

相关介绍

  • 内存:电脑cpu处理数据是不能直接从硬盘调用的,就好像我们的大脑从神经元之中读取记忆要通过长长的神经,内存条就承接啦电脑cpu于硬盘之间的数据交换所以内存条的好坏也很大程度决定了电脑处理速度的快慢。

  • 显卡:这个部件相信大部分游戏玩家都相当了解,显卡就是负责将电脑的信号转变成图像显示,打游戏主要就是看画面,所以显卡的好坏直接决定啦一台电脑的游戏性能。

  • CPU:中央处理器,cpu是电脑最主要的部件,当然也是最贵的部分!cpu对于我们人体来说就好像我们的大脑,它是电脑处理各种文件程序的核心部件,它的快慢直接决定啦电脑的运行的快慢。

2. yarn的container容器是什么?

yarn的container容器是yarn虚拟出来的一个东西,属于虚拟化的,它是由memory+vcore组成,是专门用来运行任务的
vcore:yarn虚拟化出来的东西,一个物理cpu(电脑真实cpu)=2个vcore,可以在yarn的参数里面设置
这个概念是yarn自己发明创建的,自己引入,设计的初衷是考虑不同机器,不同服务器cpu性能不一样,每个cpu计算能力不一样,比如某个物理cpu是另外一个物理cpu的两倍计算能力,
这时通过设计第一个计算能力强的物理cpu虚拟一点core给这个能力不行的cpu,弥补差异,相当于计算时候,把这个牛皮的cpu划分一点虚拟core出来,帮助这个不牛皮cpu干点活,但是呢,这个是理想
实际情况下,yarn并没有实现上面这样,变成大家都是用虚拟core,默认值一般都是2,就是一个物理cpu的core对应2个虚拟的core,一般不会修改这个参数配置。

2.1 生产上面参数设置

服务器,内存128G,16物理core
首先装完系统之后,linux系统会占用1G左右内存,而且生产上面你一定要预留大概20%的内存左右,这20%内存包括这1G内存
为什么要预留20%内存呢?

  • 防止出现OOM-KILL机制:oom-kill机制简单可以理解成比如内存128G,你一段时间运行任务内存超出这个128G,linux就会自动帮你kill掉一些任务,减少内存的消耗,从而实现对内存条的保护,oom-kill机制可以关掉,但是不建议关闭,因为这个linux系统对内存的保护
  • 防止linux系统夯住
  • 给未来部署新的软件留出空余
    也就是128*20%约等于26G
    还剩下102G可以用来操作

2.3 DataNode和nodemanager进程本身占用内存

生产上面DataNode自己本身配置内存2G左右就可以了,这里说的是DataNode进程自己本身需要的内存是2G左右,我刚来公司,我同事他们配置的DataNode的内存有的给他6G,其实没有用,因为我在生产上面已经多次观察过,DataNode的这个进程耗费也就在1G多一点的进程,所以2G足够,因为DataNode耗费的内存收到他的磁盘IO影响,他的磁盘IO速度是有限的,所以你给他再多的内存没有意义
生产上面nodemanager进程一般给他4G左右就可以了,
所以还剩下102-2-4=96G内存,这个96G内存就是我们的container容器的内存了,也就是干活的内存

2.4 容器container的内存相关参数配置

上面计算完了剩余可用内存是96G

  • yarn.nodemanager.resource.memory-mb:指的是yarn的所有container容器能够使用的总内存
  • yarn.scheduler.minimum-allocation-mb:指的是单个container容器能够分配的最小内存
  • yarn.scheduler.maximum-allocation-mb:指的是单个container容器能够分配的最大内存

2.5 容器container的cpu相关参数配置

  • yarn.nodemanager.resource.pcores-vcores-multiplier:指的是虚拟cpu和物理cpu之间的比例,默认一个物理cpu=2个虚拟cpu
  • yarn.nodemanager.resource.cpu-vcores:指的是最大虚拟CPU的使用数量,物理16core=32vcore
  • yarn.scheduler.minimum-allocation-vcores:指的是单个container容器能够占用最小vcore数量
  • yarn.scheduler.maximum-allocation-vcores:指的是单个container容器能够占用的做大vcore数量

2.6 极限平衡值下参数设置

上面机器剩余的102G和16核为例

  • vcore数量配置:
yarn.nodemanager.resource.cpu-vcores 32
yarn.scheduler.minimum-allocation-vcores 1
yarn.scheduler.maximum-allocation-vcores 4

上面三个参数设置完成之后,意思是16核都用来做vcore,单个container容器能够使用的最小vcore数量=1,最大vcore=4,即容器的数量可以使8-32个.

  • 内存大小配置
    因为上面vcore数量我们已经按照官方权威测试配置,内存也是作出相关配置,也保障最少的容器数量也是8个,即96/8=12,即但个容器配置的最大内存数量为12G
yarn.nodemanager.resource.memory-mb 96G
yarn.scheduler.minimum-allocation-mb 1G
yarn.scheduler.maximum-allocation-mb 12G

极限情况下,是只有8个container容器
但是实际情况下,单个container容器数量12G有点大了,你想想你的电脑内存才多大,我一般生产上面设置8G就够了,不过设置12G也是没有任何毛病的.

2.7 参数补充

yarn.nodemanager.pmem-check-enabled true
生产设置为true pmem指的是默认检查物理内存,容器使用的物理内存不能超过我们限定的内存大小,因为我们上面设置了所有容器能够使用的最大内存数量,超出这个内存限制,任务就会被kil掉.比如yarn查看资源还剩下2个G能用,但是任务申请了3个G内存,肯定超出了
yarn.nodemanager.vmem-check-enabled true
生产设置为true vmem指的是默认检查虚拟内存,容器使用的虚拟内存不能超过我们设置的虚拟内存大小
yarn.nodemanager.vmem-pmem-ratio 2.1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值