Мне нужно запустить кластер Dataproc
с установленными коннекторами BigQuery и Cloud Storage.
Я использую вариант этого сценария (поскольку у меня нет доступа к корзине, используемой в общем), все работает нормально, но когда я запускаю задание, когда кластер запущен и работает , это всегда приводит к ошибке Task was not acquired
.
Я могу это исправить, просто перезапустив агент dataproc на всех узлах, но мне действительно нужно, чтобы это работало правильно, чтобы иметь возможность запускать задание сразу после создания моего кластера. похоже, что эта часть скрипта не работает должным образом:
# Restarts Dataproc Agent after successful initialization
# WARNING: this function relies on undocumented and not officially supported Dataproc Agent
# "sentinel" files to determine successful Agent initialization and not guaranteed
# to work in the future. Use at your own risk!
restart_dataproc_agent() {
# Because Dataproc Agent should be restarted after initialization, we need to wait until
# it will create a sentinel file that signals initialization competition (success or failure)
while [[ ! -f /var/lib/google/dataproc/has_run_before ]]; do
sleep 1
done
# If Dataproc Agent didn't create a sentinel file that signals initialization
# failure then it means that initialization succeded and it should be restarted
if [[ ! -f /var/lib/google/dataproc/has_failed_before ]]; then
service google-dataproc-agent restart
fi
}
export -f restart_dataproc_agent
# Schedule asynchronous Dataproc Agent restart so it will use updated connectors.
# It could not be restarted sycnhronously because Dataproc Agent should be restarted
# after its initialization, including init actions execution, has been completed.
bash -c restart_dataproc_agent & disown
Мой вопрос здесь:
- Как узнать, что действия по инициализации выполнены?
- Есть ли у меня / Как правильно перезапустить агент Dataproc на узлах моего недавно созданного кластера?
EDIT:
Вот команда, которую я использую для создания кластера (используя версию образа 1.3):
gcloud dataproc --region europe-west1 \
clusters create my-cluster \
--bucket my-bucket \
--subnet default \
--zone europe-west1-b \
--master-machine-type n1-standard-1 \
--master-boot-disk-size 50 \
--num-workers 2 \
--worker-machine-type n1-standard-2 \
--worker-boot-disk-size 100 \
--image-version 1.3 \
--scopes 'https://www.googleapis.com/auth/cloud-platform' \
--project my-project \
--initialization-actions gs://dataproc-initialization-actions/connectors/connectors.sh \
--metadata 'gcs-connector-version=1.9.6' \
--metadata 'bigquery-connector-version=0.13.6'
Также обратите внимание, что сценарий инициализации коннекторов уже исправлен и работает нормально, поэтому я сейчас его использую, но мне все равно придется вручную перезапустить агент dataproc, чтобы иметь возможность запускать задание.