【问题标题】:Monitoring Spark-Shell or PySpark-Shell sessions on Dataproc cluster监控 Dataproc 集群上的 Spark-Shell 或 PySpark-Shell 会话
【发布时间】:2016-04-19 02:01:35
【问题描述】:

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

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

  1. 使用相同的网络界面,以及可能
  2. 访问原始会话输出(本地 fs 或 hdfs 上的日志文件?)

在 Spark shell 会话期间,虽然我可以将会话视为不完整的应用程序,但 UI 没有在 JobsStages 中提供此类信息当我在 REPL 中执行命令时,em> 和 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

但这会导致在任何 JobsStagesStorage 选项卡中没有任何信息:see Spark Job History UI screen grab (blank)

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

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

【问题讨论】:

    标签: apache-spark google-cloud-dataproc


    【解决方案1】:

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

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

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

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

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

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

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

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

    【讨论】:

    • 谢谢@PatrickClay,这很有帮助。关于 Dataproc 作业与 spark-shell 的驱动程序输出的解释很有帮助,很有意义。是的,关于必须执行一个动作是正确的——但在这个问题的上下文中说明它是有帮助的。它让我意识到我应该更明确地了解我正在执行的工作流程和结果(因为我 am 执行来自 spark-shell 的操作但在 Spark 历史 UI 中没有输出,如上所述)。我将用这个更新问题以更好地解释,因为我怀疑我缺少一些东西。 :)
    • 嗨@patrick,我能够更新问题以包含复制不包含作业、阶段或存储信息的 UI 的步骤。希望它能更清楚地说明我在 UI 方面寻求帮助的内容。谢谢。 :)
    • 屏幕截图显示了您正在查看的服务器,并且确实更清楚了。很抱歉最初回答错误的问题。希望对您有所帮助。
    • 这确实有帮助,我终于能够找到正在运行的 spark shell 会话的 Spark Job History UI,非常感谢!我以前主要使用 Spark Standalone 模式,对 YARN 没有太多经验,所以我不知道去哪里找。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    相关资源
    最近更新 更多