我了解从Dataproc群集访问Spark Job Driver Output和Hadoop Jobs以及Output from Dataproc Spark job in Google Cloud Logging的答案。谢谢你们。
但是,我也有兴趣查看不完整的 Spark应用程序的日志,例如交互式pyspark-shell
或spark-shell
会话 - 两者都是:
在Spark shell会话期间,虽然我可以将会话视为不完整的应用程序,但UI不会在作业,阶段中提供此类信息当我在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
但是,这不会导致任何作业,阶段或存储标签中的信息:see Spark Job History UI screen grab (blank)。
要强调:但是,在通过Dataproc API提交作业时,这些选项卡会显示所有预期的作业历史记录。
有关我可以从Spark shell会话访问此类输出/作业历史记录的任何提示吗?提前谢谢了。 :)
答案 0 :(得分:5)
Dataproc仅为Dataproc作业提供驱动程序输出,即通过API提交的驱动程序(通常通过Cloud SDK或Developer Console)。要运行spark-shell,你必须ssh进入集群并自己运行shell,不会将其作为作业进行跟踪。但是,它仍然在Web UI中跟踪,您可以自己捕获控制台输出。
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作业,因为它有指向当前正在运行和已完成的作业历史的链接。
您可以使用spark-shell |& tee -a shell.log
之类的内容将shell的输出捕获到本地日志中。如果您只想要日志记录(而不是打印语句),您还可以use log4j to configure a local file log。