我尝试使用K8s设置Spark集群(我使用独立部署模式,由于某种原因我无法使用k8s部署模式)
我没有设置任何与CPU相关的参数。
对于火花,这意味着:
总共可以允许Spark应用程序在计算机上使用的CPU内核(默认值:全部可用);仅在工人上
对于k8s吊舱,这意味着:
如果您未为容器指定CPU限制,则适用以下情况之一:
容器在可使用的CPU资源上没有上限。容器可以使用运行它的节点上所有可用的CPU资源。
容器在具有默认CPU限制的命名空间中运行,并且自动为容器分配了默认限制。群集管理员可以使用LimitRange指定CPU限制的默认值。
https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource/
$this->user()
但是我的spark worker仅使用1个核心(我在worker节点上具有4个核心,并且命名空间没有资源限制)。
这意味着spark worker pod只使用了节点的1个核心(应该是4个)。
如何编写yaml文件以将pod设置为使用所有可用的cpu内核?
这是我的Yaml文件:
public function setUp(): void
{
parent::setUp();
$this->subject = new \App\Http\Requests\OrderStoreRequest();
}
// Acting as has no effect when manually creating the orderStoreRequest object
public function testAuthorize()
{
$this
->actingAs(\factory(User::class)->create())
->assertTrue($this->subject->authorize());
}
答案 0 :(得分:1)
容器在可以使用的CPU资源上没有上限。容器可以使用其正在运行的节点上所有可用的CPU资源
除非您为Pod配置CPU上的limit
,否则它可以使用节点上所有可用的CPU资源。
考虑专用节点
如果您在同一节点上运行其他工作负载,它们也会消耗CPU资源,并且如果它们为CPU配置了request
,则可能会保证有CPU资源。考虑使用NodeSelector
和Taints and Tolerations为工作负载使用专用节点。
您configure the slave使用start-slave.sh
的参数,例如--cores X
以限制 CPU核心使用率。
允许在计算机上使用Spark应用程序的全部CPU内核(默认:全部可用);仅在工人上
最后,pod是否可以使用多个CPU内核取决于您的应用程序使用线程的方式。有些东西只使用一个线程,因此该应用程序必须设计用于多线程,并且必须要做 parallelized 。