一个简单的基于云的工作流系统

crosscore的Python项目详细描述


十字芯

CrosscoreProject Crossbow的一部分。它 允许您在云中创建实例的自动缩放池,然后可与crossflow一起使用以执行计算工作流。在

当前Crosscore支持Amazon Web ServicesGoogle Cloud Platform。在

1。安装

1.1先决条件

1.1.1 Python版本

Crosscore需要python3.6或更高版本。不支持Python2版本。在

1.1.2云提供商配置

Crosscore同时支持AWS和GCP。根据您计划使用的配置过程略有不同:

AWS

假设您已经完成了为您的AWS帐户提供编程访问所需的操作。这个 将涉及生成AWS AccessKey IDSecret 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完成此操作的示例。在

请注意,如果更改机器映像,则需要重新启动crosscorecrosscore shutdown; crosscore restart)。在

6。作者:

•基督教诉讼 •查理·劳顿charles.laughton@nottingham.ac.uk

7。确认:

EPSRC拨款EP/P011993/1

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用jaxb整理集合?   java改装添加带有令牌和id的标头   Java Webstart在启动应用程序之前停止   mysql将请求主体作为JSON存储到Java数据库中   春天3。从Java 7更新到Java 8后x应用程序不工作   java如何为我的mock实例化unirest HttpResponse<JsonNode>?   java两个servlet在同一场战争中与两场独立战争中的利弊?   java Mockito验证未失败   GWT中的java文件读取器   java避免代码重复   java谁将设置saml cookie,其中包含凭证信息   java如何修改jar包代码,然后重新导出更新的jar包?   BST数据结构中的java递归差异   java如何从文本文件中读取存储的哈希表?   带有quercus的java php comet   java从SeleniumWebDriver写入json变量   javascript如何在同一个action类中对方法调用action?