监控Dataproc集群上的Spark-Shell或PySpark-Shell会话

时间:2016-01-13 21:55:25

标签: apache-spark google-cloud-dataproc

我了解从Dataproc群集访问Spark Job Driver OutputHadoop Jobs以及Output from Dataproc Spark job in Google Cloud Logging的答案。谢谢你们。

但是,我也有兴趣查看不完整的 Spark应用程序的日志,例如交互式pyspark-shellspark-shell会话 - 两者都是:

  1. 使用相同的Web界面,可能还有
  2. 访问原始会话输出(本地fs或hdfs上的日志文件?)
  3. 在Spark shell会话期间,虽然我可以将会话视为不完整的应用程序,但UI不会在作业阶段中提供此类信息 Tasks 选项卡。这很容易复制,如:

    # 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(lambda x: x + 1)
    >>> rdd2.collect()
    [2, 3, 4, 5, 6, 7]
    >>> rdd2.persist()
    PythonRDD[1] at collect at <stdin>:1
    

    但是,这不会导致任何作业阶段存储标签中的信息:see Spark Job History UI screen grab (blank)

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

    有关我可以从Spark shell会话访问此类输出/作业历史记录的任何提示吗?提前谢谢了。 :)

1 个答案:

答案 0 :(得分:5)

Dataproc仅为Dataproc作业提供驱动程序输出,即通过API提交的驱动程序(通常通过Cloud SDK或Developer Console)。要运行spark-shell,你必须ssh进入集群并自己运行shell,不会将其作为作业进行跟踪。但是,它仍然在Web UI中跟踪,您可以自己捕获控制台输出。

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

    一个。转到YARN ResourceMangers的Web UI as documented here

    湾找到你的应用程序(它可能在顶部,RUNNING,并命名为PySparkShell)

    ℃。点击Tracking UI下的最后一栏中的ApplicationMaster。

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

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

  2. 您可以使用spark-shell |& tee -a shell.log之类的内容将shell的输出捕获到本地日志中。如果您只想要日志记录(而不是打印语句),您还可以use log4j to configure a local file log