Dask快速搭建分散式叢集(大資料0基礎可以理解,並使用!)
阿新 • • 發佈:2019-01-25
轉載: https://blog.csdn.net/a19990412/article/details/79510219
常開心,解決了很久都沒有解決的問題
使用的語言: Python3.5
分散式機器: windows7
注意到,其實,通過這工具搭建分散式不需要管使用的電腦是什麼系統。
分散式使用流程
使用分散式系統使用者使用者分散式Scheduler分散式Scheduler分散式worker1分散式worker1分散式worker2分散式worker2分散式worker3分散式worker3分散式worker...分散式worker...傳送任務計算任務一計算任務二計算任務三計算任務...計算任務一結果計算任務二結果計算任務三結果計算任務...結果計算結果分散式結構
- 由Scheduler跟Worker1,Worker2…構成了整個分散式系統的結構
- 使用者可以變,使用者的任務也可以變。但只要分散式叢集的結構搭建起來之後,要做的事情就可以用很多了。
- 關鍵的一點:,使用的時候不要去改變分散式系統。
- 使用者將任務發出來,也就是說,使用者自己單獨在一臺電腦上執行程式碼就好了。 交給搭建好的分散式集群系統!
上面是關於分散式系統的基本概念(或者必要知識。
下面開始講述搭建過程
搭建分散式
- 這裡使用的是Python的分散式庫Dask。
- 先安裝這個庫。具體方法:在命令列下輸入
pip install dask[complete]
(如果已經安裝好這個庫了就會提示已經安裝好了)
庫是一定要安裝的。而且這個庫特別小。1MB左右???大膽下吧
- 之前流程圖中每一個單位,其實都是一臺電腦來的。(當然,你開多個視窗,在一臺電腦上,其實也是可以的。
首先,在一臺電腦上(命令列條件下, 輸入
dask-scheduler
。就會爆出一堆的資訊。其中有個地方很關鍵在我這,就是使用那個tcp://,後面的那個地址,加上埠號。
- 而這個地址,就是未來要給,使用者使用的地址
- 在 多臺電腦上,同樣開啟電腦。開啟命令列模式, 輸入:
dask-worker 192.168.0.199:8786
。注意到,這裡的這個地址其實就是剛剛說到的那個地址,每個人的結果都會是不一樣的。大家根據自己的情況來決定。 - 每個電腦根據自己的身份輸入上面的程式碼,之後。 在
scheduler
電腦,上的資訊出現了別的資訊之後。就連線成功了。 - 如果不成功,請再輸入一次之前的程式碼。你肯定是哪裡輸入錯了!!!
到這裡,分散式系統,其實已經搭建好了。下面,模擬使用者來使用
使用者是一臺新的電腦(當然,也可以是任何的一臺電腦。但是必須要跟這些電腦都在同樣的一個區域網下。在這樣的條件下,開始使用,我們之前搭建好的伺服器。
下面是我在一個一臺電腦上執行的寫的程式碼
記得!,要把client上的IP地址跟埠號都寫成之前Scheduler的IP地址跟埠號。
- 可以理解,Scheduler是整個分散式系統的給使用者的介面。
下面是我用程式碼:
from dask.distributed import Client
from time import time
def square(x):
return x ** 2
if __name__ == '__main__':
MAX = 1000
st = time()
client = Client('192.168.0.199:8786') # 這裡的地址記得根據我上面說的修改掉。
A = client.map(square, range(MAX))
total = client.submit(sum, A)
print(total.result())
et = time()
print(et - st)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
這是輸出的結果:
332833500
0.6459999084472656