我在一台机器上安装了 Apache Spark,有 3 个工作进程,每个工作进程有 2 个核心。
现在我有两个 Spark 流应用程序。第一个是用Java编写的,另一个是用Python编写的。
我需要运行这两个应用程序。
当我提交第一个应用程序时,它使用了所有工作人员。当我提交第二个应用程序时,它仍处于 WAITING 状态,因为没有可用的资源可以运行(据我所知)。
有没有办法为第一个应用程序只分配两个工作人员,以便为另一个应用程序留出空间?
最佳答案
您应该在用于创建 sparkContext
的 Spark 配置中设置以下配置属性。
spark.cores.max=<value>
为每个运行的 Spark 作业分配正确的核心数量。 请记住,如果您使用基于消费者的流模型,则需要为您声明的每个消费者保留 1 个核心 + 用于 Spark 处理的附加核心。
关于java - Spark Streaming 应用程序使用所有工作线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36688582/