Samza YARN執(zhí)行隔離

2018-08-22 18:15 更新

在共享的分布式環(huán)境中運(yùn)行 Samza 作業(yè)時(shí),流處理器可能會(huì)對(duì)對(duì)方的性能產(chǎn)生影響。使用100% 計(jì)算機(jī) CPU 的流處理器將減慢計(jì)算機(jī)上的所有其他流處理器的速度。

YARN 的一個(gè)職責(zé)是管理資源,使這種情況不會(huì)發(fā)生。每個(gè) YARN 的節(jié)點(diǎn)管理器(NM)都有一大堆“資源”專用于它。如果 YARN 資源管理器(RM)有足夠的資源來(lái)滿足容器的需求,則只允許在 NM 上分配容器。

YARN 目前支持內(nèi)存和 CPU 的資源管理。

內(nèi)存

YARN 將自動(dòng)對(duì)其執(zhí)行的所有容器執(zhí)行內(nèi)存限制。所有容器必須在創(chuàng)建時(shí)定義最大內(nèi)存大小。如果與單個(gè) YARN 容器相關(guān)聯(lián)的進(jìn)程的所有內(nèi)存使用量的總和超過(guò)此最大值,則 YARN 將終止該容器。

Samza 使用 yarn.container.memory.mb 和 yarn.am.container.memory.mb 配置參數(shù)支持內(nèi)存限制。請(qǐng)記住,這只是 YARN 將允許 SamzaContainer 或 ApplicationMaster 擁有的內(nèi)存量。當(dāng)使用 Java(默認(rèn)為 -Xmx160M)時(shí),仍然需要使用 task.opts 來(lái)適當(dāng)?shù)嘏渲枚言O(shè)置。有關(guān)詳細(xì)信息,請(qǐng)參閱配置打包頁(yè)面。

CPU

YARN 具有虛擬核心的概念。每個(gè) NM 被分配了總數(shù)量的虛擬內(nèi)核(默認(rèn)為32)。當(dāng)發(fā)出容器請(qǐng)求時(shí),它必須指定需要多少虛擬內(nèi)核。YARN RM 將僅將容器分配給具有足夠虛擬內(nèi)核以滿足請(qǐng)求的 NM。

CGroups

與內(nèi)存不同,YARN 可以強(qiáng)制執(zhí)行(通過(guò)查看 / proc文件夾),YARN 無(wú)法強(qiáng)制執(zhí)行 CPU 隔離,因?yàn)檫@必須在 Linux 內(nèi)核級(jí)完成。YARN 的一個(gè)有趣的新功能是支持 Linux CGroups。CGroups 是一種控制 Linux 內(nèi)核級(jí)進(jìn)程利用率的方法。

如果 YARN 設(shè)置為使用 CGroups,則 YARN 將保證容器至少獲得所需的 CPU 數(shù)量。目前,YARN 將為您提供更多的 CPU,如果可用。有關(guān)執(zhí)行“最多”CPU使用情況的詳細(xì)信息,請(qǐng)參閱 YARN-810。

有關(guān)使用 CGroup 設(shè)置 YARN 的詳細(xì)信息,請(qǐng)參閱此博文。

主機(jī)關(guān)聯(lián)和 YARN   >>

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)