Apache spark 监视Dataproc群集上的Spark Shell或PySpark Shell会话
据我所知,从Dataproc集群访问Spark和Dataproc是有答案的。谢谢这些 但是,我也对查看不完整Spark应用程序的日志感兴趣,例如交互式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
pyspark shell
或Spark shell
会话,通过以下两种方式:
# 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中跟踪,您可以自己捕获控制台输出
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