如何保持 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 引起的。有几种方法可以改变这种行为:
- 首次创建支持 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"
按照 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 服务以外的角色。
我在 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 引起的。有几种方法可以改变这种行为:
- 首次创建支持 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"
按照 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 服务以外的角色。