快速入门¶
Dask-Yarn 被设计成可以像任何其他 Python 库一样使用——在本地安装它并在您的代码中使用(无论是交互式还是作为应用程序的一部分)。只要您部署的计算机可以访问 YARN 集群(通常是边缘节点),一切都应该正常工作。
在边缘节点上安装 Dask-Yarn¶
Dask-Yarn 设计用于从边缘节点使用。要安装,请使用 conda 或 pip 创建一个新环境并在边缘节点上安装 dask-yarn
。
Conda 环境
创建一个安装了 dask-yarn
的新的 conda 环境。您可能还希望添加工作中依赖的任何其他包。
$ conda create -n my_env dask-yarn # Create an environment
$ conda activate my_env # Activate the environment
虚拟环境
创建一个安装了 dask-yarn
的新的虚拟环境。您可能还希望添加工作中依赖的任何其他包。
$ python -m venv my_env # Create an environment using venv
$ source my_env/bin/activate # Activate the environment
$ pip install dask-yarn # Install some packages
打包您的环境以进行分发¶
我们需要确保在 Yarn 集群上使用的库与您在本地使用的库相同。默认情况下,dask-yarn
通过将打包的 Python 环境作为应用程序的一部分分发到 Yarn 集群来处理此问题。这通常使用以下方式处理:
- conda-pack 用于 Conda 环境
- venv-pack 用于 虚拟环境
有关更多信息,请参阅管理 Python 环境。
Conda 环境
如果您尚未安装 conda-pack,现在需要进行安装。您可以将其安装在要打包的环境中,或者安装在您的根环境中(这样它在所有环境中都可用)。
$ conda install -c conda-forge conda-pack # Install conda-pack
$ conda-pack # Package environment
Collecting packages...
Packing environment at '/home/username/miniconda/envs/my_env' to 'my_env.tar.gz'
[########################################] | 100% Completed | 12.2s
虚拟环境
如果您尚未安装 venv-pack,现在需要进行安装。
$ pip install venv-pack # Install venv-pack
$ venv-pack # Package environment
Collecting packages...
Packing environment at '/home/username/my-env' to 'my-env.tar.gz'
[########################################] | 100% Completed | 8.3s
用法¶
要启动一个 YARN 集群,请创建 YarnCluster
的实例。此构造函数接受多个参数,您可以将它们留空以使用配置中定义的默认值。
from dask_yarn import YarnCluster
from dask.distributed import Client
# Create a cluster where each worker has two cores and eight GiB of memory
cluster = YarnCluster(environment='environment.tar.gz',
worker_vcores=2,
worker_memory="8GiB")
# Connect to the cluster
client = Client(cluster)
# Do some work here
# Shutdown client and cluster (alternatively use context-manager as shown below):
client.shutdown()
cluster.shutdown()
默认情况下,集群创建时不会启动 worker。要更改 worker 数量,请使用 YarnCluster.scale()
方法。当向上扩展时,将向 YARN 请求新的 worker。当向下缩减时,将智能地选择 worker 并优雅地缩减,从而释放资源。
# Scale up to 10 workers
cluster.scale(10)
# ...
# Scale back down to 2 workers
cluster.scale(2)
另外,您可以使用 YarnCluster.adapt()
方法启用自适应扩展。启用后,集群将根据使用情况自动向上或向下扩展。在这里,我们开启自适应扩展,最小 worker 数为 2 个,最大 worker 数为 10 个。
# Adaptively scale between 2 and 10 workers
cluster.adapt(minimum=2, maximum=10)
如果您在 Jupyter Notebook 或 JupyterLab 中进行交互式工作,您还可以使用提供的图形界面来更改集群大小,而无需手动调用 YarnCluster.scale()
或 YarnCluster.adapt()
。

通常,集群会一直存在直到 YarnCluster
对象被删除。为了更明确地控制集群何时关闭,您可以将集群用作上下文管理器,或者手动调用 YarnCluster.shutdown()
。
# Use ``YarnCluster`` as a context manager
with YarnCluster(...) as cluster:
# The cluster will remain active inside this block,
# and will be shutdown when the context exits.
# Or manually call `shutdown`
cluster = YarnCluster(...)
# ...
cluster.shutdown()