2016-05-13 118 views
2

我最近在學習oozie。我對貝殼動作有點好奇。我在執行包含shell命令一樣爲什麼oozie將紗線動作提交給紗線?

hadoop jar <jarPath> <FQCN> 

當運行這個動作有運行兩個紗作業這是

  1. 一個Hadoop的工作

  2. 一個殼行動

    殼行動

我不明白爲什麼貝殼動作需要紗線執行。我也嘗試了電子郵件操作。它執行時沒有紗線資源。

+2

電子郵件只需要一個API調用,它不消耗內存或CPU或磁盤I/O - 只是一點網絡I/O。事實上,這是在Oozie服務器內部執行的**唯一**「動作」。其他一切都被卸載到YARN。這是一個核心設計選擇。請記住,雅虎!創建Oozie來運行**原始MapReduce **作業;其餘部分(java,shell,pig,hive,distcp ...)已被添加爲事後考慮,僅使用1個Map作爲代理的「啓動器」工作。 –

+2

只需要一點谷歌搜索:*「Oozie中的一個基本設計原則**是Oozie服務器除了執行工作流程本身之外不會運行用戶代碼,通過將用戶代碼與Oozie的代碼隔離開來確保更好的服務穩定性代碼,Oozie服務器也是**無狀態的**,啓動器的工作使它可以保持這種狀態。「* https://www.safaribooksonline.com/library/view/apache-oozie/9781449369910/ch04。 HTML –

回答

2

爲了回答這個問題,不同的是運行shell動作作爲Oozie的工作流程的一部分運行的一個外殼腳本獨立地(從CLI sh文件或)

之間
  1. 。(shell腳本在oozie shell動作中)

第一種情況非常明顯。

在第二種情況下,oozie通過YARN(是資源談判器)啓動shell腳本,以在安裝oozie的羣集上運行您的shell腳本,並在內部運行MR作業以啓動shell操作。所以shell腳本在內部作爲YARN應用程序運行。 oozie工作流的日誌顯示了shell操作在oozie中啓動的方式。