Samza Application Master

2018-08-22 18:12 更新

YARN 是 Hadoop 的下一代集群管理器。它允許開(kāi)發(fā)人員在網(wǎng)格上部署和執(zhí)行任意命令。如果您不熟悉 YARN 或 ApplicationMaster(AM)的概念,請(qǐng)閱讀 Hadoop 的 YARN 頁(yè)面。

Samza與YARN的集成

Samza 與 YARN 的主要集成是 Samza ApplicationMaster 的形式。這是負(fù)責(zé)管理 YARN 網(wǎng)格中的 Samza 工作的代碼塊。它決定了當(dāng)流處理器發(fā)生故障時(shí)該怎么做,哪臺(tái)機(jī)器運(yùn)行 Samza 作業(yè)的 容器,等等。

當(dāng) Samza ApplicationMaster 啟動(dòng)時(shí),它執(zhí)行以下操作:

  1. 創(chuàng)建作業(yè)協(xié)調(diào)器,從協(xié)調(diào)器流引導(dǎo)作業(yè)模型和配置。
  2. 在隨機(jī)端口上啟動(dòng) JMX 服務(wù)器。
  3. 實(shí)例化一個(gè)指標(biāo)注冊(cè)表和記者來(lái)跟蹤相關(guān)的指標(biāo)。
  4. 用 YARN 的 RM 注冊(cè) AM。
  5. 使用每個(gè)輸入流的 PartitionManager 獲取 Samza 作業(yè)的分區(qū)總數(shù)(有關(guān)詳細(xì)信息,請(qǐng)參閱 Streams 頁(yè)面)。
  6. 從 Samza 工作的配置中讀取所需容器的總數(shù)。
  7. 將每個(gè)分區(qū)分配給容器(在 Samza 的 AM 儀表板中稱為任務(wù)組)。
  8. 為每個(gè)容器創(chuàng)建一個(gè) ResourceRequest 到 YARN。如果作業(yè)中啟用了 主機(jī)關(guān)聯(lián),則 AM 使用作業(yè)協(xié)調(diào)器提供的容器位置信息,并在 ResourceRequest 中請(qǐng)求相同的主機(jī)。
  9. 啟動(dòng)與分配的容器相匹配的 ContainerAllocator 線程,并啟動(dòng)容器進(jìn)程。
  10. 輪詢 YARN RM 每秒檢查分配和釋放的容器。

從這一點(diǎn)開(kāi)始,ApplicationMaster 只對(duì)來(lái)自 RM 的事件做出反應(yīng),并將其委托給 ContainerAllocator 線程。

容錯(cuò)

每當(dāng)分配一個(gè)容器時(shí),AM 將使用 YARN NM 在容器中啟動(dòng)一個(gè) SamzaContainer(分配給它的適當(dāng)?shù)姆謪^(qū))。如果容器出現(xiàn)非零返回代碼,AM 將請(qǐng)求一個(gè)新容器,并重新啟動(dòng)SamzaContainer。如果 SamzaContainer 失敗太多次太快,則 ApplicationMaster 將使整個(gè) Samza 的作業(yè)以非零返回碼失敗。有關(guān)詳細(xì)信息,請(qǐng)參閱

yarn.container.retry.count 和 yarn.container.retry.window.ms 配置參數(shù)。

當(dāng) AM 從 YARN 接收到重新啟動(dòng)信號(hào)時(shí),它會(huì)拋出一個(gè) SamzaException。這將引發(fā)清理和成功關(guān)閉 AM(YARN 不會(huì)認(rèn)為 AM 失?。?/p>

如果 AM 本身失敗,則 YARN 將處理重新啟動(dòng) AM。當(dāng) AM 重新啟動(dòng)時(shí),所有正在運(yùn)行的容器將被殺死,AM 將從頭開(kāi)始。將執(zhí)行相同的操作列表,如上所示。AM 將為其 SamzaContainers 請(qǐng)求新的容器,并且像剛剛開(kāi)始的那樣首先進(jìn)行。YARN 具有在 yarn-site.xml 中定義的 yarn.resourcemanager.am.max-retries 配置參數(shù)。此配置默認(rèn)為1,這意味著默認(rèn)情況下,單個(gè) AM 故障將導(dǎo)致Samza作業(yè)停止運(yùn)行。

安全

即使在安全模式下使用 YARN,Samza 儀表板的 HTTP 訪問(wèn)目前仍未保護(hù)。這意味著訪問(wèn) YARN 網(wǎng)格的用戶可以對(duì) Samza ApplicationMaster 的 HTTP 服務(wù)器進(jìn)行端口掃描,并在瀏覽器中打開(kāi)儀表板來(lái)查看其內(nèi)容。任何人都可以看到敏感的配置,這樣就要小心了。有計(jì)劃使用 Hadoop的安全功能(SPENAGO)確保Samza的ApplicationMaster 。

有關(guān)詳細(xì)信息,請(qǐng)參閱Samza的 安全 頁(yè)面。

隔離   >>

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)