用户给任务设置的内存量为1000MB,为何最终分配的内存却是1024MB?

参与9

2同行回答

youki2008youki2008  系统架构师 , DDT
你这里描述的使用场景是k8s?还是Openstack或其他平台?显示全部

你这里描述的使用场景是k8s?还是Openstack或其他平台?

收起
互联网服务 · 2020-04-25
浏览884
呱呱爱吃瓜呱呱爱吃瓜  数据仓库工程师 , 银行
为了易于管理资源和调度资源, Hadoop YARN 内置了资源规整化算法,它规定了最小可申请资源量、最大可申请资源量和资源规整化因子,如果应用程序申请的资源量小于最小可申请资源量,则 YARN 会将其大小改为最小可申请量,也就是说,应用程序获得资源不会小于自己申请的资源,但也不一...显示全部

为了易于管理资源和调度资源, Hadoop YARN 内置了资源规整化算法,它规定了最小可申请资源量、最大可申请资源量和资源规整化因子,如果应用程序申请的资源量小于最小可申请资源量,则 YARN 会将其大小改为最小可申请量,也就是说,应用程序获得资源不会小于自己申请的资源,但也不一定相等;如果应用程序申请的资源量大于最大可申请资源量,则会抛出异常,无法申请成功;规整化因子是用来规整化应用程序资源的,应用程序申请的资源如果不是该因子的整数倍,则将被修改为最小的整数倍对应的值,公式为 ceil(a/b)*b ,其中 a 是应用程序申请的资源, b 为规整化因子。

以上介绍的参数需在 yarn-site.xml 中设置,相关参数如下:

yarn.scheduler.minimum-allocation-mb :最小可申请内存量,默认是 1024

yarn.scheduler.minimum-allocation-vcores :最小可申请 CPU 数,默认是 1

yarn.scheduler.maximum-allocation-mb :最大可申请内存量,默认是 8096

yarn.scheduler.maximum-allocation-vcores :最大可申请 CPU 数,默认是 4

对于规整化因子,不同调度器不同,具体如下:

FIFO 和 Capacity Scheduler ,规整化因子等于最小可申请资源量,不可单独配置。

Fair Scheduler :规整化因子通过参数 yarn.scheduler.increment-allocation-mb 和 yarn.scheduler.increment-allocation-vcores 设置,默认是 1024 和 1 。

通过以上介绍可知,应用程序申请到资源量可能大于资源申请的资源量,比如 YARN 的最小可申请资源内存量为 1024 ,规整因子是 1024 ,如果一个应用程序申请 1500 内存,则会得到 2048 内存,如果规整因子是 512 ,则得到 1536 内存。

收起
银行 · 2020-02-07
浏览1061

提问者

Tamic
数据库架构师某保险

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2020-02-06
  • 关注会员:3 人
  • 问题浏览:2168
  • 最近回答:2020-04-25
  • X社区推广