我在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。
如何使主节点保持运行状态?谢谢。
答案 0 :(得分:2)
正如注释线程中所总结的,这确实是由Datalab的auto-shutdown feature引起的。有两种方法可以更改此行为:
按照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服务以外的其他角色。