python搭建分布式集群_利用python的dask搭建分布式集群

一、dask介绍

优势:dask内部自动实现了分布式调度、无需用户自行编写复杂的调度逻辑和程序;通过调用简单的方法就可以进行分布式计算、并支持部分模型的并行化处理;内部实现的分布式算法:xgboost、LR、sklearn的部分方法等

用一句话说:dask就是python版本的spark,是一个用Python 语言实现的分布式计算框架

二、dask安装

1.环境

建议使用:Anaconda3工具包

系统:windows、linux

2.安装

1.conda安装:conda install dask

2.pip 安装:pip install dask

3.source安装:

git clone dask/dask

cd dask

python setup.py install

3.分布式版安装

1.conda安装:conda install dask distributed-cconda-forge

2.pip 安装:pip install dask distributed --upgrade

3.source安装:

git clone https://github.com/dask/distributed.git

cd distributed

python setup.py install

三、dask集群搭建

1.启动主节点(类似注册中心)

本人实验环境:一台windows机器+3台虚拟化linux服务器,并4台机器均已按照上面步骤安装配置dask

选择Windows机器作为主节点,启动命令:

$ dask-scheduler

控制台显示信息如下:

distributed.scheduler - INFO - -----------------------------------------------

distributed.scheduler - INFO - Clear task state

distributed.scheduler - INFO - Scheduler at: tcp://192.168.1.42:8786

distributed.scheduler - INFO - :8787

distributed.scheduler - INFO - Local Directory: C:\Users\User\AppData\Local\Temp\scheduler-gd9uk980

distributed.scheduler - INFO - -----------------------------------------------

2.启动工作节点

在其他每台linux机器命令行输入:

$ dask-worker 192.168.1.42:8786

注意:后面跟的ip和端口是主节点的ip和对应服务的端口

工作节点启动成功后,此时主节点会显示多出信息:

distributed.scheduler - INFO - Register tcp://192.168.1.184:45772

distributed.scheduler - INFO - Starting worker compute stream, tcp://192.168.1.184:45772

distributed.core - INFO - Starting established connection

distributed.scheduler - INFO - Register tcp://192.168.1.183:43405

distributed.scheduler - INFO - Starting worker compute stream, tcp://192.168.1.183:43405

distributed.core - INFO - Starting established connection

distributed.scheduler - INFO - Register tcp://192.168.1.188:38095

distributed.scheduler - INFO - Starting worker compute stream, tcp://192.168.1.188:38095

distributed.core - INFO - Starting established connection

四、 dask集群使用

1.单机使用示例

"""单机dask"""

import time

from dask.distributed import Client

client = Client(asynchronous=True)

def square(x):

return x ** 2

def neg(x):

return -x

ts = time.time()

A = client.map(square, range(10000))

B = client.map(neg, A)

total = client.submit(sum, B)

print(total.result())

print('cost time :%s'%(time.time()-ts))

cost time :8.507587909698486

2.分布式版使用示例

"""分布式dask"""

import time

from dask.distributed import Client

client = Client('192.168.1.42:8786' ,asynchronous=True)

ts = time.time()

A = client.map(square, range(10000))

B = client.map(neg, A)

total = client.submit(sum, B)

print(total.result())

print('cost time :%s'%(time.time()-ts))

cost time :3.793848991394043

通过官网提供的测试例子可以看出dask的确体现了分布式的优势。

如果您觉得有帮助的话,可以扫码,赞赏鼓励一下!谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【J2EE设计模式】模型-视图-控制器模式(MVC模式)

MVC将用户接口分割成3个截然不同的部分。 一、视图 状态无关的组件,从模型中读取数据,简单的把模型中的值转化为对客户端有用的格式。 二、控制器 协调请求处理,将用户输入转变为模型更新和视图 。它就像一个主管,首先策划要做哪些…

HttpURLConnection简单用法

HttpURLConnection为javaAPI提供的一种Rest访问的方式。其支持对Post,Delete,Get,Put等方式的访问。 以下为对于HttpURLConnection对Post等方式访问的一段代码。 view plaincopy to clipboardprint? 1. package com.sw.study.urlConnection; 2. 3. import java.io.Bu…

天勤python_天勤量化策略库:菲阿里四价策略

文章策略均基于开源免费,简单强大的Python量化开发包——天勤量化(TqSdk)实现菲阿里四价策略故事在2000年7月,日本举办了首次“ROBBINS-TAICOM期货冠军比赛”,总共比赛历时半年。从第一周起,一位名叫Fairy(菲阿里)的先生便位居首位…

个人宣传画

转载于:https://www.cnblogs.com/yellowyu/archive/2010/04/19/1715735.html

touch 连续创建文件_touch命令 – 创建文件

touch命令有两个功能:一是创建新的空文件,二是改变已有文件的时间戳属性。touch命令会根据当前的系统时间更新指定文件的访问时间和修改时间。如果文件不存在,将会创建新的空文件,除非指定了”-c”或”-h”选项。注意:…

转载CTF

1.MD5 compare漏洞 PHP在处理哈希字符串时,会利用”!”或””来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同…

