python - 即使 CPU 可用,Dask Worker 也会花费大量时间 /Hangs
问题描述
我正在尝试使用 dask 分布式自定义工作负载进行并行处理。在运行更多块时,我看到了一些问题。适用于小负载
我正在使用如下期货,custom_compute 是一个独立/线程安全的函数
future_list = client.map(custom_compute,input_list)
for x in as_completed(futures):
logit('gathering result')
outlist_list.append(x.result())
当输入列表大小约为 100 时,它会产生一个问题,我在 EMR 上运行此程序,4CPU 和 32 GB 作为主节点并自动扩展核心节点,每个节点配置为 4CPU 16GB,最多 60 个实例。
cluster = YarnCluster(environment='python:///home/hadoop/miniconda/bin/python', worker_vcores=1, worker_memory='3GiB')
cluster.adapt(wait_count=10,target_duration='240s',interval='30s',minimum=8)
每个 custom_compute 平均需要 3-4 分钟。我有以下查询
上面的用法是正确的还是我们需要在提交时指定 1w, 1process 作为资源
有时进程挂起,没有任何日志,有时它会以 Lost All Workers 完成
通过上面的计算,4 CPU 16 GB 和 60 个实例,它应该能够创建至少 180 个工人 - 每台机器 3 个工人 - 1 个核心保留用于其他处理)
对于附加的图片 - 在 50 分钟内收到了大约 75 名工人的回复,并且超过 2 小时没有收到任何帖子
设置/配置以更快地优化资源和流程
注意:尝试现场运行以及按需运行 aws ec2 任何帮助将不胜感激。
解决方案
推荐阅读
- msal - Microsoft 单点登录 - react-aad-msal 库 - 无法获取访问令牌
- r - 执行 R 代码后未保存全局变量
- r - R n 最相似的时间序列 - dwt 聚类/最近邻
- scala - 如何为泛型类型定义类型
- c# - WCF 如何在 WCF 中传播 DiagnosticSource.Activity 上下文?
- javascript - 我在 Visual Studio 代码中安装聚合物,但有很多错误我收到很多错误
- javascript - 在循环中使用 .getAttribute 添加样式
- java - 附加记录器 - log4j / slf4j / Spring / WildFly
- ruby-on-rails - Rails Action Mailer 并在发送电子邮件时返回 Status 200
- regex - 搜索出现在同一文件中但可能不在同一行的文件中的两个模式