[英]Local Dask scheduler failing to connect to workers on remote resource
題
如何在遠程資源上為本地運行的Dask調度程序指定Dask工作程序的正確地址?
情況
我有可以遠程登錄的遠程資源。 在那里,我有一個docker容器,該容器運行一個圖像,其中包含運行分布式Dask所需的所有依賴項。
運行時,容器執行以下操作:
dask-worker --nprocs 14 --nthreads 1 {inet_addr_local}:878
在同一個網絡中,但在我的筆記本電腦上,我運行了另一個具有相同圖像的容器。 在此容器中,我運行Dask調度程序,如下所示:
dask-scheduler --port 8786
當我啟動調度程序時,一切都很好。 當我啟動工作容器時,它似乎已連接到調度程序。 在狀態下,我看到以下內容:
Waiting to connect to: tcp://{this_matches_inet_address_of_local}:8786
在調度程序上,我看到以下內容在循環中不斷重復記錄,因為它不斷嘗試與每個工作人員聯系/響應:
distributed.scheduler - INFO - Remove worker tcp://172.18.0.10:41508
distributed.scheduler - INFO - Removed worker tcp://172.18.0.10:41508
distributed.scheduler - ERROR - Failed to connect to worker 'tcp://172.18.0.10:44590': Timed out trying to connect to 'tcp://172.18.0.10:44590' after 3 s: OSError: [Errno 113] No route to host
這個問題(我認為)可以在這里看到。 tcp://172.18.0.10
不正確。 我可以通過me@db.foo.net
進入資源db.foo.net
上運行的工作me@db.foo.net
。
從調度程序容器中,可以看到我能夠成功ping db.foo.net
。 我認為工作人員假設他們的地址是他們所在容器的本地地址,而不是db.foo.net
。 我需要覆蓋此默認值,作為工作人員的某種配置。 我以為--host
標簽可以做到,但是這導致Tornado拋出以下錯誤: OSError: [Errno 99] Cannot assign requested address
。
敏捷工作者需要能夠使用給他們的地址與調度程序聯系。 聽起來這不是您要發生的事情。 這可能是由於許多原因與您的網絡相關聯。 幾種可能性:
不幸的是,Dask本身無法幫助您確定這些網絡問題。 您可以嘗試在相關端口上運行其他服務,並查看是否可以重新創建與ping
或python -m http.serve --port 8786
類的常用工具之間的連通性不足
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.