【解析】python分布式搭建

作者: 肥宅_Sean | 来源:发表于2018-03-17 19:32 被阅读50次

    非常开心,解决了很久都没有解决的问题

    使用的语言: Python3.5
    分布式机器: windows7

    注意到,其实,通过这工具搭建分布式不需要管使用的电脑是什么系统。

    分布式使用流程

    Title:使用分布式系统
    用户->分布式Scheduler: 发送任务
    分布式Scheduler->分布式worker1: 计算任务一
    分布式Scheduler->分布式worker2: 计算任务二
    分布式Scheduler->分布式worker3: 计算任务三
    分布式Scheduler->分布式worker...: 计算任务...
    
    
    分布式worker1-->分布式Scheduler: 计算任务一结果
    分布式worker2-->分布式Scheduler: 计算任务二结果
    分布式worker3-->分布式Scheduler: 计算任务三结果
    分布式worker...-->分布式Scheduler: 计算任务...结果
    
    分布式Scheduler-->>用户: 计算结果
    

    分布式结构

    • 由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)
    

    这是输出的结果:

    332833500
    0.6459999084472656

    后记

    这个框架搭建好,以后,我们以后就只需要通过修改函数的本质,就可以实现关于分布式了。
    有人可能会说,这么简单的分布式,为什么工资会高?
    我想给有这样想法的朋友说一下。
    首先,要知道这个工具的开发者将这个工具开发的已经非常好了,接口分装的特别不错。他们的付出是值得大家认可的。
    其次,理解,并使用这个框架也不是很容易的(请给我鼓励
    再来,这只是一个非常简单的Demo。其中还有很多的细节需要注意的,都没有。很多算法需要解决的,也没有。
    可以说,这里的坑还有很多!
    最后,我想肯定还是有我不知道的东西的!所以...
    ...

    相关文章

      网友评论

        本文标题:【解析】python分布式搭建

        本文链接:https://www.haomeiwen.com/subject/kfumfftx.html