1. 程式人生 > >Dask快速搭建分散式叢集(大資料0基礎可以理解,並使用!)

Dask快速搭建分散式叢集(大資料0基礎可以理解,並使用!)

轉載:  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