1

HDInsight ジョブ アプローチに関するいくつかの質問。

1) HDInsight ジョブをスケジュールする方法は? それに対する準備ができている解決策はありますか?たとえば、私のシステムが、map/reduce ジョブを実行する必要がある多数の新しい入力ファイルを常に収集する場合、進行中の処理を実装するための推奨される方法は何ですか?

2) 価格の観点から、ジョブが実行されていない間は HDInsight クラスターを削除することをお勧めします。私が理解しているように、ジョブを毎日実行することにした場合、このプロセスを自動化する方法はありませんか? ここに何か推奨事項はありますか?

3) 同じファイルが複数回処理されないようにする方法はありますか? この問題をどのように解決しますか?

4) 私は間違っているかもしれませんが、すべての hdinsight ジョブには、リデューサーの結果を保存するための新しい出力ストレージ フォルダーが必要なようです。レポートが常にデータ セット全体で機能するように、これらの結果をマージするためのベスト プラクティスは何ですか?

4

1 に答える 1

3

わかりました、そこにはたくさんの質問があります!ここで、いくつかの簡単な回答を願っています。

  1. HDInsight でジョブの送信をスケジュールする方法は実際にはありませんが、もちろん、ジョブの送信を実行するプログラムをスケジュールすることはできます。ワークフローによっては、Oozie を試してみる価値があるかもしれません。これは、HDInsight を使い始めるのが少し面倒かもしれませんが、役に立ちます。

  2. 価格面では、クラスターを使用していない場合は、クラスターを破棄し、必要なときに再び使用することをお勧めします (これらのコンピューティング時間は実際に追加される可能性があります!)。これにより、HDFS にあるものはすべて失われることに注意してください。これは主に中間結果であり、asv ストレージに保持されている出力または入力データは Azure ストレージ アカウントに保持されます。CLI ツール、または CLI ツールで使用される残りのインターフェイスを使用して、これを確実に自動化できます。( Azure Create New Cluster の Hadoop に関する私の回答を参照してください。最初のものは古くなっています)。

  3. これを行うには、ファイルごとに 1 回だけジョブを送信し、Hadoop に依存して再試行と信頼性の面を処理するようにします。これにより、アプリケーションで再試行を管理する必要がなくなります。

  4. 最初のプロセスからの出力を取得したら、レポート用にそれらを 1 つの出力に減らしたい場合、最良の方法はおそらく、出力を入力として持つ 2 次 MapReduce ジョブです。

    個々の中間ジョブを気にしない場合は、ジョブ チェーンを介して 1 つの MapReduce ジョブ (必要な数のマップおよびリデュース ステップを含めることができます) でこれらを直接チェーンすることができます。ベースの例。残念ながら、.NET API は現在、この形式のジョブ チェーンをサポートしていません。

    ただし、ケースで Reducer->Combiner アプローチが許可されている場合は、ReducerCombinerBase クラスを使用することもできます。

于 2013-08-30T10:48:16.297 に答える