2015-02-23 111 views

回答

3

Web用戶界面本質上與SparkContext相關,因此如果您不調用.stop並保持應用程序活着,那麼UI應該保持活動狀態。如果您需要查看日誌,那麼仍然應該將這些日誌保存到服務器。它可能會使一個有趣的功能,以保持Web服務器部分打開一段時間,或一些其他視圖,但可能是功能要求?

SparkContext.scala

// Initialize the Spark UI 
private[spark] val ui: Option[SparkUI] = 
if (conf.getBoolean("spark.ui.enabled", true)) { 
    Some(SparkUI.createLiveUI(this, conf, listenerBus, jobProgressListener, 
    env.securityManager,appName)) 
} else { 
    // For tests, do not enable the UI 
    None 
} 


/** Shut down the SparkContext. */ 
    def stop() { 
    SparkContext.SPARK_CONTEXT_CONSTRUCTOR_LOCK.synchronized { 
     postApplicationEnd() 
     ui.foreach(_.stop()) 
     ... 
    } 
    } 

更新 - 更好的答案

我已經忘記了火花歷史記錄服務器。 That is something you might want to look into

+0

是的。我不知道如何保持我的應用程序活着。 – poiuytrez 2015-02-24 09:06:59

+0

我更新了關於火花歷史服務器,然後我發現喬希羅森回答,但它比我原來的答案更準確 – 2015-04-12 02:35:06

4

您可以使用Spark的事件日誌記錄和歷史記錄服務器功能來查看已完成的應用程序的UI;有關更多詳細信息,請參見​​。

2

要添加的如何與歷史服務器的工作是一個新手友好的一步一步的解決方案:

  • 火花分發文件夾嘗試通過啓動歷史服務器:

    ./sbin/start-history-server.sh

    默認情況下,歷史記錄服務器將嘗試監視日誌的/tmp/spark-events,不幸的是,如果路徑不存在,它將崩潰。所以,如果你得到一個錯誤,你可能必須首先mkdir /tmp/spark-events。您可以查看./logs中的歷史記錄服務器日誌,以便在出現問題時查看詳細信息。

  • 爲了使上下文保持其事件日誌,您必須啓用事件日誌記錄。這可以通過編程方式或通過編輯./conf/spark-defaults.conf(複製的模板,如果不存在的話),並取消註釋/添加一行:

    spark.eventLog.enabled true

    運行​​應導致像/tmp/spark-events/local-1465133722470事件日誌文件夾。

  • 訪問從http://localhost:18080

0

歷史服務器UI,一般可能是你可以添加一行:

new Scanner(System.in).nextLine()

確保它在驅動程序運行

3

如果您正在以本地模式進行測試,即使用IDEA或Eclipse進行測試,其中一種方法是如下。

System.in.read(); 
spark.stop(); // spark --> SparkSession 

這將確保用戶界面可以隨時訪問。只要按下IDEA/Eclipse控制檯上輸入終止應用程序

0

在本地測試用Python編寫的Spark應用程序,我將其添加爲小劈到我的應用程序的結束:

raw_input("Press ctrl+c to exit") 

當上運行一個YARN集羣管理器,我使用端口18080上的歷史管理器。

相關問題