2015-02-23 106 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上的历史管理器。

相关问题