集群部署#

如果需要部署在本地或者云端的机器上,可以参考这篇文档,使用命令行部署一个分布式的 Xorbits 集群。

安装#

首先,参考 安装文档 确保每个机器都正确安装了 Xorbits。

启动 supervisor#

在所有机器中选择一个用来启动 supervisor 和 web 服务,启动命令:

xorbits-supervisor -H <supervisor_ip> -p <supervisor_port> -w <web_port>

或者使用 python -m:

python -m xorbits.supervisor -H <supervisor_ip> -p <supervisor_port> -w <web_port>

<web_port> 是指定 web 服务的端口,web 服务主要用来:

  1. 提供展示集群状态与任务详情的 UI。

  2. 用户可以使用 xorbits.init(“<supervisor_ip>:<web_port>”) 创建连接,提交任务到集群。

启动 worker#

其余的机器可以作为 worker 启动,启动命令:

xorbits-worker -H <worker_ip> -p <worker_port> -s <supervisor_ip>:<supervisor_port>

或者使用 python -m:

python -m xorbits.worker -H <worker_ip> -p <worker_port> -s <supervisor_ip>:<supervisor_port>

连接到创建的集群#

接下来使用 Python 代码与集群创建连接。

import xorbits
xorbits.init("http://<supervisor_ip>:<supervisor_web_port>")

用 supervisor 的 IP 地址替换 <supervisor_ip>,用刚刚指定的 web 端口替换 <supervisor_web_port>

Xorbits Web UI#

你可以在浏览器中打开 http://<supervisor_ip>:<supervisor_web_port> 浏览 Web UI,查看集群资源以及提交的任务执行进度等信息。

命令行参数#

共用参数#

下面列出的是共用的参数。

参数名

描述

-H

服务绑定的 IP,默认 0.0.0.0

-p

服务端口。如果不指定会使用一个随机闲置端口

-f

配置文件地址。不指定使用默认配置。

-s

Supervisor 地址列表,逗号分隔。用来启动 worker 时指定 supervisor 的地址或者在多 supervisor 时指定。

--log-level

日志级别,包括 debug, info, warning, error

--log-format

日志格式,兼容 Python logging 模块格式

--log-conf

日志配置文件,默认 logging.conf

--use-uvloop

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

Supervisor 其余参数#

参数名

描述

-w

Web 服务的端口

Worker 其余参数#

参数名

描述

--n-cpu

使用的 CPU 核数。如果不填,使用所有可用的核。

--n-io-process

IO 进程个数。默认是 1

--cuda-devices

使用的 CUDA 设备索引。如果不指定,使用所有的设备。指定为空字符串则忽略所有设备。

Custom configuration#

Default configuration can be modified by specifying a -f flag. Provide the path of your yml file which contains custom configuration along with -f flag.

For example#

If the user want to modify transfer_block_size` and node_timeout, specify -f your-config.yml.

your-config.yml

"@inherits": "@default"
storage:
default_config:
    transfer_block_size: 10 * 1024 ** 2
cluster:
node_timeout: 1200

示例#

假设需要起一个 supervisor 两个 worker 的 Xorbits 集群,可以使用如下的命令:

Supervisor (192.168.1.10) 上:

xorbits-supervisor -H 192.168.1.10 -p 7001 -w 7005

worker1 (192.168.1.20) 上:

xorbits-worker -H 192.168.1.20 -p 7003 -s 192.168.1.10:7001

worker2 (192.168.1.21) 上:

xorbits-worker -H 192.168.1.21 -p 7004 -s 192.168.1.10:7001

在一个与 supervisor 可以连通的客户端,使用下面的 Python 代码做验证:

import xorbits
import xorbits.numpy as np

xorbits.init('http://192.168.1.10:7005')
print(np.random.rand(100, 100).mean())