跟踪pyspark作业的进度?

kd3sttzy  于 2023-10-23  发布在  Apache
关注(0)|答案(3)|浏览(137)

我们在我们的项目中使用pyspark。我想在Spark作业运行时向用户提供进度更新。有Spark UI,但我找不到任何可以在代码中使用它的地方,并将状态发送回前端。

xesrikrc

xesrikrc1#

YARN或Kubernetes作为Reflections Manager?

对于Yarn

这个怎么样?https://spark.apache.org/docs/latest/monitoring.html#rest-api使用提供的RESTAPI。
除了在UI中查看指标之外,它们还可以作为JSON使用。这为开发人员提供了一种简单的方法来为Spark创建新的可视化和监控工具。JSON可用于运行中的应用程序和历史服务器。端点安装在/API/v1。例如,对于历史服务器,它们通常可以在http://:18080/api/v1访问,对于运行中的应用程序,可以在http://localhost:4040/api/v1访问。
在API中,应用程序由其应用程序ID [app-id]引用。在YARN上运行时,每个应用程序可能有多次尝试,但只有群集模式下的应用程序有尝试ID,而客户端模式下的应用程序没有。YARN群集模式下的应用程序可以由其[app-id]标识。在下面列出的API中,在YARN群集模式下运行时,[app-id]实际上是[base-app-id]/[base-app-id],其中[base-app-id]是YARN应用程序ID。

对于Kubernetes上的Spark

这个怎么样?https://www.acceldata.io/blog/how-to-monitor-spark-on-kubernetes使用提供的RESTAPI与Kubernetes注意事项。这是关于他们产品的简介,但重点如下。
.要访问Kubernetes上的Spark UI,您需要通过运行
$ kubectl port-forward 4040:4040
然后可以在http://localhost:4040/.
也就是说,Kubernetes上的Spark有它自己的一系列问题。请参阅https://www.lightbend.com/blog/how-to-manage-monitor-spark-on-kubernetes-introduction-spark-submit-kubernetes-operator for Kubernetes Operator for Spark。所有的K8都可以,但有各种各样的问题。我坚持使用Notebook方法,并继续交付一些东西,当我做这样的工作时。结合无服务器。

dsekswqp

dsekswqp2#

为了在分布式系统上运行spark,你需要确定你想在哪里运行它,各种云服务提供了一个很好的解决方案来设置spark架构,其中包括通过YARN进行监控。你可以自己设置spark架构,但它变得难以管理,比如管理内存,设置监控。让我更好地解释一下(看下面的图表)

运行Spark,您可以使用两种方法
1.单节点架构->(通常建议在本地运行spark),驱动节点充当主节点和工作节点,数据溢出的可能性更大,这就是为什么不建议用于较大的数据集
1.多节点架构->这通常是建议与更大的数据集,理解图在下面的链接,因为这不是你问的。
https://intellipaat.com/blog/tutorial/spark-tutorial/spark-architecture/#:~:text= The%20Apache%20Spark%20framework%20uses,real%2Dtime%20processing%20as%20 well.
它有多个工作节点,由资源管理器/集群管理器管理,如Yarn,Mesos等。现在看看图,如果你创建一个这个图,我们自己的服务器,你需要管理它,这可能是繁琐的。这里有一些云服务,可以照顾它,让你提供这种服务更便宜。

  1. AWS EMR
  2. Microsoft HDInsight
  3. Google Datarpoc
  4. snowflake 雪场
    我推荐使用这些服务,它可以让你看到YARN上的每个应用程序,还可以根据你的需要使用不同的工作机器/集群。
    显然这不是最好的答案,因为你的问题需要非常简洁,但让我知道,如果你发现任何有用的。
efzxgjgh

efzxgjgh3#

如果你更愿意为你的项目提供一个回调模型,Spark提供了SparkListenerInterface接口和它的默认noop实现SparkListener。根据你感兴趣的粒度级别,后者中的方法可以有选择地扩展以提供必要的进度信息。
但是如果您可以使用拉式模型,那么正如其他人所提到的,REST API是一条路要走。

相关问题