2016-11-11 58 views
1

我正在使用zeppelins火花解釋器的隔離模式,使用此模式它將爲火花簇中的每個筆記本啓動一項新工作。筆記本執行完成後,我想通過zeppelin終止作業。爲此,我做了sc.stop這停止了sparkContext並且該作業也從spark集羣中停止。但下一次當我嘗試運行筆記本時,它不會再次啓動sparkContext。那麼該怎麼做?Zeppelin:如何重新啓動zeppelin中的sparkContext

回答

9

它很直觀有點反,但你需要訪問,而不是直接停止SparkContext翻譯菜單標籤:

  • 去解釋器列表。

    interpreter list

  • 發現星火解釋,並單擊右上角重啓

    spark intepreter

+5

除了手動重新啓動解釋器外沒有其他任何東西嗎? – eatSleepCode

+0

在'EMR'上爲'Spark'使用'Zeppelin'並從'S3'中加載*外部'fat-jar' *時,我發現**重新啓動解釋器*僅僅一次*就不夠**。假設我已經從'S3'中加載了* fat-jar *,而後者已經升級。爲了確保在* interpreter中加載* new jar *,我這樣做:(1)​​編輯解釋器'dependencies'並刪除現有jar,保存更改(2)重新啓動解釋器(3)再次編輯* interpreter依賴關係*並添加新的jar(它可以具有與之前相同的路徑)(4)重新啓動解釋器 –

0

我研究這個問題,爲什麼SC在火花停止yarn-客戶。我發現這是spark本身的問題(Spark版本> = 1.6)。在spark客戶端模式下,AM通過RPC連接連接到驅動程序,有兩個連接。它設置NettyRpcEndPointRef來連接到服務器'SparkDriver'的驅動程序服務'YarnSchedulerBackEnd',而另一個連接是EndPoint'YarnAM'。

在AM和Driver之間的這些RPC連接中,沒有心跳。所以AM知道Driver被連接的唯一方法是EndPoint'YarnAM'中的OnDisconnected方法。雖然NettyRpcEndPointRef將驅動程序和AM連接的斷開消息通過RPCHandler'postToAll'連接到EndPoint'YarnAM'。當它們之間的TCP連接斷開或保持活動狀態時,查找tcp不活動(可能在Linux系統中2小時),它將標記應用程序SUCCESS。

所以當驅動程序監視進程發現紗線應用狀態改變爲SUCCESS時,它會停止sc。

所以根本原因是,在Spark客戶端,沒有重新連接到驅動程序來檢查驅動程序是否存在,但只是儘可能快地標記紗線應用程序。也許Spark可以修改此問題。