0737-1.6.1-CDSW分布式计算_workbench分布式计算-程序员宅基地

技术标签: Hadoop实操  

简介

Cloudera Data Science Workbench为从单个交互式会话中启动多个称为workers的引擎实例提供了基本支持。任何R或Python会话均可用于生成workers。这些工作程序可以配置为在启动时运行脚本(例如Python文件)或命令中。

可以使用 launch_workers函数。以及另外两个函数是list_workers 和 list_workers。来自所有工作程序的输出将显示在启动它们的会话的控制台中。会话退出时,这些workers将终止。

Python示例

Python分布式运算基本语法

import cdsw
workers=cdsw.launch_workers(n=2,cpu=0.2,memory=0.5,code="print('Hello from a CDSW Woker')")

  • n(int) -要启动的引擎数。
  • cpu(float) -要分配给引擎的CPU内核数。
  • 内存(float) -分配给引擎的内存的千兆字节数。
  • nvidia_gpu(int,optional) -要分配给引擎的GPU数量。
  • kernel(str,optional) -内核。可以是r、 python2、 python3或scala。
  • script(str,optional) -工作者启动后应立即执行的Python源文件的名称。
  • code(str,optional) -引擎在启动后应立即执行的Python代码。如果指定了脚本,则代码将被忽略。
  • env(dict,optional) -在引擎中设置的环境变量。

list_workers

cdsw.list_workers()

stop_worker

cdsw.stop_workers()

编辑Python文件master.py;在Master引擎中,该脚本将启动三个工作程序并接受来自Workers的传入连接。

# master.py
import cdsw, socket
# Launch two CDSW workers. These are engines that will run in 
# the same project, execute a given code or script, and exit.
workers = cdsw.launch_workers(n=3, cpu=0.2, memory=0.5, script="worker.py")
# Listen on TCP port 6000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("0.0.0.0", 6000))
s.listen(1)
# Accept two connections, one from each worker. Workers will
# execute worker.py.
conn, addr = s.accept()
for i in range(3):
    # Receive a message from each worker and return a response.
    data = conn.recv(20)
    if not data: break
    print("Master received:", data)
    conn.send("Hello From Server!".encode())
conn.close()

编辑worker.py文件;Workers将执行脚本中的命令,并返回给Master。

# worker.py
import os, socket
# Open a TCP connection to the master.
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((os.environ["CDSW_MASTER_IP"], 6000))
# Send some data and receive a response.
s.send("Hello From Worker!".encode())
data = s.recv(1024)
s.close()
print("Worker received:", data)

执行master.py,可以看到执行了三次worker.py。

R语言示例

基本语法

library("cdsw")
workers <- launch.workers(n=2,cpu=0.2,memory=0.5, env="",code="print('Hello From a CDSW Workers')")

由于解析 launch.workers函数的bug,因此定义env 参数。如果未定义env 参数,env参数在内部序列化为与Cloudera Data Science Workbench不兼容的格式。此bug不会影响Python引擎。

编写master.r文件,在Master引擎中,该脚本将启动两个工作程序并接受来自Workers的传入连接。

# master.r
library("cdsw")
# Launch two CDSW workers. These are engines that will run in 
# the same project, execute a given code or script, and exit.
workers <- launch.workers(n=2, cpu=0.2, memory=0.5, env="", script="worker.r")
# Accept two connections, one from each worker. Workers will
# execute worker.r.
for(i in c(1,2)) {
    
  # Receive a message from each worker and return a response.
  con <- socketConnection(host="0.0.0.0", port = 6000, blocking=TRUE, server=TRUE, open="r+")
  data <- readLines(con, 1)
  print(paste("Server received:", data))
  writeLines("Hello from master!", con)
  close(con)
}

编写worker.r文件;Workers将执行以下命令,并返回到Master。

# worker.r
print(Sys.getenv("CDSW_MASTER_IP"))
con <- socketConnection(host=Sys.getenv("CDSW_MASTER_IP"), port = 6000, blocking=TRUE, server=FALSE, open="r+")
write_resp <- writeLines("Hello from Worker", con)
server_resp <- readLines(con, 1)
print(paste("Worker received:  ", server_resp))
close(con)

执行master.r,可以看到执行了两次worker.r

参考文档

https://docs.cloudera.com/documentation/data-science-workbench/1-6-x/topics/cdsw_parallel_computing.html
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Hadoop_SC/article/details/104066970

智能推荐

MyBatisPlus进阶(一)_mybatis id全局唯一值-程序员宅基地

