导致Dask期货陷入“待定”状态的原因?

问题描述 投票:0回答:1

我基于Dockerfile创建了自己的经过稍微修改的the dask-docker Dockerfile,该dask-docker安装了Dockerfile并将我的自定义库之一复制到容器中,以使其可用于所有工作程序节点。我将容器部署到了Kubernetes集群,并通过本地计算机上的REPL连接到它,在本地创建了客户端和函数:

adlfs

但是当我运行>>> def add1(n): return n + 1 ... >>> client = Client(my_ip + ':8786') 时,出现client.submit“未能反序列化b'...'”错误消息或期货卡在“待定”状态:

distributed.protocol.pickle

似乎当我提交第一个作业时,只会发生一次pickle协议错误,然后,所有内容都停留在>>> f = client.submit(add1, 2) >>> distributed.protocol.pickle - INFO - Failed to deserialize b'\x80\x05\x95\xba\x03\x00\x00\x00\x00\x00\x00\x8c\x16tblib.pickling_support...' ... ValueError: unsupported pickle protocol: 5 >>> >>> f = client.submit(add1, 2) >>> f <Future: pending, key: add1-d5d2ff94399d4bb4e41150868f4c6da7> 中。

pending,我看到我有:

  • 一个名为kubectlLoadBalancer服务,
  • 两个部署:1x dask-scheduler和3x dask-scheduler
  • 以及相应的一个dask-worker和三个dask-scheduler-...窗格

什么会导致这种情况,我该如何调试?我打开了Dask调度程序的Web界面,它表明我有一个dask-worker-...实例,该实例有错误,但没有提供任何详细信息。

对于它的价值,我对add1所做的唯一更改是:

Dockerfile

Edit:我会注意到,如果我部署Dask映像(在我的K8s清单中为 # ... && find /opt/conda/lib/python*/site-packages/bokeh/server/static -type f,l -name '*.js' -not -name '*.min.js' -delete \ && rm -rf /opt/conda/pkgs RUN pip install adlfs==0.3.0 # new line COPY prepare.sh /usr/bin/prepare.sh # existing line COPY foobar.sh /usr/bin/foobar.sh # new line COPY my_file.so /usr/bin/my_file.so # new line ),一切正常。因此,在尝试创建自定义的Docker映像时,Dask似乎配置错​​误。我注释了对image: "daskdev/dask:2.11.0"的更改,在本地和Dockerfile映像上运行了docker rmi,拆除了已部署的服务和部署,然后重新构建了一个容器,将其推送并进行了部署,但是它still 失败。

python dask dask-distributed dask-kubernetes
1个回答
0
投票
[当我将bakes in both Dask 2.16.0 and Python 3.8更新为使用2.11.0并删除显式的Python依赖关系时,一切正常。
© www.soinside.com 2019 - 2024. All rights reserved.