首页 > 解决方案 > DASK 无法识别 EMR 上的工作人员

问题描述

我有一个脚本来并行化网络抓取工作。我们想为此使用 joblib 和 dask。我在 EMR 上创建了一个集群,但我不知道如何在 EMR 上使用 dask。

当我缩放它时,它似乎有 4gb 内存,但实际上我每个都有 16gb 内存。我想扩展它以使用所有实例及其容量。我如何做到这一点以及如何以编程方式扩展 DASK 客户端以扩展自身以获得最大容量。(例如,今天我使用 3 个实例,但有时在我们启动集群时会是 10-20-30 等)

EMR 集群:

1 主 - m5.xlarge 4 vCore,16 GiB 内存

2 核 - m5.xlarge 4 vCore,16 GiB 内存

from dask_yarn import YarnCluster
from dask.distributed import Client

cluster = YarnCluster()
client = Client(cluster)

client.scale(2)

print(client)

[OUT] <Client: 'tcp://172.31.27.208:33307' processes=2 threads=2, memory=4.29 GB>

with joblib.parallel_backend('dask'):
    parse_results: List[Dict[str, Any]] = Parallel()(delayed(parse)(i) for i in range(min_id, max_id))

标签: pythondaskamazon-emrdask-distributedjoblib

解决方案


推荐阅读