文章浏览阅读2.1k次。上一篇讲了mybatisplus的介绍以及入门教程,这一片介绍关于它的CRUD直接上代码。三、CRUD接口一、insert1、插入操作@RunWith(SpringRunner.class)@SpringBootTestpublic class CRUDTests {​ @Autowired private UserMapper userMapper;​ @..._mybatis id全局唯一值

shell错误 sed: can‘t read : No such file or directory_windows bash sed: can't read : no such file or dir-程序员宅基地

文章浏览阅读3.8k次。命令:grep -rl test | xargs sed -i ‘s/test/123456/g’报错:sed: can’t read test_file : No such file or directory原因:一开始以为自己的命令用错了,修改成sed -i ‘s/test/123456/g’`grep -rl test 依然不行。经过不断尝试,发现在centos6.9上不行。切换到centos7.6上就行了。有大佬知道这是为什么吗?cat /etc/redhat-release _windows bash sed: can't read : no such file or directory

华为机试真题实战应用【赛题代码篇】-过滤组合字符串(附Java和python代码实现)-程序员宅基地

文章浏览阅读148次。和一个屏蔽字符串“ux”,那么“78”可以组成多个字符串例如:“ux”,“uw”,“vx”,“vw”,过滤这些完全包含屏蔽字符串的每一个字符的字符串,然后输出剩下的字符串。例如7关联"u","v",8关联"x","w",输入一个字符串例如“78”,0 关联 "a","b","c"1 关联 "d","e","f"2 关联 "g","h","i"3 关联 "j","k","l"4 关联 "m","n","o"5 关联 "p","q","r"7 关联 "u","v"8 关联 "w","x"

17、基于51单片机GSM短信湿度远程浇花浇水控制系统设计(程序+原理图+仿真+参考论文+元件清单+开题报告等)-程序员宅基地

文章浏览阅读807次,点赞19次,收藏19次。本设计是基于STC89C52单片机和ADC0832的GSM远程浇花系统。本设计的电路内部包含湿度采集和AD转换等主要功能以及GSM收发短信功能。远程浇水系统设计的浇水部分是通过单片机程序设计浇水的上下限值与感应电路送入单片机的土壤湿度值相比较,当低于下限值时,单片机控制GSM模块发送缺水短信,用户收到短信后回复浇水,单片机收到回复的短信后输出一个信号控制浇水,高于上限值时再由单片机输出一个信号控制停止浇水,并回复短信浇水完成到用户手机上。这样可以帮助人们及时地给心爱的盆花浇水。STC89C52;

PIE SDK打开HDF、NC数据-程序员宅基地

文章浏览阅读318次。1. 功能简介 HDF 是美国国家高级计算应用中心(National Center for Supercomputing Application)为了满足各种领域研究需求而研制的一种能高效存储和分发科学数据的新型数据格式。 NC是NetCDF的简称,其全称为Network Common Data Form(网络通用数据格式),其是针对科学数据的特点开发的,是一种面向数组型..._hdf文件可以用sdk打开吗

解决Android项目在eclipse中无法打包apk文件[bin目录下没生成apk文件]的问题-程序员宅基地

文章浏览阅读251次。原因在于:Window-->Preferences-->Android-->Build中“Skippackaginganddexinguntilexportorlaunck”选项默认是勾上的,因此去掉该选项就OK了解决:1,首先把以上的那个选项去掉2,点击Project中的Clean选项,重新..._在ubuntu使用buildozer打包到一半失败,最终在bin里面没有生成apk

随便推点

国产化复旦微电子 FMQL45T900 FPGA开发板( 替代Xilinx ZYNQ ARM+FPGA 7045开发板)-程序员宅基地

文章浏览阅读2.5w次,点赞10次,收藏97次。-FM4550国产化开发板功能接口-- 系统框图-01- 产品参数-1.主要参数系统1: FPGA型号:FMQL45T900 PS内核:四核ARM Cortex-A7,主频800MHz PS端内存:1GB DDR3,数据速率1066Mbps,32bit PL端内存:1GB DDR3,数据速率1600Mbps,32bit GTX收发器:16X 速度等级:对标进口-2 ..._fmql45t900

HackTheBox之Overflow靶机_padbuster-程序员宅基地

文章浏览阅读489次。这是一台困难靶机,靶机内容主要考察了web漏洞利用,逆向,权限维持,提权等各个方面的内容,这个靶机非常适合入门逆向,并且对提升渗透思维帮助很大,我从中也获益良多。_padbuster

python简单编程小游戏,python小游戏编程代码_python编程小游戏-程序员宅基地

文章浏览阅读960次,点赞17次,收藏16次。这篇文章主要介绍了python简单编程小游戏,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。哈喽铁子们。_python编程小游戏

linux 清屏函数_lvgl清屏-程序员宅基地

文章浏览阅读735次。在操作学生管理系统时,想实现一个效果就是 清屏,试了好几种都不满意,终于让我找到一个合适的printf("\033c");这个可以 效果杠杠的_lvgl清屏

判断并输出两个数之间的奇数_输入一个两位数,显示从 1 到你输入的两位数(包括这个数)之间所有的奇数和奇数的个-程序员宅基地

这段代码似乎在尝试让用户输入两个整数,然后判断并输出这两个数之间的奇数。文章内容杂乱无章,难以理解。

vue中使用router动态加载路由找不到文件_vue-router动态添加路由 找不到文件-程序员宅基地

文章浏览阅读1.1k次。该文章仅为个人踩坑记录,如有代码错误请提出,本人将积极改正。_vue-router动态添加路由 找不到文件