2017-03-15 32 views
2

我是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-backclient。兩個scheduler-*接口是在同一臺機器上不同的NIC,並且有一個TCP路線從clientscheduler-front,和一個從scheduler-backworker,但有從clientworker的路由,從scheduler-frontworker,或從scheduler-backclient 。然後,下面的工作(下面的引導位意味着命令行提示符,指示運行命令的機器,'#'表示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的機器,並且我們在排隊系統正確分配時遇到一些困難,所以目前,該機器在排隊系統之外工作。我們最終會解決這個問題,但現在,我們正在努力做到這一點。

另外,爲了完整起見,沒有客戶機在調度器機器上的原因是,在我們的場景中,客戶機需要進行可視化,而調度器是機器中機架中的羣集頭節點房間,並不是用戶身體上可以訪問的。

回答

1

如果您沒有指定任何--hostdask-scheduler,它將默認監聽所有接口。例如:

$ dask-scheduler 
distributed.scheduler - INFO - ----------------------------------------------- 
distributed.scheduler - INFO - Scheduler at: tcp://192.168.1.68:8786 
distributed.scheduler - INFO -  http at:    0.0.0.0:9786 
distributed.scheduler - INFO -  bokeh at:    0.0.0.0:8788 
distributed.bokeh.application - INFO - Web UI: http://127.0.0.1:8787/status/ 
distributed.scheduler - INFO - ----------------------------------------------- 

和:

$ netstat -tnlp | \grep 8786 
tcp  0  0 0.0.0.0:8786   0.0.0.0:*    LISTEN  23969/python  
tcp6  0  0 :::8786     :::*     LISTEN  23969/python 

所以,你可以再從你想要的子網連接,使用正確的IP(V4或V6)地址聯繫調度。例如,您的工作人員可能使用tcp://192.168.1.68:8786和您的客戶tcp://10.1.2.3:8786

但是,如果您願意傾聽多個界面,但不是所有界面,但目前不可能。

+0

漂亮,謝謝!它看起來有點像它不工作,但結果是一個無關的問題。另外,它並沒有在上面的反饋中報告所有接口,但正如你所說,它確實聽取了所有接口。 –