提交应用程序

警告

提交 API 是实验性的,版本之间可能会发生变化

有时,您希望将 Dask 应用程序完全部署到 YARN 上,而无需在边缘节点上运行相应的进程。这可能出现在自动部署的生产应用程序或您不想消耗边缘节点资源的长时间运行作业中。

为了处理这些情况,dask-yarn 提供了一个 CLI 文档,可用于异步提交应用程序以在 YARN 集群上运行。这里有三个可能有用的命令

  • dask-yarn submit: 向 YARN 集群提交应用程序
  • dask-yarn status: 检查应用程序状态
  • dask-yarn kill: 终止运行中的应用程序

提交应用程序

要准备使用 dask-yarn submit 提交的应用程序,您需要将 YarnCluster 的创建方式从使用构造函数更改为使用 YarnCluster.from_current()

# Replace this
cluster = YarnCluster(...)

# with this
cluster = YarnCluster.from_current()

这是因为脚本直到集群已创建后才会运行 - 在那时,传递给 YarnCluster 构造函数的配置将不再有用。集群配置改为通过 dask-yarn submit CLI 传递(请注意,与之前一样,集群创建后可以动态扩展)。

# Submit `myscript.py` to run on a dask cluster with 8 workers,
# each with 2 cores and 4 GiB
$ dask-yarn submit \
  --environment my_env.tar.gz \
  --worker-count 8 \
  --worker-vcores 2 \
  --worker-memory 4GiB \
  myscript.py

application_1538148161343_0051

这将输出一个 YARN 应用程序 ID,可以与其它 YARN 工具一起使用。

检查应用程序状态

可以使用 YARN Web UI 或通过 dask-yarn status 以编程方式检查已提交的应用程序状态。此命令接受一个参数 - 应用程序 ID。

$ dask-yarn status application_1538148161343_0051
APPLICATION_ID                    NAME    STATE       STATUS       CONTAINERS    VCORES    MEMORY    RUNTIME
application_1538148161343_0051    dask    RUNNING     UNDEFINED    9             17        33792     6m

终止运行中的应用程序

提交的应用程序通常会运行直到完成。如果您需要在完成之前终止某个应用程序,可以使用 dask-yarn kill 命令。此命令接受一个参数 - 应用程序 ID。

$ dask-yarn kill application_1538148161343_0051

访问应用程序日志

有几种方法可以检索应用程序日志

  • 可以使用 Skein Web UI 查看运行中应用程序的日志(dask-yarn 使用 Skein 构建)。

  • 可以使用 yarn logs 命令查看已完成应用程序的日志。

    $ yarn logs -applicationId application_1538148161343_0051