0

我正在尝试使用 1 个主实例和 3 个私有 AWS m3.xlarge 实例(每个实例有 4 个处理器,15GB RAM)来设置 DC/OS Spark-Kafka-Cassandra 集群。

我对几天前在高峰期发生的一些奇怪行为有疑问。

在每个私有节点上,我都保留了以下固定资源(我说的是 CPU 使用率,内存不是问题)

  • 每个节点上的 Cassandra 需要 0.5 个 CPU
  • Kafka每个节点0.3 - 0.5 个 CPU
  • 0.5 CPU 是 Mesos 开销(我只是在 DC/OS UI 中看到,它占用的 CPU 比节点上运行的所有服务的总和多 0.5 CPU -> 这可能属于某种 Mesos 开销)
  • 我可用于运行 Spark 作业的其余资源(大约 2.5 个 CPU)

现在,我想运行 2 个流式作业,以便它们在集群的每个节点上运行。这需要我在dcos spark run命令中设置执行器的数量为 3(虽然我在集群中有 3 个节点),以及 CPU 核心的数量为 3(无法设置 1 或 2,因为到目前为止正如我所见,每个执行程序的最小 CPU 数为 1)。当然,对于每个流式作业,集群中的 1 个 CPU 被驱动程序占用。

我看到的第一个奇怪的情况是,Mesos 在 2 个节点上启动 2 个执行器,而不是运行 3 个执行器,每个执行器有 1 个核心,其中一个有 2 个 CPU,而另一个有 1 个 CPU。即使有足够的资源,也没有在第 3 个节点上启动任何内容。如何强制 Mesos 在集群上运行 3 个执行器?

此外,当我使用 3 个 CPU 运行 1 个管道时,我看到这些 CPU 被阻塞,并且不能被其他流式管道重用,即使它们没有做任何工作负载。为什么 Mesos 不能在应用程序之间转移可用资源?这不是使用 Mesos 的主要好处吗?或者只是没有足够的资源可以转移?

已编辑

另外问题是我可以为每个 Executor 分配少于一个 CPU 吗?

最亲切的问候,

斯尔詹

4

0 回答 0