web-dev-qa-db-ja.com

Zeppelin:ZeppelinでsparkContextを再起動する方法

私はzeppelinsの分離モードを使用していますsparkインタープリター。このモードでは、sparkクラスター内の各ノートブックに対して新しいジョブを開始します。ジョブを強制終了したいノートブックの実行が完了したときにzeppelinを介して。このためにsc.stopこれにより、sparkContextが停止し、ジョブもsparkクラスターから停止しました。しかし、次回ノートブックを実行しようとすると、sparkContextが再び開始されません。そのため、方法それを行う?

9
eatSleepCode

直感的には少しわかりにくいですが、SparkContextを直接停止するのではなく、インタープリターメニュータブにアクセスする必要があります。

  • 通訳者リストに移動します。

    interpreter list

  • Sparkインタプリタを見つけてクリック restart 右上隅に:

    spark intepreter

18
user6022341

Scがなぜsparkヤーンクライアントで停止するのかという問題を調査しました。spark自体の問題であることがわかりました(Sparkバージョン> = 1.6) 。sparkクライアントモードでは、AMはRPC接続を介してドライバーに接続します。2つの接続があります。サーバー 'SparkDriver'のドライバーのサービス 'YarnSchedulerBackEnd'に接続するようにNettyRpcEndPointRefを設定します。別の接続はEndPoint 'YarnAM'です。

AMとドライバー間のこれらのRPC接続では、ハートビートはありません。したがって、AMがドライバーが接続されているかどうかを知る唯一の方法は、EndPoint 'YarnAM'のOnDisconnectedメソッドです。 NettyRpcEndPointRefによるドライバーとAM接続の切断メッセージは、RPCHandlerを通じてEndPoint 'YarnAM'に 'postToAll'します。 TCPそれらの間の接続が切断された場合、またはキープアライブメッセージがtcp not alive(Linuxシステムでは2時間)を検出した場合)は、アプリケーションに成功のマークを付けます。

そのため、ドライバーモニタープロセスが糸アプリケーションの状態がSUCCESSに変化したことを検出すると、scを停止します。

したがって、根本的な原因は、Sparkクライアントでは、ドライバへの接続の再試行がなく、ドライバが稼働しているかどうかを確認しないことですが、糸アプリケーションをできるだけ迅速にマークするだけです。多分= Sparkはこの問題を修正できます。

1
kai wu

ツェッペリンとSparkで作業しているときにも、同じ問題に遭遇し、いくつかの調査を行いました。しばらくして、私の最初の結論は次のとおりでした。

  • SparkContextを停止するには、段落でsc.stop()を使用します。
  • SparkContextの再起動は、UIを使用した場合にのみ機能します(メニュー->インタープリター-> Sparkインタープリター-> restartボタンをクリック))

ただし、UIではSparkインタープリターをボタンを押して再起動できるため、restartボタンのAPI呼び出しをリバースエンジニアリングしないでください!結果はrestarting the Spark=インタプリタは次のHTTPリクエストを送信します:

PUT http://localhost:8080/api/interpreter/setting/restart/spark

幸いなことに、ツェッペリン型飛行船は複数のインタープリターと連携することができ、そのうちの1人はShellインタープリターでもあります。したがって、2つの段落を作成しました。

最初の段落は、必要に応じてSparkContextを停止するためのものでした:

%spark
// stop SparkContext
sc.stop()

2番目の段落は、SparkContextをプログラムで再起動するためのものでした:

%sh
# restart SparkContext
curl -X PUT http://localhost:8080/api/interpreter/setting/restart/spark

2つの段落でSparkContextを停止して再起動した後、別の段落を実行して、再起動が機能するかどうかを確認しました。したがって、これは公式の解決策ではなく、回避策の詳細ですが、段落内のrestartボタンを「押す」以外は何もしないので、それでも正当です。

ツェッペリン版:0.8.1

1
Bajro

問題のインタープリターの左側にある再起動アイコンをクリックすると、インタープリターバインディング(右上隅にある歯車)でノートブックのインタープリターを再起動できます(この場合はsparkインタープリターになります) )

0
Mark Brown