在集群上运行#
基本步骤#
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服务都有下面列出的公共参数。
参数 |
描述 |
|---|---|
|
服务 IP 绑定, |
|
服务的端口。如果缺失,将使用随机端口 |
|
服务配置文件的路径。使用默认配置时则不存在。 |
|
监控器端点列表,以逗号分隔。对于 工作者和网页来说,可以方便地找到监控器,或者当你想运行 多个监控器时非常有用 |
|
日志级别,可以为 |
|
日志格式,可以是Python日志格式 |
|
Python 日志配置文件, |
|
是否使用 |
监督者的额外参数如下所示。
参数 |
描述 |
|---|---|
|
监控中的Web服务端口 |
工作线程的额外参数列在下面。有关内存调优的详细信息可以在下一个部分找到。
参数 |
描述 |
|---|---|
|
要使用的CPU核心数量。如果缺失,值将是可用核心的数量 |
|
网络操作的IO进程数量。默认为1 |
|
要使用的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