问题标签 [dask-kubernetes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
386 浏览

dask - 在作为单机和集群的临时环境中运行时,如何为 Dask 选择适当数量的线程、工作程序和进程

我们公司目前正在将 prefect.io用于数据工作流程(ELT、报告生成、ML 等)。我们刚刚开始添加由Dask提供支持的并行任务执行功能。我们的流程使用临时AWS Fargate容器执行,该容器将使用 Dask LocalCluster,并将一定数量的工作人员、线程、进程传递到 LocalCluster 对象中。

我们在 Dask 上的旅程看起来很像这样:

  1. 继续使用单机 LocalCluster 直到我们超出允许的最大 cpu/内存
  2. 当我们扩展单个容器时,在初始容器上生成额外的工作容器(la dask-kubernetes)并将它们加入 LocalCluster。

我们目前从具有 256 个 cpu(.25 vCPU) 和 512 个内存的容器开始,并将 LocalCluster 固定到 1 个 n_workers 和 3 个 thread_per_worker 以获得合理数量的并行度。但是,这确实是猜测工作。1 n_workers,因为它是一台少于​​ 1 个 vcpu 和 3 个线程的机器,因为根据我之前在 Fargate 中运行其他基于 python 的应用程序的经验,这对我来说听起来并不疯狂。在一个非常简单的示例中,这似乎可以正常工作,该示例仅将函数映射到项目列表。

我看到一次执行的任务不超过 3 个。

我真的很想了解如何最好地配置 n_workers(单机)、线程、进程,因为我们将单机的大小扩展到添加远程工作人员。我知道这取决于我的工作量,但是您可以在单个流程中看到多个事物的组合,其中一个任务从数据库提取到 csv,而另一个任务运行 pandas 计算。我在网上看到的东西似乎应该是线程=文档请求的 cpu 数量,但似乎您仍然可以在 Fargate 中使用少于一个 cpu 实现并行性。

任何反馈都将不胜感激,并可以帮助其他希望以更短暂的方式利用 Dask 的人。

鉴于对于 vCPU,Fargate 从 .25 -> .50 -> 1 -> 2 -> 4 递增,我认为将 1 个工作人员设置为 1 个 vcpu 设置是安全的。但是,考虑到 Fargate vcpu 分配的工作原理,了解如何为每个工作人员的线程数选择一个好的上限会很有帮助。

0 投票
1 回答
189 浏览

python - 对于长时间运行的任务,推荐的 dask-kubernetes 配置覆盖是什么?

我正在使用文档中提供的示例中的内容

在我的例子中,这个execute()函数做了很多 IO,运行大约需要 5-10 分钟。我想以KubeCluster某种方式配置 and dask 调度程序,以最大限度地提高所有这些长期运行任务的顺利进行的机会。

我的问题有两个部分。首先,如何覆盖distributed配置设置?我想尝试类似的东西

但我不知道设置它的正确位置是什么。具体来说,我不知道这是否是每个工作人员都应该知道的事情,或者我是否可以通过仅在实例化KubeCluster.

我的问题的第二部分与对长时间运行(超过几分钟)的任务的建议有关。我一直在尝试使用默认设置。有时一切顺利,有时compute()调用失败,但出现以下异常:

我正在从 master 分支运行最近的提交:dask-kubernetes@git+git://github.com/dask/dask-kubernetes.git@add93d56ba1ac2f7d00576bd3f2d1be0db3e1757.

编辑:

我更新了我的代码片段,以表明我正在调用该adapt()函数,并将最小数量的工作人员设置为 0。我开始想知道是否达到 0 个工作人员可能会导致调度程序在它返回compute()结果之前关闭。

0 投票
1 回答
220 浏览

azure-storage-files - 您如何使用 dask-kubernetes 在 Dask 工作人员上挂载卷?

我使用以下代码创建了一个集群

使用以下 yaml 代码 ( worker.yaml):

这按预期工作。现在我添加了一个卷挂载,如图所示

我没有看到已安装卷。但是当我简单地跑

我可以看到卷已安装。

是否KubeCluster支持卷挂载?如果是这样,您如何配置它们?

0 投票
1 回答
362 浏览

python - 如何为 dask_kubernetes 配置 jupyterlab?

我正在尝试配置 jupyterlab dask 扩展,以便“新建”集群按钮将创建一个KubeCluster而不是默认的LocalCluster.

尝试编辑~/.config/dask/labextension.yml使其具有以下内容:

(来源:https ://github.com/pangeo-data/pangeo-cloud-federation/blob/8f7f4bf9963ef1ed180dd20c952ff1aa8df54ca2/deployments/ocean/image/binder/dask_config.yaml#L37-L42 )

然而,使用笔记本按钮创建一个新集群仍然会创建一个LocalCluster. 我错过了什么?

0 投票
1 回答
151 浏览

pandas - Dask 如何在云中的多个 vm 上执行代码

我用 dask 和延迟写了一个程序,现在我想在云中的几台机器上运行它。但是有一件事我不明白 - dask 如何在云中的多台机器上运行代码而没有代码的所有依赖项?

0 投票
1 回答
537 浏览

docker - 在dask中,运行本身运行docker容器的任务的最简单方法是什么?

以下代码将函数映射到可迭代对象上。应用于每个元素的函数运行一个 docker 容器以计算其返回值:

在 dask 中通过云计算资源并行化这种计算的最简单方法是什么?

例如,如果可以执行以下操作,那就太好了。但这当然不起作用,因为在 Fargate 上执行 python 代码的 docker 容器正在运行默认的 dask 映像,因此没有能力自己生成 docker 容器(我不确定是否有或不是这个“docker-in-docker”方向的解决方案):

我正在寻找一种不涉及在同一个 docker 映像中容纳不相关代码的解决方案。即,我希望我的任务用于其计算的 docker 映像是任意的第三方映像,我不必通过添加 python/dask 依赖项来更改它。所以我认为这排除了基于改变下一个工作节点使用的图像的解决方案dask_cloudprovider.FargateCluster/ECSCluster,因为这将不得不容纳 python/dask 依赖项。

0 投票
1 回答
193 浏览

google-kubernetes-engine - dask-kubernetes: Issue creating pod with uppercase username

I am learning dask-kubernetes on GKE.

I stumbled across an asyncio error (ERROR:asyncio:Task exception was never retrieved).

See steps below for the issue.

However, additional guidance on using deploying dask-kubernetes with a remote Kubernetes cluster is appreciated (note I used helm with good experience here but want to try the native approach as I can't scale the helm approach).

Create the cluster:

Create a new python environment:

Install the package:

Authenticate the project by putting this in my .bash_profile:

Start a notebook:

Run commands and use the example here

0 投票
2 回答
464 浏览

python - 连接到现有的 Kubernetes Dask 集群

使用Helm,我创建了一个 Dask 集群。

我可以运行基本的 Dask 工作负载。

现在,我想以某种方式将它连接到客户端:

如果我想启动一个集群,这很有效:

但是如何连接到现有集群?

0 投票
1 回答
57 浏览

python - 如何将 .pem 文件发送到 Dask 集群?

我有一个如下的 dask 表达式,我试图以分布式方式运行 sqlalchemy 查询。connect_args但是,它引用了在参数中输入的 .pem 密钥文件。如何将此密钥文件上传到 dask 集群/工作人员,以便它允许我运行此 sqlalchemy 查询?

我尝试使用client.upload_file将本地文件发送到集群,但它抱怨它无法找到 .pem 密钥的路径

0 投票
1 回答
77 浏览

python - dask kubernetes 导入本地库

在本地项目上工作时,会因为未安装from local_project.funcs import local_func而在集群中失败。local_project

这迫使我在同一个文件上开发所有内容。

解决方案?有没有办法将模块的内容“导入”到工作文件中,以便集群不需要导入它?

在集群中安装对local_project开发不友好,因为导入功能的任何更改都需要重新部署集群。