【问题标题】:What causes Dask futures to get stuck in 'pending' state?是什么导致 Dask 期货陷入“待定”状态?
【发布时间】:2020-05-26 20:10:25
【问题描述】:

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

>>> def add1(n): return n + 1
...
>>> client = Client(my_ip + ':8786')

但是当我运行client.submit 时,我收到distributed.protocol.pickle“无法反序列化b'...'”错误消息或Futures 卡在“待处理”状态:

>>> 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>

似乎pickle协议错误只会在我提交第一份工作时发生一次,然后一切都卡在pending中。

来自kubectl,我看到我有:

  • 一个名为dask-schedulerLoadBalancer服务,
  • 两个部署:1x dask-scheduler 和 3x dask-worker
  • 以及对应的一个dask-scheduler-...和三个dask-worker-... pod

什么会导致这种情况,我该如何调试?我打开了 Dask 调度程序的 Web 界面,它显示我有一个错误的 add1 实例,但它没有提供任何细节。

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

    # ...
    && 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

编辑:我会注意到,如果我部署 Dask 映像(我的 K8s 清单中的image: "daskdev/dask:2.11.0"),一切正常。因此,在尝试创建自定义 Docker 映像时,Dask 似乎配置错​​误。我注释掉了我对Dockerfile 的更改,在我的本地和ACR 图像上运行docker rmi,拆除了我已部署的服务和部署,然后重建了一个容器,推送它并进行了部署,但它仍然失败。

【问题讨论】:

    标签: python dask dask-distributed dask-kubernetes


    【解决方案1】:

    看起来问题在于我成功部署的 Dask 映像与我创建自己的映像的 Dockerfile 之间的区别。前者(2.11.0),bakes in Dask 2.11.0,而后者bakes in both Dask 2.16.0 and Python 3.8。这些版本中的一些差异会导致问题。

    当我更新我的 Dockerfile 以使用 2.11.0 并删除显式 Python 依赖项时,一切正常。

    【讨论】:

      猜你喜欢
      • 2023-01-19
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 2021-10-14
      • 2010-09-09
      • 2021-07-16
      • 2019-03-02
      • 1970-01-01
      相关资源
      最近更新 更多