【干货】Dask快速搭建分布式集群(大数据0基础可以理解,并使用!)
非常開心,解決了很久都沒有解決的問題
使用的語言: Python3.5
分布式機器: windows7
注意到,其實,通過這工具搭建分布式不需要管使用的電腦是什么系統(tǒng)。
分布式使用流程
Created with Rapha?l 2.1.2使用分布式系統(tǒng)用戶用戶分布式Scheduler分布式Scheduler分布式worker1分布式worker1分布式worker2分布式worker2分布式worker3分布式worker3分布式worker...分布式worker...發(fā)送任務計算任務一計算任務二計算任務三計算任務...計算任務一結果計算任務二結果計算任務三結果計算任務...結果計算結果分布式結構
- 由Scheduler跟Worker1,Worker2…構成了整個分布式系統(tǒng)的結構
- 用戶可以變,用戶的任務也可以變。但只要分布式集群的結構搭建起來之后,要做的事情就可以用很多了。
- 關鍵的一點:,使用的時候不要去改變分布式系統(tǒng)。
- 用戶將任務發(fā)出來,也就是說,用戶自己單獨在一臺電腦上運行代碼就好了。 交給搭建好的分布式集群系統(tǒng)!
上面是關于分布式系統(tǒng)的基本概念(或者必要知識。
下面開始講述搭建過程
搭建分布式
- 這里使用的是Python的分布式庫Dask。
- 先安裝這個庫。具體方法:在命令行下輸入pip install dask[complete] (如果已經安裝好這個庫了就會提示已經安裝好了)
庫是一定要安裝的。而且這個庫特別小。1MB左右???大膽下吧
- 之前流程圖中每一個單位,其實都是一臺電腦來的。(當然,你開多個窗口,在一臺電腦上,其實也是可以的。
首先,在一臺電腦上(命令行條件下, 輸入dask-scheduler。就會爆出一堆的信息。其中有個地方很關鍵
在我這,就是使用那個tcp://,后面的那個地址,加上端口號。
- 而這個地址,就是未來要給,用戶使用的地址
- 在 多臺電腦上,同樣打開電腦。打開命令行模式, 輸入:dask-worker 192.168.0.199:8786。注意到,這里的這個地址其實就是剛剛說到的那個地址,每個人的結果都會是不一樣的。大家根據(jù)自己的情況來決定。
- 每個電腦根據(jù)自己的身份輸入上面的代碼,之后。 在scheduler電腦,上的信息出現(xiàn)了別的信息之后。就連接成功了。
- 如果不成功,請再輸入一次之前的代碼。你肯定是哪里輸入錯了!!!
到這里,分布式系統(tǒng),其實已經搭建好了。下面,模擬用戶來使用
用戶是一臺新的電腦(當然,也可以是任何的一臺電腦。但是必須要跟這些電腦都在同樣的一個局域網下。在這樣的條件下,開始使用,我們之前搭建好的服務器。
下面是我在一個一臺電腦上運行的寫的代碼
記得!,要把client上的IP地址跟端口號都寫成之前Scheduler的IP地址跟端口號。
- 可以理解,Scheduler是整個分布式系統(tǒng)的給用戶的接口。
下面是我用代碼:
from dask.distributed import Client from time import timedef square(x):return x ** 2if __name__ == '__main__':MAX = 1000st = time()client = Client('192.168.0.199:8786') # 這里的地址記得根據(jù)我上面說的修改掉。A = client.map(square, range(MAX))total = client.submit(sum, A)print(total.result())et = time()print(et - st)這是輸出的結果:
332833500
0.6459999084472656
后記
這個框架搭建好,以后,我們以后就只需要通過修改函數(shù)的本質,就可以實現(xiàn)關于分布式了。
有人可能會說,這么簡單的分布式,為什么工資會高?
我想給有這樣想法的朋友說一下。
首先,要知道這個工具的開發(fā)者將這個工具開發(fā)的已經非常好了,接口分裝的特別不錯。他們的付出是值得大家認可的。
其次,理解,并使用這個框架也不是很容易的(請給我鼓勵
再來,這只是一個非常簡單的Demo。其中還有很多的細節(jié)需要注意的,都沒有。很多算法需要解決的,也沒有。
可以說,這里的坑還有很多!
最后,我想肯定還是有我不知道的東西的!所以…
…
最后,老套路,宣傳一波自己的公眾號!(求關注哇!)
本人中大一肥宅,歡迎大家關注,請掃下面的二維碼(〃’▽’〃)
如果覺得有幫助的話,可以掃碼,贊賞鼓勵一下!謝謝!
總結
以上是生活随笔為你收集整理的【干货】Dask快速搭建分布式集群(大数据0基础可以理解,并使用!)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【干货】eval函数用法解释及对开发者的
- 下一篇: Python创建删除文件(或文件夹)