#google-cloud-platform #google-cloud-composer #airflow
#google-cloud-platform #google-cloud-composer #воздушный поток
Вопрос:
У меня есть задача в базе данных airflow, для успешного завершения которой требуется 100 ГБ оперативной памяти. У меня есть 3 узла с памятью 50 ГБ каждый в среде Composer. У меня есть 3 рабочих (по одному на каждом узле). Проблема здесь в том, что эта задача выполняется только на одном из рабочих (максимальная память, которую она может использовать, составляет 50 ГБ), поэтому она не выполняется из-за проблем с памятью.
Есть ли способ заставить эту задачу использовать память со всех узлов (150 ГБ)? (Предположим, мы не можем разделить задачу на более мелкие этапы)
Кроме того, в Cloud Composer мы можем создать рабочий диапазон на нескольких узлах? (Если это так, я могу заставить одного рабочего работать на всех трех узлах и использовать 150 ГБ памяти)
Комментарии:
1. «сделать рабочий охват несколькими узлами», вы говорите о распределенных вычислениях, это не так просто, как вы пишете. Вот почему были созданы такие фреймворки, как Hadoop и Spark. Возможно, вы можете вместо этого написать свою работу в потоке данных, поскольку это позволит масштабировать вашу задачу на несколько рабочих и использовать оператор потока данных.
2. как и другие упомянутые, если вы хотите применить грубую силу, вы можете использовать Airflow для запуска одного экземпляра в GCE с достаточным объемом оперативной памяти, выполнить задачу, а затем развернуть экземпляр
Ответ №1:
Если один DAG является достаточно ресурсоемким, чтобы исчерпать ресурсы всего узла Composer, то большее количество узлов не поможет, если только проблема не связана с совместно запланированными рабочими. Таким образом, возможным решением является создание новой среды Cloud Composer с более крупным типом машины, чем текущий тип машины, пожалуйста, обратитесь к общедоступной документации.
Высокая нагрузка на память в любом из узлов GKE приведет к тому, что планировщик Kubernetes удалит модули из узлов в попытке уменьшить эту нагрузку. Хотя в GKE запущено много разных компонентов Airflow, большинство из них, как правило, не используют много памяти, поэтому чаще всего пользователь загружает ресурсоемкую базу данных. Рабочие Airflow запускают эти базы данных, исчерпывают ресурсы, а затем удаляются.
Вы можете проверить это с помощью следующих шагов:
- В облачной консоли перейдите к
Kubernetes Engine
->Workloads
- Нажмите
airflow-worker
и посмотрите вManaged pods
- Если отображаются модули
Evicted
, щелкните каждый удаленный модуль и найдитеThe node was low on resource: memory
сообщение в верхней части окна.
Ответ №2:
Если меньше 128 ГБ, вы можете запустить вычислительный движок, используя различные операторы для вашего делаhttps://airflow.apache.org/docs/stable/howto/operator/gcp/compute.html