java jtable刷新_java-单击按钮更新JTable

I have searched on stackoverflow and a couple of people have said to use that method.不,您不应在TableModel本身的上下文之外调用任何fireTableXxx方法,否则人们会认为这完全是错误的,将来会给您带来麻烦.从代码的外观来看,什么都没有改变.如果您已根据上一个问题中提供的…

韩寒说世博会

先声明:我不是韩寒的什么粉丝,也不太关注这些作家的事情,希望这些文字能让你想到一些什么东西...........转载自:http://tieba.baidu.com/f?kz752703402 最近,老是有媒体要关于世博会采访我,我觉得很为难,如果我赞美他吧,估计我良…

windows系统下的云服务器部署tomcat

在环境配置没问题的基础下,如果启动服务器缺无法打开默认页面,则很有可能说明是你的端口问题: 这里我的解决方法: 控制面板-->系统和安全-->Windows 防火墙-->高级设置-->入站规则-->新建规则 依次选择端口-->…

营销公式

世界上最难得事情就是将别人的钱放到自己口袋。 要想别人给钱,首先要有控制别人的能力,例子,奴隶主能控制奴隶。 权力是来钱的关键因素。也就是说应该增加别人对你的依赖。 人们的弱点: 1.只看到短期利益,往往忽视长期…

centos修改磁盘uuid_Centos更换损坏硬盘UUID改变导致系统不能正常启动处理

Centos更换损坏硬盘UUID改变导致系统不能正常启动处理一、适用场景本文档的适用场景为,更换硬盘导致系统启动时因UUID不同,导致挂载文件读取失败,系统不能正常启动,同时本文档的处理方法也适用于fstab文件配置出错导致无法启动系统…

git远程仓库上传及本地仓库创建

第一步:我们需要先创建一个本地的版本库(其实也就是一个文件夹)。 你可以直接右击新建文件夹,也可以右击打开Git bash命令行窗口通过命令来创建。 现在我通过命令行在桌面新建一个TEST文件夹(你也可以在其他任何地方创…

强大js web甘特图制作之甘特图组件和数据对象

引用CSS和JS 使用EdoGantt是一件简单轻松的事&#xff0c;首先我们在HTML页面内引用CSS和JS&#xff1a; <!--edo css--><link href"http://www.cnblogs.com/scripts/edo/res/css/edo-all.css" rel"stylesheet" type"text/css" />&l…

华为安装gsm框架_华为谷歌框架安装app下载-华为谷歌服务框架安装器(GMS安装器)下载v1.2.0 最新版-西西软件下载...

华为谷歌服务框架安装器是专为华为手机用户打造的谷歌服务框架安装软件&#xff0c;让你可以一键在手机上安装谷歌框架&#xff0c;无需root即可一键安装谷歌框架&#xff0c;使用简单方便&#xff0c;欢迎有需要的朋友前来下载。软件介绍华为谷歌服务框架安装器(GMS安装器)是一…

Butterknife使用——转

转载请标明出处&#xff1a;http://blog.csdn.net/donkor_/article/details/77879630 前言&#xff1a; ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象&#xff0c;有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWha…

百度文档搜索与Google文档搜索的简单比较

很多有具有参考价值的资料&#xff0c;比如学生写论文报告&#xff0c;老师做课件&#xff0c;找工作准备简历都需要参考其他人的成果。在互联网上&#xff0c;这类资料一般不是普通的html网页&#xff0c;而是以Word、ppt(s)、Excel、pdf等格式存在的。虽然这些文件不象Html文…

使用宝塔部署node项目_使用宝塔面板进行项目的自动部署WebHook

首先你要知道什么是WebHook&#xff0c;如果你真的不想知道那也没关系。总之就是在你push到git仓库时会从git仓库触发一个http请求。关于http的地址根据你不同的git仓库有不同的方式去配置。首先配置宝塔面板&#xff0c;你需要安装宝塔插件中的 WebHook随便起一个名字然后保存…

git命令——转

github和gitlab等等一系列的分布式代码托管服务器方便我们开发人员在小组内开发项目&#xff0c;说起分布式代码托管就给大家提一下另外一代码托管SVN,当然他不是分布式的&#xff0c;而是集中式的代码托管&#xff0c;有兴趣的可以查阅资料了解一下&#xff0c;在这里我将着重…

17joys网站后台功能设计-阶段1

开始没想把网站设计的很完善再开始写代码&#xff0c;主要也是想通过不断的编写小模块&#xff0c;最后再整合在一起&#xff0c;这样也好记录我每个时间段的经验心得&#xff0c;在设计17joys的网站后台功能时&#xff0c;看了很多CMS系统&#xff0c;最后还是决定参考我最喜欢…

vue复选框组件自定义对勾_vue+element:树级复选框组件使用

handleCheck(checkedKeys,checkedNodes,halfCheckedKeys,halfCheckedNodes){var len 0,num 0;var _alen 0;var a [];var b [];var copyArr [];for (var i 0;i < checkedNodes.checkedNodes.length;i){//记录子节点的索引if (checkedNodes.checkedNodes[i].children nul…