在 Google Cloud Dataproc 上部署¶
Dataproc 是 Google Cloud 用于创建 Apache Hadoop 和 Apache Spark 集群的托管服务。Dataproc 支持一系列开源初始化操作,允许在创建集群时安装各种开源工具。特别是,以下说明将指导您创建已安装并配置好 Dask 和 Dask-Yarn 的 Dataproc 集群。本教程大致改编自 Dask 初始化操作的 README 文件。
初始化操作的作用¶
初始化操作的安装脚本执行以下几项操作:
- 它接受一个元数据参数,用于配置您的集群以使用 Dask 及其独立调度器或使用 Dask-Yarn 来利用 Yarn。
- 对于
yarn
配置,此脚本会在所有机器上安装dask
和dask-yarn
,并添加一个基准 Skein 配置文件。此文件会告知每台机器 Dask-Yarn 环境的位置,以及默认使用的 worker 数量:2。这样,您只需创建YarnCluster
对象,无需提供任何参数,即可开始使用dask-yarn
。Dask 依赖于 Yarn 来调度其任务。 - 对于
standalone
配置,此脚本会安装dask
并配置集群使用 Dask 调度器来管理 Dask 工作负载。 - Dataproc 服务本身支持 Web UI,例如 Jupyter 和 Dask Web UI。这将在下文更详细地解释。
配置您的 Dataproc 集群¶
有几种方法可以创建 Dataproc 集群。本教程将重点介绍如何使用 gcloud SDK 来完成此操作。
首先,您需要创建一个 GCP 项目。请按照此处的说明进行操作。
确定您的 Dataproc 集群的名称。然后,选择一个地理区域来放置您的集群,最好是离您较近的区域。
以下命令将创建用于 dask-yarn 配置的集群。
CLUSTER_NAME=<cluster-name>
REGION=<region>
gcloud dataproc clusters create ${CLUSTER_NAME} \
--region ${REGION} \
--master-machine-type n1-standard-16 \
--worker-machine-type n1-standard-16 \
--image-version preview \
--initialization-actions gs://goog-dataproc-initialization-actions-${REGION}/dask/dask.sh \
--metadata dask-runtime=yarn \
--optional-components JUPYTER \
--enable-component-gateway
分解此命令:
gcloud dataproc clusters create ${CLUSTER_NAME}
使用 gcloud sdk 创建 Dataproc 集群。--region ${REGION}
指定集群区域。--master-machine-type
和worker-machine-type
允许通过不同类型的机器配置 CPU 和 RAM。image-version preview
指定Dataproc 镜像版本。您将使用最新的 Dataproc 预览镜像以获得最新的功能。--initialization-actions gs://goog-dataproc-initialization-actions-${REGION}/dask/dask.sh
指定要在集群上安装的初始化操作。您可以通过逗号分隔列表添加任意数量的操作。--metadata dask-runtime=yarn
指定配置您的集群,以便 Dask 配置为与yarn
一起使用。--optional-components JUPYTER
配置集群以包含 Jupyter 可选组件,以访问在集群上运行的 Jupyter notebook。与初始化操作一样,您可以添加任意数量的可选组件。它们与初始化操作的区别在于,它们获得了 Dataproc 服务的首要支持,但可用选项较少。--enable-component-gateway
允许您通过直接连接到 Dataproc Web 控制台,绕过对集群上特定预定 Web UI 列表(如 Jupyter 和 Yarn ApplicationMaster)的 SSH 隧道需求。
连接到您的集群¶
您可以通过几种不同的方式访问您的集群。如果您配置了诸如 Jupyter 或 Zeppelin 之类的 notebook 服务并启用了组件网关(如上所述),您可以通过导航到您的集群页面,点击集群名称,然后点击Web 界面选项卡来访问您的 Web UI。
您也可以通过 SSH 连接到您的集群。您可以通过 Dataproc Web 控制台执行此操作:从集群页面,点击您的集群名称,然后点击VM 实例,并在主节点旁边点击 SSH。
此外,您还可以使用 gcloud sdk 通过 SSH 连接到您的集群。首先,找到您的集群所在的区域。这将是您之前指定的区域,但附加一个字母,例如 us-central1-b
。要找到您集群的区域,您可以在集群页面中您的集群旁边找到。这是通过 Dataproc 的自动区域功能确定的,但您可以在创建新集群时添加 --zone
标志来选择任何区域放置您的集群。
gcloud compute ssh ${CLUSTER_NAME}-m --zone ${ZONE}
连接后,无论是通过 Jupyter notebook 还是通过 ssh,都可以尝试运行一些代码。如果您的集群配置了 Dask-Yarn:
from dask_yarn import YarnCluster
from dask.distributed import Client
import dask.array as da
import numpy as np
cluster = YarnCluster()
client = Client(cluster)
cluster.adapt() # Dynamically scale Dask resources
x = da.sum(np.ones(5))
x.compute()
如果您的集群配置了独立调度器:
from dask.distributed import Client
import dask.array as da
import numpy as np
client = Client("localhost:8786")
x = da.sum(np.ones(5))
x.compute()
监控 Dask 作业¶
您可以使用 Web UI 监控您的 Dask 应用,具体取决于您使用的运行时。
对于 yarn 模式,您可以通过 YARN ResourceManager 访问 Skein Web UI。要访问 YARN ResourceManager,请创建启用组件网关的集群或创建 SSH 隧道。然后,您可以按照这些说明访问 Skein Web UI。
对于独立模式,您可以访问原生的 Dask UI。创建 SSH 隧道以在端口 8787 上访问 Dask UI。