在集群中部署¶
基本步骤¶
Mars 可在集群中部署。首先,你需要在集群中的每个节点运行
pip install pymars
这将会为你的集群安装所有需要的依赖。此后,你可以选择一台机器作为 Supervisor(它集成了 Web Service),将其他的机器作为 Worker。
你可以使用下面的命令启动 Supervisor:
mars-supervisor -H <host_name> -p <supervisor_port> -w <web_port>
Web Service 也将随之启动。
可以使用下面的命令启动 Worker:
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://<web_ip>:<web_port>
来打开 Mars UI,查看 Worker 资源使用状况和刚才提交作业的执行进度。
使用命令行¶
当使用命令行启动 Mars 时,你可以通过指定启动参数控制 Mars 各服务进程的行为。所有 Mars 服务均拥有下面的参数。
参数 |
描述 |
---|---|
|
服务 IP 绑定,默认为 |
|
服务端口。如果缺失,将使用随机端口 |
|
Path to service configuration file. Absent when use default configuration. |
|
Supervisor Endpoint 列表,使用空格或逗号分隔。当为 Worker 指定 Supervisor,或者当需要为 Supervisor 指定其他 Supervisor 时需要使用此参数 |
|
日志级别,可以使用 |
|
日志格式,可以使用 Python logging 模块的日志格式 |
|
Python 日志配置文件的位置,默认为 |
|
是否需要使用 |
Supervisor 的额外参数在下面列出。
参数 |
描述 |
---|---|
|
Supervisor 中使用的 Web 端口 |
Worker 的额外参数在下面列出。关于内存调优的内容可以参见下一节。
参数 |
描述 |
---|---|
|
使用的 CPU 核数,默认为所有可用的核 |
|
用于网络传输的进程数,默认为 1 |
|
CUDA 设备的序号。如果未指定,将使用所有 GPU。 |
例如,如果你希望启动一个 Mars 集群,其中包含两个 Supervisor 和两个 Worker,你可以运行下面的命令(内存和 CPU 相关的细节已被忽略)。
在 Supervisor 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
在 Worker 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