私はSqoop、Hive、Pigのアクションで簡単なOozieワークフローを作成しました。各アクションのために、OozieはMRランチャーを起動し、次にアクション(Sqoop/Hive/Pig)を起動します。したがって、ワークフローには3つのアクションに対して合計6つのMRジョブがあります。Oozie MRランチャーの意義は何ですか?
なぜ、OozieはMRランチャーを起動してアクションを開始し、直接アクションを開始しないのですか?
私はSqoop、Hive、Pigのアクションで簡単なOozieワークフローを作成しました。各アクションのために、OozieはMRランチャーを起動し、次にアクション(Sqoop/Hive/Pig)を起動します。したがって、ワークフローには3つのアクションに対して合計6つのMRジョブがあります。Oozie MRランチャーの意義は何ですか?
なぜ、OozieはMRランチャーを起動してアクションを開始し、直接アクションを開始しないのですか?
私はApache Flumeフォーラムで同じことを投稿しました。ここには応答があります。
また、Oozieサーバーが不安定になるのを防ぐか、または が不安定になるのを防ぐ必要があります。たとえば、Pigジョブを実行しているワークフローがたくさんある場合は、 の場合、Pigクライアント (これは比較的重いプログラムです)の複数のコピーをOozieサーバーに直接実行させることになります。 ユーザーコードと外部クライアントをすべてランチャージョブのタスクにマップするように移動すると、Oozie サーバーは軽量化され、エラーが発生しにくくなります。ランチャージョブは、クラスタ内の他のマシンにジョブの起動/監視を配布するため、この方法ではさらに多くのスケーラブルな方法で を実行できます。そうでない場合は、 Oozieサーバーですべての処理を実行するため、Ozyieサーバーのマシン仕様(RAM、CPU、 など)に基づいて、 同時ワークフローの数を制限する必要があります。最後に、アーキテクチャ上の観点から、Oozieサーバー 自体はステートレスです。つまり、すべてがデータベースに格納され、何かを失うことなくいつでもOozieサーバーを停止することができます。 がOozieサーバーからジョブを直接起動すると、今度は 状態になります(たとえば、Pigクライアントを再起動して再開できません)。