我们创建了一个由多个 Spark Streaming 应用程序组成的系统,每个应用程序都有多个接收器。据我了解,每个接收器都需要在集群中拥有自己的核心。我们需要多个接收器来适应峰值,但我们并不总是需要它们。应用程序很小,只执行一项任务,以便在集群上(重新)提交它们而不会分散其他作业和任务的注意力。
1)假设我们有 5 个作业,每个作业有 5 个接收器,我们将需要集群中至少 25 个核心,仅用于接收器运行 + 核心用于处理。这是正确的吗?
2) 是否有可能进行更动态的资源分配,或者一个核心是否严格绑定到一个接收器?
3) 我查看了 spark-rest-server,它提供了在不同工作中共享 spark 上下文的可能性。您能想到为所有(约 100 个)作业使用一个 SparkStreamingContext 吗?
我们在独立模式下运行集群,同时在相同节点上运行 Cassandra 集群。