Не работает параллелизм задач в Google Cloud Run Jobs?

Вопрос или проблема

Я хотел узнать о параллелизме задач в Cloud Run, поэтому я создал задачу и установил количество задач = 10, и каждому контейнеру я выделяю 8 ГБ памяти и 8 ЦП.

Я установил параллелизм задач на “Запускать столько задач одновременно, сколько возможно”.

Но когда я запускаю эту задачу, она выполняет 10 задач одну за другой, а не одновременно. Почему она не запускает 10 задач параллельно?

Задачи Cloud Run выполняют 10 задач одну за другой

У меня есть файл размером 1,6 ГБ, и ниже приведен мой код, который я запускаю на экземплярах Cloud Run для обработки файла и загрузки данных в BigQuery, просто для тестирования.

import numpy as np
import os
import pandas as pd


project_id = os.environ.get("PROJECT_ID")
task_index = int(os.environ.get("CLOUD_RUN_TASK_INDEX")) 
nb_task = int(os.environ.get("CLOUD_RUN_TASK_COUNT"))
print(nb_task)

df_original=pd.read_csv("gs://dataproc-input-321/train.csv")
df_len=len(df_original)
print(df_len)


batch_size=df_len//nb_task
print("--------------batch--------------")
print(batch_size)
# print("размер пакета {}".format(str(batch_size)))
print(f"размер пакета, {batch_size}!")


start_row_no = int(batch_size * task_index)
end_row_no   = int(batch_size * (task_index + 1) - 1)


print(f"Для task_id {task_index}, начало {start_row_no} и конец {end_row_no}")
df_sliced=df_original.iloc[start_row_no:end_row_no]
del(df_original)


df_sliced["type"]=np.where(df_sliced["PRODUCT_LENGTH"]%2==0,"even","odd")

df_even=df_sliced[df_sliced["type"] == 'even']
df_odd=df_sliced[df_sliced["type"] == 'odd']


df_even.to_gbq('output_dataset.amazon_even', 
                 project_id=project_id,
                 if_exists="append"
                 )
df_odd.to_gbq('output_dataset.amazon_odd', 
                 project_id=project_id,
                 if_exists="append"
                 )

Так что я думаю, что 8 ГБ памяти и 8 ЦП достаточно для обработки 1,6 ГБ. Но почему все не выполняется параллельно, если каждый экземпляр получает 8 ГБ памяти и 8 ЦП?

Существует одна опция для ограничения параллелизма под названием “Ограничить количество параллельных задач”, но когда я пытаюсь ввести любое значение больше 0, возникает ошибка – “Не должно превышать 0 для выбранных ЦП и памяти в регионе”.

Я пытался изменить регион, но мне не удается установить параллелизм.

Может кто-нибудь объяснить мне,

  1. почему не позволяет установить параллелизм вручную?
  2. почему он выполняет по одной задаче, 10 раз и обрабатывает файлы, когда выбрано “Запускать столько задач одновременно, сколько возможно”?
  3. Я заметил, что когда я выделял 32 ГБ памяти каждому экземпляру, Cloud Run жалуется, что должно быть минимум 4 ЦП для 32 ГБ памяти, что это такое?

Спасибо заранее.

  1. Я пытался установить параллелизм задач вручную, но он не позволяет установить значение больше 0.
  2. Я пробовал запустить в другом регионе, но не смог установить параллелизм задач.

Ответ или решение

Проблема с параллелизмом задач в Google Cloud Run Jobs может возникнуть из-за ряда ограничений в конфигурации ресурсов и архитектуры. Давайте подробно разберем вашу ситуацию и ответим на все ваши вопросы.

Почему не удается установить параллелизм вручную?

  1. Ограничения аппаратных ресурсов:

    • Google Cloud Run имеет свои правила, касающиеся выделяемых ресурсов (ЦП и оперативной памяти) в зависимости от региона. Если заданное количество ЦП и памяти не соответствует требованиям, система может заблокировать изменения. Например, если вы установили 8 ГБ оперативной памяти, вам нужно выделить как минимум 2 ЦП.
    • При использовании высокой памяти (например, 32 ГБ) вам будет необходимо выделить более 4 ЦП. Это ограничение связано с тем, что Cloud Run распределяет ресурсы для обеспечения эффективной работы контейнеров.
  2. Политика параллелизма Cloud Run Jobs:

    • В Cloud Run Jobs есть две настройки параллелизма: «Запускать столько задач одновременно, сколько возможно» и «Ограничить количество параллельных задач». Если вы не можете установить значение параллелизма выше нуля, это может быть связано с вашими выбранными параметрами памяти и ЦП.

Почему задачи обрабатываются последовательно, несмотря на настройку параллелизма?

  1. Параметры конфигурации:

    • Если ваши задания обрабатываются последовательно, это может указывать на то, что ресурсы для обеспечения параллелизма не выделены корректно или система не может распределить нагрузки между задачами из-за ограничений ресурсов.
  2. Зависимости данных:

    • Необходимость синхронизации может привести к последовательной обработке, если одни задачи зависят от результатов других. Убедитесь, что каждая задача независима, и если они должны загружать данные или использовать общие ресурсы, это может ограничивать параллелизм.
  3. Региональные ограничения или доступность ресурсов:

    • Доступность ресурсов может варьироваться в зависимости от региона. Это может привести к тому, что задачи не могут быть выполнены параллельно из-за нехватки ресурсов в выбранном регионе.

Ошибки при установке ограничений параллелизма

Если при попытке установить значение параллелизма больше нуля возникает ошибка, это говорит о том, что недостаточно ЦП или памяти для вашей конфигурации. Проверьте свои запросы ресурсов и попытайтесь изменить их, чтобы соответствовать требованиям, указанным Google Cloud.

Заключение

Для успешной реализации параллелизма задач в Google Cloud Run Jobs, вам необходимо:

  • Проверить соответствие требований к ресурсам для выбранного вами региона.
  • Убедиться, что задачи действительно независимы и могут выполняться параллельно.
  • Изменить конфигурации ресурсов (ЦП и память) для соответствия установленным требованиям.

Если возникнут дополнительные сложности, воспользуйтесь официальной документацией Google Cloud Run или обратитесь в службу поддержки для получения более детализированной информации.

Оцените материал
Добавить комментарий

Капча загружается...