【问题标题】:Optimize Dataproc cluster startup time优化 Dataproc 集群启动时间
【发布时间】:2020-05-15 06:52:57
【问题描述】:

我正在开发用户提交请求的应用程序,这些请求将作为 Spark 作业处理。目前,我们的数据中心有一个非常大的集群来满足组织的需求。我们计划迁移到 GCP,为了降低成本,我们计划迁移到动态集群。由于集群的大小很大程度上取决于用户活动,我们正在计划一个完整的 Auto Scaling 集群。

其中一个问题是我们的用户请求受 SLA 约束,请求处理时间约为 10 到 15 分钟。不幸的是,动态集群需要另外 5 到 6 分钟才能启动集群,并且作为自动扩展的一部分添加工作节点也需要大量时间。

尽管我的初始化步骤很少,但作为一项措施,我创建了一个自定义映像,其中包含我的 PySpark 作业所需的预安装库集,并使用该映像启动集群。出于测试目的,我正在创建非常基本的 2 节点集群,这也需要 4 到 6 分钟。

我什至没有安装额外的“可选组件”。

这是我用于创建图像的命令:

python generate_custom_image.py \
    --image-name custom-1-5-1-debina10 \
    --family custom-image \
    --dataproc-version 1.5.1-debian10 \
    --customization-script initialization_scripts_for_image.sh \
    --zone europe-west3-b \
    --gcs-bucket gs://poc-data-store/custom-image-logs/ \
    --disk-size 50 \
    --dry-run

有什么建议可以改善 Dataproc 集群的启动时间。一项观察是,Dataproc 启动日志将大部分时间用于卸载组件:

有没有可能将尽可能多的推送到镜像准备阶段,减少只启动服务到集群启动阶段?

【问题讨论】:

    标签: google-cloud-platform google-compute-engine google-cloud-dataproc


    【解决方案1】:

    这是一个known GCE issue,在具有大启动磁盘的 Debian 10 虚拟机中启动时间很慢。此问题是由 GCE VM 启动期间文件系统大小调整缓慢引起的。

    GCE 团队正在努力解决此问题,但还没有预计到达时间。

    同时,您有几种解决方法:

    • 使用基于 Ubuntu 的 Dataproc 映像
    • 使用较小的启动磁盘会减少启动时间,但不建议这样做,因为它会影响性能,因此您可能需要附加 Local SSDs 来解决此问题。
    • 使用 1TB 启动磁盘创建 custom Dataproc image,以便在启动期间不会调整文件系统大小。

    Dataproc 异步卸载组件,因此不会显着影响启动时间。

    更新:

    GCE issus 已修复,因此默认配置使用最新 Debian 10 映像的 Dataproc 集群的平均集群创建时间为 90 秒。

    【讨论】:

    • 谢谢伊戈尔。我设法将启动磁盘大小设置为小并附加了本地 ssd 磁盘。启动时间下降到 2m 30s 到 3m 。我检查了 Debian 和 Ubuntu 映像,大部分时间都保持不变。不确定是否有更多想法可以进一步缩短启动时间,但也可以接受这个数字。
    猜你喜欢
    • 2018-11-11
    • 1970-01-01
    • 2015-12-21
    • 2020-01-31
    • 2020-12-07
    • 1970-01-01
    • 2017-08-28
    • 2018-03-08
    • 1970-01-01
    相关资源
    最近更新 更多