故障排除
目录
故障排除¶
本文档包含常见故障排除问题。
无法连接到调度器¶
最常见的问题是集群构建完成后无法连接到集群。
每个集群管理器都会构建一个 Dask 调度器,并默认通过一个公共 IP 地址暴露它。您必须能够从您的 Python 会话连接到该地址的端口 8786
和 8787
。
如果您无法连接到此地址,可能是您的网络配置有问题,例如您的账户上可能存在实施额外防火墙规则的公司策略。
为了降低发生这种情况的可能性,最简单的方法通常是在您正在使用的云环境中运行 Dask Cloudprovider,并仅配置私有网络。有关详细信息,请参阅您特定集群管理器的文档。
无效的 CPU 或内存配置¶
使用 FargateCluster
或 ECSCluster
时,CPU 和内存参数只能取固定组合集中的值。
因此,例如,以下代码会导致错误:
from dask_cloudprovider.aws import FargateCluster
cluster = FargateCluster(
image="daskdev/dask:latest",
worker_cpu=256,
worker_mem=30720,
n_workers=2,
fargate_use_private_ip=False,
scheduler_timeout="15 minutes"
)
client = Client(cluster)
cluster
# botocore.errorfactory.ClientException:
# An error occurred (ClientException) when calling the RegisterTaskDefinition operation:
# No Fargate configuration exists for given values.
这是因为 CPU 为 256
的 ECS 和 Fargate 任务定义无法拥有该代码请求的那么多内存。
AWS 接受的组合集记录在 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-cpu-memory-error.html。
请求的 CPU 配置超出限制¶
创建 FargateCluster
或 ECSCluster
,或添加更多 worker 时,您可能会收到错误响应:“请求的 CPU 配置超出您的限制”。这意味着请求的调度器和 worker 以及您在该区域运行的任何其他 EC2 资源使用的 vCPU 超过了您的当前服务配额 vCPU 限制。
您可以使用 scheduler_cpu
和 worker_cpu
参数来调整调度器和/或 worker 的 CPU。有关详细信息,请参阅本文档中的“无效的 CPU 或内存配置”部分。
但是,要获得所需的集群配置,您需要申请提高服务限制配额。
前往 https://<region>.aws.amazon.com/servicequotas/home/services/ec2/quotas
并 申请提高 “Running On-Demand Standard (A, C, D, H, I, M, R, T, Z) 实例”的配额。
拉取私有 Docker 镜像¶
对于像 EC2Cluster
、AzureVMCluster
和 GCPCluster
这样的集群管理器,Docker 镜像将被拉取到您选择的云上创建的虚拟机 (VM) 中。
如果您需要拉取需要身份验证的私有 Docker 镜像,每个虚拟机都需要配置凭据。这些集群管理器接受一个 extra_bootstrap
参数,您可以在其中提供启动时运行的额外 bash 命令。这是一个登录到您的 Docker 仓库的好地方。
from dask_cloudprovider.azure import AzureVMCluster
cluster = AzureVMCluster(...
docker_image="my_private_image:latest",
extra_bootstrap=["docker login -u 'username' -p 'password'"])
如果您需要在 GCP 中访问 Artifact/Container Registry,一种方法是使用 gcloud 凭据助手 对 Docker 进行身份验证,方法是添加类似于下面的额外 bootstrap 参数:
from dask_cloudprovider.gcp import GCPCluster
cluster = GCPCluster(...
docker_image=f"{region}-docker.pkg.dev/{project}/{repo}/{image}:{tag}",
extra_bootstrap=[f"gcloud auth configure-docker {region}-docker.pkg.dev"])