Apache spark 监视Dataproc群集上的Spark Shell或PySpark Shell会话

Apache spark 监视Dataproc群集上的Spark Shell或PySpark Shell会话,apache-spark,google-cloud-dataproc,Apache Spark,Google Cloud Dataproc,据我所知,从Dataproc集群访问Spark和Dataproc是有答案的。谢谢这些 但是,我也对查看不完整Spark应用程序的日志感兴趣,例如交互式pyspark shell或Spark shell会话,通过以下两种方式: 使用相同的web界面,以及 访问原始会话输出(本地fs或hdfs上的日志文件?) 在Spark shell会话期间,虽然我可以将会话视为不完整的应用程序,但当我在REPL中执行命令时,UI在作业、阶段和任务选项卡中不提供此类信息。这可以很容易地复制,如: # Launch

据我所知,从Dataproc集群访问Spark和Dataproc是有答案的。谢谢这些

但是,我也对查看不完整Spark应用程序的日志感兴趣,例如交互式
pyspark shell
Spark shell
会话,通过以下两种方式:

  • 使用相同的web界面,以及
  • 访问原始会话输出(本地fs或hdfs上的日志文件?)
  • 在Spark shell会话期间,虽然我可以将会话视为不完整的应用程序,但当我在REPL中执行命令时,UI在作业、阶段和任务选项卡中不提供此类信息。这可以很容易地复制,如:

    # Launch Dataproc cluster
    >> gcloud beta dataproc clusters create $DATAPROC_CLUSTER_NAME
    
    # SSH to master node:
    >> gcloud compute ssh "root@$DATAPROC_CLUSTER_NAME-m"
    
    # Launch a Spark shell (e.g., Python) 
    >> pyspark
    
    我可以将Spark会话视为一个不完整的应用程序(如上所述),并可以执行一个基本的Spark作业(使用
    collect
    操作),如:

    rdd=sc.parallelize([1,2,3,4,5,6]) >>>rdd2=rdd.map(λx:x+1) >>>rdd2.collect() [2, 3, 4, 5, 6, 7] >>>rdd2.persist() 蟒蛇[1]在收集地点:1 但这将导致在任何作业、阶段或存储选项卡上都不会显示任何信息:

    要强调的是:当通过Dataproc API提交作业时,这些选项卡会显示所有预期的作业历史记录


    关于如何从Spark shell会话访问此类输出/作业历史记录,有何提示?非常感谢。:)

    Dataproc仅为Dataproc作业提供驱动程序输出,即通过API(通常通过云SDK或开发人员控制台)提交的驱动程序。要运行sparkshell,您必须使用ssh连接到集群中,然后自己运行shell,这不会作为作业进行跟踪。但是,它仍然在Web UI中跟踪,您可以自己捕获控制台输出

  • Spark History Server仅在应用程序完成时更新。对于live Spark Web UI:

    a。转到纱线资源管理器的Web UI

    b。查找您的应用程序(它可能位于顶部,正在运行,并命名为PySparkShell)

    c。单击跟踪UI下最后一列中的ApplicationMaster

    d。您应该看到应用程序的live Spark Web UI

    一般来说,我总是建议通过ResourceManager的WebUI查看Spark和MapReduce作业,因为它有指向当前正在运行和已完成的作业历史记录的链接

  • 您可以使用类似于
    sparkshell |&tee-ashell.log的方法将shell的输出捕获到本地日志中。如果您只需要日志记录(而不需要打印语句),还可以


  • 谢谢你@PatrickClay,这很有帮助。关于Dataproc作业与spark shell的驱动程序输出的解释很有帮助,很有意义。是的,关于必须执行一个动作,这是正确的,但是在这个问题的上下文中,陈述它是有帮助的。这让我意识到我应该更明确地说明我正在执行的工作流和结果(因为我正在执行来自
    spark shell
    的操作,但在spark history UI中没有输出,如上所述)。为了更好地解释这个问题,我将更新这个问题,因为我怀疑我遗漏了什么。:)嗨@patrick,我能够更新问题,使其包含复制不包含作业、阶段或存储信息的UI的步骤。希望它能让我更清楚地了解我在UI方面寻求的帮助。谢谢。:)屏幕截图向我显示了您正在查看的服务器,并使其更加清晰。很抱歉最初回答了错误的问题。希望这会有帮助。这确实有帮助,我终于能够找到运行Spark shell会话的Spark作业历史UI,非常感谢!我以前主要使用Spark Standalone模式,对纱线没有太多经验,所以我不知道去哪里找。:)
    >>> rdd = sc.parallelize([1, 2, 3, 4, 5, 6])
    >>> rdd2 = rdd.map(lambda x: x + 1)
    >>> rdd2.collect()
    [2, 3, 4, 5, 6, 7]
    >>> rdd2.persist()
    PythonRDD[1] at collect at <stdin>:1