一个简单的基于云的工作流系统
crosscore的Python项目详细描述
十字芯
Crosscore是Project Crossbow的一部分。它 允许您在云中创建实例的自动缩放池,然后可与crossflow一起使用以执行计算工作流。在
当前Crosscore支持Amazon Web Services和 Google Cloud Platform。在
1。安装
1.1先决条件
1.1.1 Python版本
Crosscore需要python3.6或更高版本。不支持Python2版本。在
1.1.2云提供商配置
Crosscore同时支持AWS和GCP。根据您计划使用的配置过程略有不同:
AWS
假设您已经完成了为您的AWS帐户提供编程访问所需的操作。这个
将涉及生成AWS AccessKey ID和Secret Access Key,并使用aws configure
安装它们。在
此外,您需要确保您的帐户具有以下权限:
Amazon EC2FullAccess
GCP
您需要下载带有服务帐户凭据的.json文件-有关详细信息,请参阅here。然后,您需要决定集群的可用性区域- 请记住,这将影响您将能够启动的实例类型(特别是GPU加速器)的范围。 掌握这些信息后,创建两个环境变量:
^{pr2}$1.1.3地形
Crosscore使用Terraform来完成云基础设施的繁重工作 创造和管理。在使用Crosscore之前,必须根据 说明。一旦你可以跑步:
terraform -version
你做得够多了。在
1.1.4 SSH
您需要一个ssh公钥(例如,$HOME/.ssh/id_rsa.pub公司). 如果还没有,请使用ssh-keygen
来创建它,然后将环境变量设置为
其位置:
export SSH_PUBLIC_KEY=<path to id_rsa.pub or equivalent>
1.2安装Crosscore Python包
Crosscore当前不在pypi中,因此要安装它,请使用:
pip install git+https://bitbucket.org/claughton/crosscore.git
如果一切顺利,您可以运行xcore -h
检查安装是否正常:
usage: xcore [-h] [-V] {status,start,restart,shutdown,daemon} ...
Crosscore: Cloud clusters for distributed computing.
positional arguments:
{status,start,restart,shutdown,daemon}
status status of crosscore cluster
start create cloud resources
restart recreate cloud resources
shutdown terminate and delete all resources
daemon control the xcore daemon
optional arguments:
-h, --help show this help message and exit
-V, --version show program's version number and exit
1.3配置
使用以下命令为xcore生成初始默认配置:
xcore-init <provider>
“aws”或“gcp”在哪里。在
这将运行一些检查,确认您具备所有的先决条件,并创建一些配置和模板 文件夹。这些文件将放在$HOME/.xcore中。 这个过程可能需要相当长的时间,因为它涉及到terraform创建您的基础云基础设施。在
完成后,检查$HOME/.xcore中的默认配置/配置.yaml. 特别是您可能需要更改image_name
-机器映像的名称
用于创建工作机实例和关联的image_owner
。大多数其他“有趣”的参数,如worker实例类型和可以启动的最大worker数量,都可以交互更改,因此现在不需要在这里编辑。在
1.4启动
一旦您对配置满意,运行xcore start
来创建基础云基础设施并启动Crosscore守护程序。基础设施由一个运行调度程序的小型(默认为t2.small/f1 micro)实例组成,守护进程监听作业请求并根据需要自动调整集群。在
2。运行测试作业
创建一个小的crossflow工作流,例如:
from crossflow.kernels import SubprocessKernel
from crossflow.clients import Client
from crosscore import cluster
sleeper = SubprocessKernel('sleep {n}; echo {n}')
sleeper.set_inputs(['n'])
sleeper.set_outputs(['STDOUT'])
client = Client(address=cluster.get_url())
result = client.submit(sleeper, 10)
print(result.result())
如果在一个窗口中以交互方式运行此Python脚本,则可以使用
xcore status
从另一个要遵循worker创建过程的
作业正在运行,工作线程在之后被删除。在
3。关闭群集
如果暂时不使用集群,可以关闭调度程序实例并停止守护程序:
xcore shutdown
当您想再次使用它时,请运行xcore restart
4。更改实例类型和群集大小
在脚本中,可以调整可能的最大实例数 在提交作业之前启动,以及它们的实例类型,例如:
...
# AWS example:
cluster.set_worker_type('c5.xlarge')
# GCP example:
# cluster.set_worker_type('n1-standard-4', accelerator_type='nvidia-tesla-t4')
cluster.set_max_workers(5)
client = Client(cluster.get_url())
...
5。更改机器图像
可以使用crossflow运行的工作流取决于工作节点上安装的软件。虽然你可以做一些准备工作
在这些动态的(即在crossflow内核定义中),您很可能希望用您最喜欢的方法来准备机器映像
预装软件堆栈。可以在Packer
文件夹中找到如何使用Packer完成此操作的示例。在
请注意,如果更改机器映像,则需要重新启动crosscore(crosscore shutdown; crosscore restart
)。在
6。作者:
•基督教诉讼 •查理·劳顿charles.laughton@nottingham.ac.uk
7。确认:
EPSRC拨款EP/P011993/1
- 项目
标签: