Как определить, какая группа DAG / задача вызывает проблемы с памятью узла? - PullRequest
2 голосов
/ 28 мая 2020

Задачи регулярно не работают в наших группах DAG, и после выполнения действий Google по устранению неполадок я определил первопричину выселения памяти из-за нехватки памяти.

Это соответствует тому, что я ' m видя в графе «Использование памяти на узел» на вкладке Composer Мониторинг. Наша машина поддерживает узлы 8 ГБ, а самые большие пики - 16 ГБ.

Снимок экрана с графиком использования памяти на каждый узел, на котором показаны всплески памяти

Где я застрял определяет, какие группы DAG вызывают всплески памяти. (Я предполагаю, что «DAG A» может вызвать всплеск памяти, который привел к удалению «DAG B»). Я хотел бы вернуться к коду, чтобы увидеть, можно ли его оптимизировать, прежде чем увеличивать размер машины.

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

1 Ответ

2 голосов
/ 29 мая 2020

Если вам нужно знать, какая группа DAG работает в каком экземпляре в данный момент времени, можно использовать База данных метаданных воздушного потока . Для этого выполните следующие действия:

  1. Go на страницу GKE и щелкните свой кластер.
  2. На странице кластера щелкните Подключить кнопка вверху страницы (между «Развернуть» и «Дублировать»)
  3. Откроется всплывающее окно с двумя вариантами. Нажмите Запустить в Cloud Shell . После этого экземпляр Cloud Shell будет открыт с помощью команды, как показано ниже. Просто нажмите ввод, чтобы отправить эту команду.

    gcloud container clusters get-credentials <cluter_id> --zone <cluster_zone> --project <project_id>`
    
  4. Затем запустите команду ниже, чтобы развернуть временное MySQL изображение

    kubectl run mysql-cli-tmp-deployment \
    --generator=run-pod/v1 \
    --rm --stdin --tty \
    --image mysql:latest \
    -- \
      bash
    
  5. Выполните команду ниже, чтобы подключиться к вашему экземпляру MySQL

    mysql \
    --user root \
    --host airflow-sqlproxy-service.default
    
  6. Теперь вы можете использовать SHOW DATABASES;, чтобы определить, какая база данных нам нужна. Если вы используете новые версии Composer, имя базы данных будет примерно таким: composer - -airflow- - . Для старых версий имя будет airflow-db . После определения вашей базы данных просто введите команду use <your_database>;

  7. Теперь, если вы запустите SHOW TABLES:, вы найдете много различной информации. Для вашей цели я предлагаю вам запустить select * from job limit 10;. Запустив этот запрос, вы увидите, что в этой таблице содержится много информации о задачах: идентификатор DAG, дата начала, дата окончания, имя хоста (для каждого узла в вашем кластере есть одно имя хоста ) [...]

  8. Наконец, в качестве последнего шага я хотел бы объяснить, как вы можете определить, какое имя хоста связано с каким узлом.

    1. Go на страницу GKE и нажмите Рабочие нагрузки
    2. Нажмите airflow-worker
    3. Прокрутите вниз до Управляемые модули , и вы найдете имена хостов. Если вы нажмете на любой из них, вы сможете увидеть его узел на следующей странице.

С этой информацией вы сможете запускать запросы, чтобы определить, какой DAG в каком экземпляре выполняется в заданное время.

...