我是dask的新手,看起來有些奇怪的用例,我想在帶有兩個網絡接口的「橋接」機器上設置一個dask調度器,以便客戶端可以連接到其中一個接口(「前」)和工作人員將住在連接到另一個接口(「後」)的多臺機器上。這些接口具有獨立的IP地址和主機名。在兩個IP地址上設置dask分佈式調度器?
本質上,我想要做this picture棕色和藍色的作品之間沒有路線,除非通過機器上有調度器。 (圖片來自dask散佈的一些舊文檔,我認爲當事情明顯不如現在時0.7)。
一切都是64位Linux(Debian 8「jessie」),我正在使用dask版本0.14.0和分佈式版本1.16.0,安裝在anaconda環境中。
dask-scheduler命令行工具似乎沒有辦法做多個主機名,我認爲這是我想要的。
我可以得到的效果我想通過SSH端口轉發。
例如,假設相關接口是機器worker
,scheduler-front
,scheduler-back
和client
。兩個scheduler-*
接口是在同一臺機器上不同的NIC,並且有一個TCP路線從client
到scheduler-front
,和一個從scheduler-back
到worker
,但有從client
到worker
的路由,從scheduler-front
到worker
,或從scheduler-back
到client
。然後,下面的工作(下面的引導位意味着命令行提示符,指示運行命令的機器,'#'表示shell,'>>>'表示Python):
首先,啓動調度監聽的橋樑主機的「背」:
scheduler# dask-scheduler --host schedular-back
其次,啓動工作,並在普通的方式連接到調度:
worker# dask-worker scheduler-back:8786
三,推進本地主機:8786客戶端調度,回:8786調度臺機器上,SSH-ING通過調度,前置接口在:
client# ssh -L 8786:scheduler-back:8786 scheduler-front
最後,啓動客戶機上的客戶端,並連接到轉發端口的另一端可以看到調度器的近端。
client>>> from distributed import Client
client>>> cl = Client('127.0.0.1:8786')
client>>> ...
正如我所說,這個工程,我可以做地圖和收集並得到結果。
但是我忍不住想到自己在做這件事,也許我錯過了一些簡單的事情,允許多宿主調度器。私人子網並不奇怪,它們出現在容器和集羣的環境中。
有沒有更聰明的方法來做到這一點?
如果感興趣,不使用集羣排隊系統的原因是目標「worker」機器是帶有GPU的機器,並且我們在排隊系統正確分配時遇到一些困難,所以目前,該機器在排隊系統之外工作。我們最終會解決這個問題,但現在,我們正在努力做到這一點。
另外,爲了完整起見,沒有客戶機在調度器機器上的原因是,在我們的場景中,客戶機需要進行可視化,而調度器是機器中機架中的羣集頭節點房間,並不是用戶身體上可以訪問的。
漂亮,謝謝!它看起來有點像它不工作,但結果是一個無關的問題。另外,它並沒有在上面的反饋中報告所有接口,但正如你所說,它確實聽取了所有接口。 –