首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spark-submit在kubernetes上,executor pods即使在spark作业完成后仍在运行。因此,资源不能用于新的工作

Spark-submit是Apache Spark中用于提交作业的命令行工具。它可以将Spark应用程序打包并提交到Spark集群上运行。而Kubernetes是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。

在Kubernetes上运行Spark作业时,executor pods是由Spark-submit命令创建的。这些executor pods负责运行Spark应用程序的任务。默认情况下,即使Spark作业完成后,executor pods仍然保持运行状态。这是因为Spark框架设计为保持executor pods的运行,以便在需要时可以重新使用资源,提高作业的执行效率。

然而,这也意味着资源不能立即用于新的工作。如果需要释放这些资源以供其他作业使用,可以通过以下方式之一来实现:

  1. 手动停止executor pods:可以使用Kubernetes命令或管理工具(如kubectl)手动停止executor pods。例如,可以使用以下命令删除executor pods:
  2. 手动停止executor pods:可以使用Kubernetes命令或管理工具(如kubectl)手动停止executor pods。例如,可以使用以下命令删除executor pods:
  3. 这将停止指定的executor pod并释放其占用的资源。
  4. 调整Spark配置:可以通过调整Spark应用程序的配置来控制executor pods的行为。可以在Spark应用程序中设置以下配置参数:
    • spark.kubernetes.executor.deleteOnTermination:将其设置为true可以在作业完成后自动删除executor pods。
    • spark.kubernetes.executor.request.coresspark.kubernetes.executor.limit.cores:可以设置executor pods的CPU资源请求和限制,以控制其使用的资源量。

总结起来,Spark-submit在Kubernetes上运行时,executor pods默认情况下会保持运行状态,以便在需要时可以重新使用资源。如果需要立即释放这些资源以供其他作业使用,可以手动停止executor pods或通过调整Spark配置来控制其行为。

腾讯云提供了一系列与Spark和Kubernetes相关的产品和服务,例如TKE(腾讯云容器服务)和TSP(腾讯云Spark平台)。您可以访问腾讯云官方网站获取更多关于这些产品的详细信息和使用指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【Spark on K8S】Spark里的k8s client

    目前在我们的应用下,会有这样的一种特殊的场景。比如说 Driver 创建在 A 集群,但是需要 Driver 将 Executor Pod 创建到 B 集群去。所以我们这里会有两个集群的 master url,分别是集群 A 和集群 B。那么创建任务的模式就是 spark-subtit 的 master url 指向集群 A,然后给 Driver 的 k8s client 设置其创建 Executor Pod 的 master url 指向 B,那么在现有 Spark 的参数下,能否直接通过 SparkConf 或者环境变量来实现这一点呢?我们看看源码。 对于这样的需求,我们首先需要去了解 Spark 是如何跟 k8s 集群打交道的。Spark on K8S 在 submit 的时候默认是直接在 K8S Master 节点提交,通过 --master 或者 SparkConf 中的 spark.master 来指定。

    02

    Spark优化(二)----资源调优、并行度调优

    在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行。因此我们必须对Spark作业的资源使用原理有一个清晰的认识,并知道在Spark作业运行过程中,有哪些资源参数是可以设置的,以及如何设置合适的参数值。

    02

    软件测试|K8S 容器编排

    初学者容易误以为容器的任务只在于部署行为--将软件在容器中部署以提供持续的服务。但其实容器也同样大量的被应用于批处理程序的运行上。比如测试行为是典型的批处理任务范畴, 它不提供持续稳定的服务, 它只是一段特定的程序,而一但这段测试程序结束后就应该销毁一切,包括执行环境和所占用的资源,容器对比于传统的虚拟机的优势也在于除了容器更加的轻量级外, 容器的创建和销毁都很方便,通过 K8S 的能力可以很方便的在需要时创建,结束时销毁回收资源以达到更好的资源利用率(就如上篇文章中介绍的 Jenkins 与 K8S 打通后的运作模式)。而现在准备的测试案例会更加特殊, 它需要重复运行 N 次,因为本次执行的是稳定性测试(也有人叫它浸泡测试或者长期高压测试),这种测试类型的特殊之处就在于它的目的是验证被测系统在长期的高压下是否仍能够提供稳定的服务。所以它的测试方式是长期的(1 天,1 周甚至更长时间)不间断的运行自动化测试。而自动化测试的数量是有限的,它不可能持续的运行那么长时间,所以才需要重复运行。在不改造测试框架的前提下 K8S 能通过什么样的方式来帮助完成这个测试需求。首先看一段 K8S 提交任务的配置文件。

    01

    一文带你了解K8S 容器编排(下)

    初学者容易误以为容器的任务只在于部署行为--将软件在容器中部署以提供持续的服务。但其实容器也同样大量的被应用于批处理程序的运行上。比如测试行为是典型的批处理任务范畴, 它不提供持续稳定的服务, 它只是一段特定的程序,而一但这段测试程序结束后就应该销毁一切,包括执行环境和所占用的资源,容器对比于传统的虚拟机的优势也在于除了容器更加的轻量级外, 容器的创建和销毁都很方便,通过 K8S 的能力可以很方便的在需要时创建,结束时销毁回收资源以达到更好的资源利用率(就如上篇文章中介绍的 Jenkins 与 K8S 打通后的运作模式)。而现在准备的测试案例会更加特殊, 它需要重复运行 N 次,因为本次执行的是稳定性测试(也有人叫它浸泡测试或者长期高压测试),这种测试类型的特殊之处就在于它的目的是验证被测系统在长期的高压下是否仍能够提供稳定的服务。所以它的测试方式是长期的(1 天,1 周甚至更长时间)不间断的运行自动化测试。而自动化测试的数量是有限的,它不可能持续的运行那么长时间,所以才需要重复运行。在不改造测试框架的前提下 K8S 能通过什么样的方式来帮助完成这个测试需求。首先看一段 K8S 提交任务的配置文件。

    01
    领券