Воздушный поток большой стол

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

Теперь, после того, как эта система работала в течение нескольких недель без особых усилий (помимо некоторых тестовых прогонов), я хотел сбросить базу данных и понял, что она огромна.

Это происходит из-за таблицы dag_pickle, в которой воздушный поток создает объект pickle и сохраняет его в базе данных каждую секунду.

Однако ни одна из этих строк рассола в базе данных не связана с dag, поле pickle_id в строке dag пусто:

mysql> select * from dag;
+------------------+-----------+-----------+-----------+----------------------------+--------------+----------------------------+----------------+-----------+---------------------------------------+---------+
| dag_id           | is_paused | is_subdag | is_active | last_scheduler_run         | last_pickled | last_expired               | scheduler_lock | pickle_id | fileloc                               | owners  |
+------------------+-----------+-----------+-----------+----------------------------+--------------+----------------------------+----------------+-----------+---------------------------------------+---------+
| test_dag         |         1 |         0 |         1 | 2017-05-10 11:13:57.987710 | NULL         | 2017-05-10 09:40:19.449429 |           NULL |      NULL | /opt/airflow/dags/test_dag.py         | airflow |
+------------------+-----------+-----------+-----------+----------------------------+--------------+----------------------------+----------------+-----------+---------------------------------------+---------+
1 row in set (0.00 sec)

Проверяя таблицу dag_pickle, мы видим, что каждую секунду создается одна строка:

mysql> select max(created_dttm), count(*), now() from dag_pickle;
+----------------------------+----------+---------------------+
| max(created_dttm)          | count(*) | now()               |
+----------------------------+----------+---------------------+
| 2017-05-10 11:20:26.000000 |  1893572 | 2017-05-10 11:20:26 | 
+----------------------------+----------+---------------------+
1 row in set (13.71 sec)

mysql> select max(created_dttm), count(*), now() from dag_pickle;
+----------------------------+----------+---------------------+
| max(created_dttm)          | count(*) | now()               |
----------------------------+----------+---------------------+
| 2017-05-10 11:20:40.000000 |  1893586 | 2017-05-10 11:20:41 |
+----------------------------+----------+---------------------+
1 row in set (12.55 sec)

mysql> SELECT 1893586-1893572 as delta, TIMEDIFF('2017-05-10 11:20:41','2017-05-10 11:20:26') as time_delta;
+-------+------------+
| delta | time_delta |
+-------+------------+
|    14 | 00:00:15   |
+-------+------------+
1 row in set (0.00 sec)

(Как видите, эта таблица настолько велика, что становится операционным бременем, ее размер составляет сейчас 7,5 ГБ)

Мои вопросы сейчас:

  1. Все ли эти строки засолки используются для чего-либо или я могу их безопасно удалить? (Я полагаю, что последнее, потому что нет ссылки от dag) Есть ли какая-нибудь процедура очистки для удаления неиспользуемых вещей из базы данных?

  2. Это ошибка в моей конфигурации или в потоке воздуха? Могу ли я настроить воздушный поток таким образом, чтобы эти протравленные объекты создавались только тогда, когда они действительно необходимы?

  3. Какой эффект имеет опция конфигурации donot_pickle, могу ли я по-прежнему запускать группу DAG с работника на другом компьютере с CeleryExecutor, если для donot_pickle установлено значение True?

Спасибо!

0 ответов

Другие вопросы по тегам