Dask在DRMAA上
项目描述
在运行符合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部门满意。
要启用此功能,请调用DRMAACluster的adapt方法。您可以提交计算到集群,而无需明确创建工作节点。
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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8b02524c38138358da2076c3405a340b493a6f07f2a2865e6805edce073ca6d2 |
|
MD5 | 727264379162be849cca557be823bcc4 |
|
BLAKE2b-256 | 00479ee6f6be4e073ddfbe9a4afde31c3b2e574c26aa9ab13aebb5ad418f1fb2 |