Dask分布式产品属性错误:';高级图形';对象没有属性'__分布式数据包;

Dask分布式产品属性错误:';高级图形';对象没有属性'__分布式数据包;,dask,dask-distributed,Dask,Dask Distributed,我在3台AWS T2机器上有一个小型开发集群。一台机器作为客户机,一台作为调度器,最后一台作为工作者。我在所有3台电脑上都执行了git克隆,并手动安装了Numpy版本1.21.0。但是,当遵循基本设置时,在Python3(3.8)解释器上执行A=client.map(square,range(10))时会产生下面的错误。如何解决这个问题?似乎是内部错误,Dask是通过在客户端计算机上安装pip获得的 ubuntu@ip-172...:~$ python3 Python 3.8.5 (defaul

我在3台AWS T2机器上有一个小型开发集群。一台机器作为客户机,一台作为调度器,最后一台作为工作者。我在所有3台电脑上都执行了git克隆,并手动安装了Numpy版本
1.21.0
。但是,当遵循基本设置时,在Python3(3.8)解释器上执行A=client.map(square,range(10))时会产生下面的错误。如何解决这个问题?似乎是内部错误,Dask是通过在客户端计算机上安装pip获得的

ubuntu@ip-172...:~$ python3
Python 3.8.5 (default, Jan 27 2021, 15:41:15) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from dask.distributed import Client
>>> client = Client('IPv4Addr:8786')
>>> client
<Client: 'tcp://172...:8786' processes=1 threads=4, memory=8.18 GB>
>>> def square(x):
...     return x ** 2
... 
>>> A = client.map(square, range(10))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.8/dist-packages/distributed-2021.2.0+19.g2c5d2cf8-py3.8.egg/distributed/client.py", line 1764, in map
    futures = self._graph_to_futures(
  File "/usr/local/lib/python3.8/dist-packages/distributed-2021.2.0+19.g2c5d2cf8-py3.8.egg/distributed/client.py", line 2542, in _graph_to_futures
    dsk = dsk.__dask_distributed_pack__(self, keyset)
AttributeError: 'HighLevelGraph' object has no attribute '__dask_distributed_pack__'
ubuntu@ip-172…:~$python3
Python 3.8.5(默认值,2021年1月27日,15:41:15)
linux上的[GCC 9.3.0]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>从dask.distributed导入客户端
>>>client=client('IPv4Addr:8786')
>>>客户
>>>def方形(x):
...     返回x**2
... 
>>>A=客户端映射(正方形,范围(10))
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/lib/python3.8/dist-packages/distributed-2021.2.0+19.g2c5d2cf8-py3.8.egg/distributed/client.py”,地图第1764行
期货=自我。\图\到\期货(
文件“/usr/local/lib/python3.8/dist-packages/distributed-2021.2.0+19.g2c5d2cf8-py3.8.egg/distributed/client.py”,第2542行,在图中
dsk=dsk.\uuuuu dask\uu分布式\uu包\uuuuuuuu(自,密钥集)
AttributeError:“HighLevelGraph”对象没有属性“\uu dask\u distributed\u pack\uuu”

对于任何有相同问题的人,一个可能的解决方案(对我们有效的解决方案)是创建一个虚拟环境,您将在其中安装Dask及其所有依赖项

1-在新创建的venv上安装Dask

2-使用
$pip freeze>~/requirements.txt

3-在工人和客户机上创建一个venv,并在所述env上执行
$pip安装-r requirements.txt


这将保证相同的环境,并有望防止各种问题,如原始问题中详述的问题。

我们收到了相同的错误消息。结果表明,我们的包dask和distributed之间存在版本不匹配。distributed升级到2021.3.0,而dask仍处于2020.12.0。Downgrading分发到旧版本修复了该问题。

您是否找到导致该问题的其他原因?我希望避免创建新的venvHello@ps0604,据我所知,问题在于依赖项上的版本不匹配。我认为该库的创建者Matthew Rockling在他的一次演讲中建议使用相同的环境。如果你不想创建一个venv,你必须验证所有的依赖关系是否能很好地协同工作,或者在你的环境中更改它们,代价可能是破坏其他项目。我认为venv就是这样。谢谢nazar,你是如何实现应用程序venv和dask venv之间的连接的?对不起,我不知道这里有更多帮助,因为我刚刚为项目初始RnD部署了一个测试集群。但是,我不确定您指的是纱线集群的兼容性。如果是,请参考来自的此资源。在我非常简单的用例中,我们需要n台机器,所以我们有n台相同的VENV(每台机器一台),创建了n-1个worker和1个master。这就是解决问题的方法:我将python从3.8升级到了3.9