跳至主要内容

Dask在DRMAA上

项目描述

Build Status PyPI Release conda-forge Release

在运行符合DRMAA规范的作业调度器的集群上部署Dask.distributed集群。

示例

从Python启动

from dask_drmaa import DRMAACluster
cluster = DRMAACluster()

from dask.distributed import Client
client = Client(cluster)
cluster.start_workers(2)

>>> future = client.submit(lambda x: x + 1, 10)
>>> future.result()
11

或从命令行启动

$ dask-drmaa 10  # starts local scheduler and ten remote workers

安装

Python包可以从PyPI获取,并使用pip进行安装

pip install dask-drmaa

此外,conda包也可从conda-forge获取

conda install -c conda-forge dask-drmaa

此外,您还可以从GitHub安装此软件包,以获取最新的更改

pip install git+https://github.com/dask/dask-drmaa.git --upgrade

git clone git@github.com:dask/dask-drmaa.git
cd dask-drmaa
pip install .

您必须已安装DRMAA系统库,并且能够从您的本地机器提交作业。请确保设置环境变量DRMAA_LIBRARY_PATH以指向您的系统中的libdrmaa.so的位置。

测试

此存储库包含一个用于Son of Grid Engine集群(具有主节点和两个从节点)的Docker-compose测试工具。您可以按照以下方式初始化此系统:

docker-compose build
./start-sge.sh

如果您之前已经这样做,并且需要刷新您的解决方案,您可以执行以下操作:

docker-compose stop
docker-compose build --no-cache
./start-sge.sh

然后在主Docker容器中运行py.test以运行测试

docker exec -it sge_master /bin/bash -c "cd /dask-drmaa; python setup.py develop"
docker exec -it sge_master /bin/bash -c "cd /dask-drmaa; py.test dask_drmaa --verbose"

自适应负载

Dask-drmaa可以适应调度器负载,在网格上有更多工作时要部署更多工作节点,并在它们不再必要时清理这些工作节点。这可以简化设置(您只需运行一个集群即可),并且它可以减少集群的负载,让IT部门满意。

要启用此功能,请调用DRMAAClusteradapt方法。您可以提交计算到集群,而无需明确创建工作节点。

from dask_drmaa import DRMAACluster
from dask.distributed import Client

cluster = DRMAACluster()
cluster.adapt()
client = Client(cluster)

futures = client.map(func, seq)  # workers will be created as necessary

可扩展性

DRMAA接口是SGE、SLURM、LSF、Torque等众多作业调度器之间最低的共同点。然而,有时用户需要指定特定于其集群的参数,例如资源队列、墙时钟、内存限制等。

DRMAA允许用户在构建集群或启动新工作进程时传递本地规范

cluster = DRMAACluster(template={'nativeSpecification': '-l h_rt=01:00:00'})
# or
cluster.start_workers(10, nativeSpecification='-l h_rt=01:00:00')

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分布

dask-drmaa-0.2.1.tar.gz (26.0 kB 查看哈希值)

上传时间

支持者