在集群上运行#

基本步骤#

Mars 可以部署在一个集群上。首先,您需要运行

pip install pymars

在集群中的每个节点上。这将安装在您的集群上进行分布式执行所需的依赖项。之后,您可以选择一个节点作为集成了网络服务的监督节点,将其他节点留作工作节点。

可以使用以下命令启动监督者:

mars-supervisor -H <host_name> -p <supervisor_port> -w <web_port>

网络服务也将启动。

可以使用以下命令启动工作者:

mars-worker -H <host_name> -p <worker_port> -s <supervisor_ip>:<supervisor_port>

在所有Mars进程启动后,您可以打开Python控制台并运行

import mars
import mars.tensor as mt
import mars.dataframe as md
# create a default session that connects to the cluster
mars.new_session('http://<web_ip>:<web_port>')
a = mt.random.rand(2000, 2000, chunk_size=200)
b = mt.inner(a, a)
b.execute()  # submit tensor to cluster
df = md.DataFrame(a).sum()
df.execute()  # submit DataFrame to cluster

您可以打开一个网页浏览器并输入 http://: 来打开 Mars UI,以查看刚刚提交的任务的工作者资源使用情况和执行进度。

使用命令行#

当通过命令行运行Mars时,您可以指定参数来控制Mars进程的行为。所有Mars服务都有下面列出的公共参数。

参数

描述

-H

服务 IP 绑定, 0.0.0.0 默认值

-p

服务的端口。如果缺失,将使用随机端口

-f

服务配置文件的路径。使用默认配置时则不存在。

-s

监控器端点列表,以逗号分隔。对于 工作者和网页来说,可以方便地找到监控器,或者当你想运行 多个监控器时非常有用

--log-level

日志级别,可以为 debuginfowarningerror

--log-format

日志格式,可以是Python日志格式

--log-conf

Python 日志配置文件,logging.conf 默认情况下

--use-uvloop

是否使用 uvloop 进行加速,默认使用 auto

监督者的额外参数如下所示。

参数

描述

-w

监控中的Web服务端口

工作线程的额外参数列在下面。有关内存调优的详细信息可以在下一个部分找到。

参数

描述

--n-cpu

要使用的CPU核心数量。如果缺失,值将是可用核心的数量

--n-io-process

网络操作的IO进程数量。默认为1

--cuda-devices

要使用的CUDA设备的索引。如果未指定,将使用所有设备。指定空字符串将忽略所有设备

例如,如果您想启动一个具有两个主管和两个工作者的Mars集群,可以运行以下命令(内存和CPU调整已省略):

在主管 1 (192.168.1.10):

mars-supervisor -H 192.168.1.10 -p 7001 -w 7005 -s 192.168.1.10:7001,192.168.1.11:7002

在Supervisor 2 (192.168.1.11):

mars-supervisor -H 192.168.1.11 -p 7002 -s 192.168.1.10:7001,192.168.1.11:7002

在工作节点 1 (192.168.1.20):

mars-worker -H 192.168.1.20 -p 7003 -s 192.168.1.10:7001,192.168.1.11:7002

在 Worker 2 (192.168.1.21):

mars-worker -H 192.168.1.21 -p 7004 -s 192.168.1.10:7001,192.168.1.11:7002