我们有一个CDH集群(版本5.14.4),其中有6个工作服务器,总共有384个vcore(每个服务器64个核心)。我们正在使用dask
版本2.8.1,dask-yarn
版本0.8和skein
0.8运行一些ETL流程。目前,我们在分配最大工人数方面遇到问题。我们无法与18名工人一起工作! (我们可以在dask dashboad中看到实际的工人人数。集群的定义如下:
cluster = YarnCluster(environment = 'path/to/my/env.tar.gz',
n_workers = 24,
worker_vcores = 4,
worker_memory= '64GB'
)
即使将工人人数增加到50,也没有任何变化,尽管在更改worker_vcores
或worker_memory
时我们可以在仪表板上看到更改。
有什么建议吗?
有许多原因可能会导致一项工作被拒绝提供更多的容器。您的群集中是否有足够的内存来分配那么多64 GiB
块?此外,64 GiB是否在整个群集节点上均匀平铺?您的YARN群集是否配置为允许此队列中的作业很大?是否有竞争性工作也在占用资源?
您可以使用ApplicationClient.get_containers
方法查看所有容器的状态。
ApplicationClient.get_containers
您可以过滤状态>>> cluster.application_client.get_containers()
以仅查看待处理的容器
REQUESTED
这应该使您对请求但未分配的内容有所了解。
[如果您怀疑dask-yarn中的错误,请随时提交问题(包括来自应用程序主服务器的日志,以进行有问题的运行),但是我怀疑这与您请求的容器大小有关,并且队列的配置/当前使用方式。