如何保持 Google Dataproc master 运行?

How to keep Google Dataproc master running?

我在 Dataproc 上创建了一个集群,它运行良好。但是,集群空闲一段时间后(~90分钟),主节点会自动停止。这发生在我创建的每个集群上。我看到这里有一个类似的问题:

看来是初始化动作的问题。但是 post 没有给我足够的信息来解决这个问题。以下是我用来创建集群的命令:

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。

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

正如评论线程中总结的那样,这确实是由 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 服务以外的角色。