【问题标题】:How to keep Google Dataproc master running?如何保持 Google Dataproc master 运行?
【发布时间】:2019-04-09 01:07:12
【问题描述】:

我在 Dataproc 上创建了一个集群,效果很好。但是,在集群空闲一段时间(约 90 分钟)后,主节点将自动停止。这发生在我创建的每个集群上。我看到这里有一个类似的问题:Keep running Dataproc Master node

看起来是初始化动作的问题。然而,这篇文章没有给我足够的信息来解决这个问题。以下是我用来创建集群的命令:

gcloud dataproc clusters create $CLUSTER_NAME \
    --project $PROJECT \
    --bucket $BUCKET \
    --region $REGION \
    --zone $ZONE \
    --master-machine-type $MASTER_MACHINE_TYPE \
    --master-boot-disk-size $MASTER_DISK_SIZE \
    --worker-boot-disk-size $WORKER_DISK_SIZE \
    --num-workers=$NUM_WORKERS \
    --initialization-actions gs://dataproc-initialization-actions/connectors/connectors.sh,gs://dataproc-initialization-actions/datalab/datalab.sh \
    --metadata gcs-connector-version=$GCS_CONNECTOR_VERSION \
    --metadata bigquery-connector-version=$BQ_CONNECTOR_VERSION \
    --scopes cloud-platform \
    --metadata JUPYTER_CONDA_PACKAGES=numpy:scipy:pandas:scikit-learn \
    --optional-components=ANACONDA,JUPYTER \
    --image-version=1.3

我的集群需要 BigQuery 连接器、GCS 连接器、Jupyter 和 DataLab。

如何保持我的主节点运行?谢谢。

【问题讨论】:

  • 您的项目是否有任何共享的 GCE 启动脚本,这些脚本可能在空闲逻辑上具有某种自动关闭功能?您的项目中是否还有其他 GCE 虚拟机正在运行任何类型的收割机来关闭他们认为空闲的其他虚拟机?如果您转到“计算引擎”和“活动”日志下的 Stackdriver 审核日志,您应该会看到发出关闭命令的记录;是发出这些命令的计算引擎默认服务帐户吗?
  • 是的,它是默认服务帐户。 (在日志的 authenticationInfo 下列出)。但是,在同一个项目上运行的其他实例具有相同的服务帐户,并且在空闲时不会自动关闭。另外,只有master节点自动停止,worker节点一直在运行..
  • 我刚刚在具有相同服务帐户的同一项目下测试了在没有任何初始化操作的情况下启动集群。事实证明,集群正在运行,没有自动停止...
  • 可能是Datalab自动关机(默认90分钟)cloud.google.com/datalab/docs/concepts/auto-shutdown
  • Datalab 使用环境变量DATALAB_DISABLE_IDLE_TIMEOUT_PROCESS 来控制自动关机。您可以尝试使用-e "DATALAB_DISABLE_IDLE_TIMEOUT_PROCESS=true" 运行Docker 容器吗?

标签: google-cloud-platform google-cloud-dataproc google-cloud-datalab


【解决方案1】:

正如评论线程中所总结的,这确实是由Datalab的auto-shutdown feature引起的。有几种方法可以改变这种行为:

  1. 首次创建启用 Datalab 的 Dataproc 集群后,登录 Datalab 并单击“Idle timeout in about ...”文本将其禁用:https://cloud.google.com/datalab/docs/concepts/auto-shutdown#disabling_the_auto_shutdown_timer - 文本将更改为“Idle timeout is disabled”
  2. 编辑初始化操作以按照 yelsayed 的建议设置环境变量:

    function run_datalab(){
      if docker run -d --restart always --net=host -e "DATALAB_DISABLE_IDLE_TIMEOUT_PROCESS=true" \
          -v "${DATALAB_DIR}:/content/datalab" ${VOLUME_FLAGS} datalab-pyspark; then
        echo 'Cloud Datalab Jupyter server successfully deployed.'
      else
        err 'Failed to run Cloud Datalab'
      fi
    }
    

并使用您的自定义初始化操作而不是股票 gs://dataproc-initialization-actions 之一。也值得在 github 存储库中为 dataproc 初始化操作提交跟踪问题,建议默认禁用超时或提供基于元数据的简单选项。在 Dataproc 集群的默认使用中,自动关闭行为可能与预期不同,因为主节点还执行除了运行 Datalab 服务之外的角色。

【讨论】:

  • 方法1有效,但每次都需要手动设置。对于方法 2,我按照建议编辑了初始化操作。但是,当我连接到DataLab时,设置仍然显示90m自动关机时间而不是0。有修复方法2的建议吗?
  • 嗯,当我使用该初始化操作进行测试时,90m 的关机对我来说消失了。您是否有可能忘记将您编辑的初始化操作重新上传到您自己的 GCS 存储桶和/或在创建集群时指向它的不同版本?你可以试试我刚刚添加了公共读取权限的副本:gs://hadoop-cloud-dev-dhuo/datalab.sh 和/或只是将它与你自己的进行比较以查看差异(不要长期依赖它,因为我可能会删除我的副本)
  • 我下载了你的shell,它和我的一样。不过,我想我找到了原因。单击右上角的图标时,我没有看到“大约...的空闲超时”文本;我发现主节点没有关闭 90 分钟。我指的是“设置”下的“自动关机”文本框,仍然是 90m。你也一样吗?
  • 啊,是的,那个框仍然出现,但可以忽略。主要下拉菜单是关于关闭是否处于活动状态的事实来源。似乎“关机前的分钟数”的设置与布尔值分开存储以完全启用该功能,因此在修改后的初始化操作中,我们刚刚修改了布尔值,而数字参数仍存储在某处,只是没有用过的。看起来“更新”按钮也是灰色的,所以它必须知道该设置已禁用。
  • 你可以在 Datalab 中将此作为装饰性错误提交;他们可以通过一些文字表明该功能肯定被禁用,从而减少“设置”中的混乱
猜你喜欢
  • 2022-10-03
  • 2021-06-11
  • 2018-09-16
  • 2019-06-12
  • 1970-01-01
  • 1970-01-01
  • 2020-05-14
  • 2016-01-11
  • 1970-01-01
相关资源
最近更新 更多