14

ドライバーはマスターノードに常時アクセスする必要がありますか? それとも、最初のリソース割り当てを取得するためだけに必要ですか? Spark コンテキストが作成された後に master が使用できない場合はどうなりますか? アプリケーションが失敗するということですか?

4

3 に答える 3

15

マスター障害またはネットワーク パーティションの最初の、そしておそらく現時点で最も深刻な結果は、クラスターが新しいアプリケーションを受け入れられなくなることです。これが、クラスターが既定の構成で使用されている場合に、マスターが単一障害点と見なされる理由です。

マスターの損失は実行中のアプリケーションによって認識されますが、それ以外の場合は、2 つの重要な例外を除いて、何も起こらなかったように多かれ少なかれ機能し続けるはずです。

  • アプリケーションは正常に終了できません
  • マスターがダウンしている場合、またはネットワーク パーティションがワーカー ノードにも影響を与える場合、スレーブは次のことを試みreregisterWithMasterます。これが何度も失敗すると、ワーカーは単純に諦めます。現時点では、長時間実行されているアプリケーション (ストリーミング アプリなど) は処理を続行できませんが、すぐに障害が発生することはありません。代わりに、アプリケーションは、マスターがオンラインに戻るか (ファイル システムの回復)、または新しいリーダーからの連絡 (Zookeeper モード) を待機し、それが発生した場合は処理を続行します。
于 2016-03-06T01:05:52.047 に答える
7

以下は、起動時にsparkアプリケーションが実行する手順です。

  1. Spark ドライバーを起動します
  2. Spark ドライバーは、リソース割り当てのために Spark マスターに接続します。
  3. Spark ドライバーは、spark コンテキストでアタッチされた jar をマスター サーバーに送信します。
  4. Spark ドライバーは、マスター サーバーをポーリングし続けて、ジョブの状態を取得します。
  5. コードにシャッフルまたはブロードキャストがある場合、データは spark ドライバーを介してルーティングされます。そのため、spark ドライバには十分なメモリが必要です。
  6. take、takeOrdered、collect などの操作がある場合、データはドライバーに蓄積されます。

したがって、はい、マスターで失敗すると、エグゼキューターはマスターと通信できなくなります。だから、彼らは仕事をやめます。マスターに障害が発生すると、ドライバーはジョブ ステータスについてマスターと通信できなくなります。したがって、アプリケーションは失敗します。

于 2016-03-19T04:45:32.080 に答える