2017-12-12 9 views
2

ドライバの再起動時にsparkのDAG全体が高可用性(つまり、糸クラスターモードのデフォルトのHA)からゼロから再計算されないようにするにはどうすればよいですか。ドライバの再起動後にDAGが再計算されないようにするにはどうすればよいですか?

現在、私は、これは複数のテーブルに対して実行されHDFS

に複数の小さなジョブすなわち

  • 読み取りTABLE1
  • ハッシュ一部の列
  • 書き込みを編成するために火花を使用しています。 ドライバが再起動されると、つまり2番目のテーブルで作業しているときに、最初のものが再処理されます。すでに正常に保存されています。

    チェックポインティングのデフォルトのメカニズム(生の入力値)は意味をなさないと思います。 良い解決策は何でしょうか? (小)構成情報をチェックポイントでき、まだ計算されていないものだけを再処理することはできますか?

答えて

2

TL; DRスパークはタスクオーケストレーションツールではありません。スケジューラといくつかのフォールトトレランス機能が組み込まれていますが、サーバーのオーケストレーションなど、きめ細かなタスク管理に適しています(ちょっと、各マシン上でpipeと呼んで、bashスクリプトを実行できます)。

詳細なリカバリが必要な場合は、特定のプロセス(読込み、ハッシュ、書込みは説明に基づいて適切な選択肢に見える)に適した最小限の計算単位を選択し、アプリケーションにして外部オーケストレーションを使用して送信します仕事。

予想される出力が存在するかどうかを確認し、その場合のジョブの一部をスキップすることで、貧弱な人の選択肢を構築することはできますが、実際にはそうではありません。

スパークはドライバにHAを提供せず、自動再起動による監視のみを行います。また、独立したジョブ(read - > transform - > write)は独立したDAGを作成します。グローバルDAGはなく、アプリケーションの適切なチェックポイントには状態のフルスナップショットが必要です(良い古いBLCRなど)。

0

ドライバを再起動したとき(糸クラスターモードのデフォルトのHA)。

Sparkアプリケーションのドライバがなくなると、Sparkアプリケーションがなくなり、すべてのキャッシュデータセットが失われます。これはデフォルトです。

https://www.alluxio.org/またはhttps://ignite.apache.org/のような種類のキャッシュソリューションを使用する必要があります。どちらもSparkと連携しており、どちらもSparkアプリケーションの寿命を延ばす機能を提供していると主張しています。

Spark Job Serverを使用してSparkアプリケーション間でデータを共有する時代があります(Sparkドライバの再起動に似ています)。

関連する問題