分享

cpu core的理解?

已有(6)人评论

跳转到指定楼层
easthome001 发表于 2017-3-10 17:37:26
core 配置项控制一个 executor 中task的并发数。 --executor-cores 2 意味着每个 executor 中最多同时可以有2个 task 运行。

--executor-cores 5 意味着每个 executor 中最多同时可以有5个 task 运行。
这里的core与cpu的core是两码事的
回复

使用道具 举报

SuperDove 发表于 2017-3-10 18:13:59
easthome001 发表于 2017-3-10 17:37
core 配置项控制一个 executor 中task的并发数。 --executor-cores 2 意味着每个 executor 中最多同时可以 ...

嗯嗯,我知道--executor-cores 2最多允许两个task同时运行但是这个同时运行的个数不能超过物理机(这里的虚拟机)的cpu core个数吧?
我曾经用spark-submit把--executor-cores 调到4之后,提出如下错误
WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
资源申请数不够
这又如何理解?

点评

个人认为:本身应该是资源不够,而非core的问题  发表于 2017-3-10 19:10
回复

使用道具 举报

SuperDove 发表于 2017-3-10 18:16:32
easthome001 发表于 2017-3-10 17:37
core 配置项控制一个 executor 中task的并发数。 --executor-cores 2 意味着每个 executor 中最多同时可以 ...

executor-cores
参数说明:该参数用于设置每个Executor进程的CPU core数量。这个参数决定了每个Executor进程并行执行task线程的能力。因为每个CPU core同一时间只能执行一个task线程,因此每个Executor进程的CPU core数量越多,越能够快速地执行完分配给自己的所有task线程。

原先的一个网友这样回答的这个参数,所以,这个还是跟CPU的core有关?

回复

使用道具 举报

easthome001 发表于 2017-3-10 19:12:54
SuperDove 发表于 2017-3-10 18:16
executor-cores
参数说明:该参数用于设置每个Executor进程的CPU core数量。这个参数决定了每个Executor ...

1.这里他说的也没错,因为cpu core越多处理能力也强,但是个人认为二者没有直接关系.
2.
每个CPU core同一时间只能执行一个task线程

这样说的话,以前cpu 512,1核,应该就不能跑程序了

回复

使用道具 举报

moonlight.ml 发表于 2018-6-7 17:07:37
SuperDove 发表于 2017-3-10 18:13
嗯嗯,我知道--executor-cores 2最多允许两个task同时运行但是这个同时运行的个数不能超过物理机(这里的 ...

或许有这种可能:集群资源不足,也可能是因为内存不足。如果是数据倾斜的情况,每个task要处理的数据非常不均匀,如果设置的--executor core越多,那么集群资源不变的情况下,内存大小不变,对应每个task分配到的内存就越小,因为对同一个executor内的task内存是平均分配的。(一个executor可能运行一个或者多个task)那么大内存需求的task很可能内存不够,需要一直等待内存释放。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条