我在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。
如何让主节点保持运行?谢谢。
正如评论主题中所总结的,这确实是由Datalab的auto-shutdown feature引起的。有几种方法可以改变这种行为:
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 repo中为数据空间初始化操作提交跟踪问题,建议默认禁用超时或提供简单的基于元数据的选项。由于主服务器还执行除运行Datalab服务之外的其他角色,因此自动关闭行为可能与Dataproc集群上的默认用法不同。