问题标签 [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.
amazon-web-services - `dask-kubernetes` 调度程序 - AWS 上的工作人员
我一直在尝试dask.distributed
使用kubernetes
. 设置kube
集群本身非常简单,我目前正在努力解决的问题是我无法让本地调度程序连接到工作人员。Worker 可以连接到调度程序,但它们会在网络内部通告一个地址,而在kube
网络外部运行的调度程序无法访问该地址kube
。
按照dask-kubernetes
文档中的示例,我得到了一个kube
在 AWS 上运行的集群,并且(在单独的 AWS 机器上)notebook
使用本地dask.distributed
调度程序启动了一个。调度程序在集群上启动了许多工作人员kube
,但它无法连接到这些工作人员,因为工作人员位于不同的网络上:内部kube
网络。
网络设置如下所示:
- 在 192.168.0.0/24 上运行的笔记本服务器
kube
集群 EC2 实例也在 192.168.0.0/24kube
100.64.0.0/16 上的豆荚
dask
调度程序运行192.168.0.0/24
但dask
工作人员正在运行-100.64.0.0/16
我如何连接两者?我是否也应该在kube
pod 中运行调度程序、编辑路由表、尝试找出主机在工作人员上的 IP 地址?
工作人员能够连接到调度程序,但在调度程序中我得到了一个错误的形式
Distributed.scheduler - 错误 - 无法连接到工作人员 'tcp://100.96.2.4:40992':在 3.0 秒后尝试连接到 'tcp://100.96.2.4:40992' 时超时:connect() 没有及时完成
我不是在寻找我可以做的事情的列表,而是在寻找推荐的设置方式,特别是与dask.distributed
.
我kube
使用kops
.
python - 如何让自适应 dask 工作人员在启动时运行一些代码?
我正在使用 dask-kubernetes 创建一个 dask 调度程序并将其置于自适应模式。
我需要每个工作人员在创建时运行一些设置代码(使用 设置一些环境变量os.environ
),以便任务正确执行。
我在文档中看到有一个--preload
从命令行开始的工人标志。我猜我需要将它直接设置到某个地方的自适应调度程序中。
如何将代码传递给我的工人以在他们开始时执行?
dask - Dask 上的 Jupyter Hub 使用内部负载平衡器
我想问你是否有人有使用内部负载均衡器在 DASK 上配置 Jupyterhub 的经验?如果 Jupyter Hub 的负载均衡器将映射到特定的内部 IP 或子网,则默认设置带有 External 优选?我正在尝试设置无法从外部访问的环境。
我之前已经设法通过使用此 repo 编辑 config.yaml 来使用 Internal LoadBalancer 设置 JupytherHub 进行安装:https ://jupyterhub.github.io/helm-chart/
但这对于 dask 是不可能的。
有没有办法实现这个或其他方式?欢迎任何建议!
谢谢
kubernetes - 在 Azure Kubernetes 服务 (AKS) 中处理 Dask Kubernetes 上的大数据
我想对笔记本电脑硬盘中的 8gb 数据集(如 csv 文件)进行分析。我已经在 AKS 上设置了一个 dask kubernetes 集群,其中有 1 个调度程序和 3 个工作程序,每个 7 GB。
如何在 AKS 上使用这个 dask kubernetes 集群处理我的数据集?哪个文件系统在工作人员之间共享数据集最适合此目的?
任何我应该在哪里存储这个数据集的建议,以便我可以轻松地处理这个数据集。
该方法应该适用于 jupyter notebook 和 python 文件。
dask - 工人无法用 rasterio 反序列化
在 Google Cloud 上部署官方 Dask Helm 图表后,我使用一些额外的 conda 包更新了环境,特别是 xarray 和 rasterio。如果我尝试运行我的代码,我会从工作人员日志中返回此错误,并且程序会停止。
回溯(最后一次调用):文件“/opt/conda/lib/python3.7/site-packages/tornado/ioloop.py”,第 743 行,在 _run_callback ret = callback() 文件“/opt/conda/lib /python3.7/site-packages/tornado/ioloop.py”,第 767 行,在 _discard_future_result future.result() 文件中“/opt/conda/lib/python3.7/site-packages/tornado/gen.py”,第 742 行,在运行中 yielded = self.gen.throw(*exc_info) # 类型:忽略文件“/opt/conda/lib/python3.7/site-packages/distributed/worker.py”,第 661 行,在 handle_scheduler self .ensure_computing]) 文件“/opt/conda/lib/python3.7/site-packages/tornado/gen.py”,第 735 行,运行值 = future.result() 文件“/opt/conda/lib/python3 .7/site-packages/tornado/gen.py",第 742 行,运行中 yielded = self.gen.throw(*exc_info) # type: ignore File "/opt/conda/lib/python3.7/site-packages/distributed/core.py”,第 386 行,在 handle_stream msgs = yield comm.read() 文件“/opt/conda/lib/python3.7/site- packages/tornado/gen.py”,第 735 行,运行中 value = future.result() 文件“/opt/conda/lib/python3.7/site-packages/tornado/gen.py”,第 742 行,运行中yielded = self.gen.throw(*exc_info) # type: ignore File "/opt/conda/lib/python3.7/site-packages/distributed/comm/tcp.py", line 206, in read deserializers=deserializers)文件“/opt/conda/lib/python3.7/site-packages/tornado/gen.py”,第 735 行,运行值 = future.result() 文件“/opt/conda/lib/python3.7/site -packages/tornado/gen.py”,第 209 行,在 wrapper 中产生 = next(result) 文件“/opt/conda/lib/python3.7/site-packages/distributed/comm/utils.py”,第 82 行,在 from_frames res = _from_frames() 文件“/opt/conda/lib/python3.7/site-packages/distributed/comm/utils.py”,第 68 行,在 _from_frames deserializers=deserializers) 文件“/opt/conda/lib /python3.7/site-packages/distributed/protocol/core.py”,第 132 行,加载值 = _deserialize(head, fs, deserializers=deserializers) 文件“/opt/conda/lib/python3.7/site- packages/distributed/protocol/serialize.py”,第 184 行,在反序列化返回加载(标题,帧)文件“/opt/conda/lib/python3.7/site-packages/distributed/protocol/serialize.py”,行57,在 pickle_loads 中返回 pickle.loads(b''.join(frames)) 文件“/opt/conda/lib/python3.7/site-packages/distributed/protocol/pickle.py”,第 59 行,在负载中返回pickle.loads(x) 文件“/opt/conda/lib/python3.7/site-packages/rasterio/7/站点包/rasterio/init .py",第 22 行,in from rasterio._base import gdal_version ImportError: libzstd.so.1: cannot open shared object file: No such file or directory
对于我的理解,问题似乎是缺少或损坏的库 libzstdl,对吗?我无法尝试重新安装它,因为我没有管理员权限。helm carts 是基于官方的 dask/docker 版本 谁能帮我看看在哪个频道上报告这个问题比较好?
python - 在 Kubernetes 上部署自适应多用户 Dask 集群
在 Kubernetes 上部署自适应多用户 Dask 集群的正确方法是什么?
我需要一个集中的机器集群,多人可以用于他们的工作,以便它可以添加更多机器或删除它们(最好是 0 个工人)。
amazon-web-services - 如何将 dask-kubernetes 自适应集群部署到 aws kubernetes 实例上
我正在尝试将自适应 dask kubernetes 集群部署到我的 aws K8s 实例(我想使用此处找到的 kubeControl 接口)。我不清楚我在哪里以及如何执行此代码以使其在我现有的集群上处于活动状态。除此之外,我还想要一个入口规则,以便我拥有的另一个 ec2 实例可以连接到集群并在 aws VPC 中执行代码,以维护安全性和网络性能。
到目前为止,我已经设法获得了一个运行 dask 和 jupyterhub 的功能性 k8s 集群。我正在使用此处找到的示例舵图,它在此处引用docker 图像。我可以看到这个图像甚至没有安装 dask-kubernetes。话虽如此,我可以使用暴露的 AWS dns 服务器从我的其他 ec2 实例连接到该集群并执行自定义代码,但这不是 kubernetes 原生 dask 集群。
我一直致力于为 kubernetes 修改部署 yaml,但我不清楚我需要更改什么才能让它使用正确的 kubernetes 集群/调度程序。我确实知道我需要修改我在安装 dask-kubernetes 时使用的 docker 映像,但这仍然对我没有帮助。下面是我正在使用的示例 helm 部署图表
python - Dask Kubernetes worker pod 给出错误状态
我正在关注链接:https : //kubernetes.dask.org/en/latest/,在 Kubernetes 集群上运行 dask 数组。运行示例代码时,worker pod 显示错误状态如下:
脚步:
在 3 个节点(1 个主节点和 2 个工作节点)上安装了 Kubernetes。
pip install dask-kubernetes
dask_example.py 带有运行 dask 数组的代码(与链接上给出的示例相同)
带有 pod 配置的 Worker-spec.yml 文件(与链接上给出的示例相同)
更新 - 添加 pod 日志(如 Dawid Kruk 所建议):
在我看来,与工作节点的 dask pod 连接是问题,但我看到工作节点处于就绪状态,其他 pod(nginx)正在工作节点上运行:
Update2 - 添加了 nslookup 输出(由 VAS 建议)参考:https ://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/#create-a-simple-pod-to-use-as-a -测试环境
如何将可执行文件添加到 pod?它设置在我的主机上。
更新 3:用于 dnsutils 的 nslookup(由 VAS 建议)
更新 4:
来自工作节点 1 的 nslookup
来自工作节点 2 的 nslookup
dask - GKE 上的 dask-kubernetes 零工人
菜鸟在这里。我想安装一个带有工作池的 Dask,该工作池可以根据当前需求增长和缩小。我按照零中的说明将 jupyterhub 安装在 GKE 上,然后浏览了 dask-kubernetes 的安装说明:https ://kubernetes.dask.org/en/latest/ 。
我最初遇到了一些权限问题,所以我创建了一个具有所有权限的服务帐户,并将我的 config.yaml 更改为使用这个服务帐户。这消除了权限问题,但是现在当我使用默认的 worker-spec.yml 运行这个脚本时,我没有得到任何工人:
当我列出我的 pod 时,我看到很多工作人员处于待处理状态:
当我描述每个 pod 时,我看到内存不足,cpu 错误:
我需要在 GKE 中手动创建一个新的自动缩放池吗?我现在只有一个池,即运行 jupyterlab 的池,并且该池已经完全提交。我不知道是什么配置导致 dask 弄清楚将工人放在哪个池中。
python - 尝试导入本地模块时,worker 上的 ModuleNotFoundError #222
ModuleNotFound
尝试导入本地模块时,工作程序 Pod 出现错误。我可以在主节点上毫无问题地导入。主人和工人使用完全相同的图像。
图像上的工作目录组织如下:
笔记本类似于
产生:
我没有在 docker 映像中“安装”模块,我只是假设 worker pod 上的工作目录与 docker 映像上的 WORKDIR 相同。这是不正确的吗?我需要创建setup.py
并安装MyModule
吗?
谢谢!