Samza YARN执行隔离

2018-08-22 18:15 更新

在共享的分布式环境中运行 Samza 作业时,流处理器可能会对对方的性能产生影响。使用100% 计算机 CPU 的流处理器将减慢计算机上的所有其他流处理器的速度。

YARN 的一个职责是管理资源,使这种情况不会发生。每个 YARN 的节点管理器(NM)都有一大堆“资源”专用于它。如果 YARN 资源管理器(RM)有足够的资源来满足容器的需求,则只允许在 NM 上分配容器。

YARN 目前支持内存和 CPU 的资源管理。

内存

YARN 将自动对其执行的所有容器执行内存限制。所有容器必须在创建时定义最大内存大小。如果与单个 YARN 容器相关联的进程的所有内存使用量的总和超过此最大值,则 YARN 将终止该容器。

Samza 使用 yarn.container.memory.mb 和 yarn.am.container.memory.mb 配置参数支持内存限制。请记住,这只是 YARN 将允许 SamzaContainer 或 ApplicationMaster 拥有的内存量。当使用 Java(默认为 -Xmx160M)时,仍然需要使用 task.opts 来适当地配置堆设置。有关详细信息,请参阅配置打包页面。

CPU

YARN 具有虚拟核心的概念。每个 NM 被分配了总数量的虚拟内核(默认为32)。当发出容器请求时,它必须指定需要多少虚拟内核。YARN RM 将仅将容器分配给具有足够虚拟内核以满足请求的 NM。

CGroups

与内存不同,YARN 可以强制执行(通过查看 / proc文件夹),YARN 无法强制执行 CPU 隔离,因为这必须在 Linux 内核级完成。YARN 的一个有趣的新功能是支持 Linux CGroups。CGroups 是一种控制 Linux 内核级进程利用率的方法。

如果 YARN 设置为使用 CGroups,则 YARN 将保证容器至少获得所需的 CPU 数量。目前,YARN 将为您提供更多的 CPU,如果可用。有关执行“最多”CPU使用情况的详细信息,请参阅 YARN-810。

有关使用 CGroup 设置 YARN 的详细信息,请参阅此博文。

主机关联和 YARN   >>

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号