ドライバーはマスターノードに常時アクセスする必要がありますか? それとも、最初のリソース割り当てを取得するためだけに必要ですか? Spark コンテキストが作成された後に master が使用できない場合はどうなりますか? アプリケーションが失敗するということですか?
user6022341
質問する
4450 次
3 に答える
15
マスター障害またはネットワーク パーティションの最初の、そしておそらく現時点で最も深刻な結果は、クラスターが新しいアプリケーションを受け入れられなくなることです。これが、クラスターが既定の構成で使用されている場合に、マスターが単一障害点と見なされる理由です。
マスターの損失は実行中のアプリケーションによって認識されますが、それ以外の場合は、2 つの重要な例外を除いて、何も起こらなかったように多かれ少なかれ機能し続けるはずです。
- アプリケーションは正常に終了できません
- マスターがダウンしている場合、またはネットワーク パーティションがワーカー ノードにも影響を与える場合、スレーブは次のことを試み
reregisterWithMaster
ます。これが何度も失敗すると、ワーカーは単純に諦めます。現時点では、長時間実行されているアプリケーション (ストリーミング アプリなど) は処理を続行できませんが、すぐに障害が発生することはありません。代わりに、アプリケーションは、マスターがオンラインに戻るか (ファイル システムの回復)、または新しいリーダーからの連絡 (Zookeeper モード) を待機し、それが発生した場合は処理を続行します。
于 2016-03-06T01:05:52.047 に答える
7
以下は、起動時にsparkアプリケーションが実行する手順です。
- Spark ドライバーを起動します
- Spark ドライバーは、リソース割り当てのために Spark マスターに接続します。
- Spark ドライバーは、spark コンテキストでアタッチされた jar をマスター サーバーに送信します。
- Spark ドライバーは、マスター サーバーをポーリングし続けて、ジョブの状態を取得します。
- コードにシャッフルまたはブロードキャストがある場合、データは spark ドライバーを介してルーティングされます。そのため、spark ドライバには十分なメモリが必要です。
- take、takeOrdered、collect などの操作がある場合、データはドライバーに蓄積されます。
したがって、はい、マスターで失敗すると、エグゼキューターはマスターと通信できなくなります。だから、彼らは仕事をやめます。マスターに障害が発生すると、ドライバーはジョブ ステータスについてマスターと通信できなくなります。したがって、アプリケーションは失敗します。
于 2016-03-19T04:45:32.080 に答える