2

oozie を使用してワークフローを実行しています。これには、任意の (非 map reduce) コードを実行する Java アクションがあります。この Java コードは、ローカル ファイル システムにファイルとフォルダを作成するためのものです。Java アクションが Hadoop のクラスターの単一ノード (私の場合は 7 ノード) で実行されるようにしたいと考えています。この Java アクションは常に同じマシンで実行し、できれば Hadoop マスター ノードでのみ実行することが望ましいと考えています。出来ますか?回避策がある場合でも、共有してください。

4

2 に答える 2

2

Java Action は map reduce ジョブと同じように実行されるため、クラスター内のどのノード上にあるかを制御することはできません。

ウージーがこれを尊重するかどうかはわかりません。ただし、許容可能なマッパーの失敗の数を高い値 (たとえば 10) に設定してみて、実行クラスター ノードが目的のノードでない場合は、Java アクションで例外をスローすることができます (InetAddress を使用してローカル マシン名を取得します)。 /IP)。

その後、うまくいけば (ただし、必ずしも保証されるわけではありません)、望ましくないノードではアクションが失敗し続け、最終的には選択したノードで成功します。

ややハックですが、うまくいく可能性があります (これも、ジョブ全体が失敗する前にマップ タスクの失敗回数を修正できるかどうかによって異なりmapred.map.max.attemptsます。デフォルトでは 4 です)。

于 2013-01-09T23:30:05.363 に答える
0

すべての Oozie ジョブ (単純な Java アクション、Pig アクション、Hive アクションなど) は、map-reduce ジョブとして実行されます。これは、Oozie フレームワークのコア プロパティです。

Oozie ワークフローは、コントロールの依存関係 DAG (直接非巡回グラフ) に配置されたアクションです。

参照: Oozie デザイン アーキテクチャ

したがって、クラスター内の目的のノードにファイルを保存できないことを願っています。

于 2013-01-11T06:32:20.013 に答える