웹 서버가 하나의 컴퓨터에서 실행되고 스케줄러가 다른 컴퓨터에서 실행되도록 기류를 설정 중입니다. 두 제품 모두 동일한 MySQL 메타 스토어 데이터베이스를 공유합니다. 두 인스턴스 모두 로그에 오류없이 나타나지만 스케줄러는 웹 UI를 통해 DAG를 수동으로 트리거하여 만든 DAG 실행을 선택하지 않습니다. MYSQL의 dag_run 테이블이 몇 가지 항목을 보여줍니다 기류 스케줄러가 DAG 실행을 선택하지 않음
, 실행 상태에있는 모든 :mysql> select * from dag_run;
+----+--------------------------------+----------------------------+---------+------------------------------------+------------------+----------------+----------+----------------------------+
| id | dag_id | execution_date | state | run_id | external_trigger | conf | end_date | start_date |
+----+--------------------------------+----------------------------+---------+------------------------------------+------------------+----------------+----------+----------------------------+
| 1 | example_bash_operator | 2017-12-14 11:33:08.479040 | running | manual__2017-12-14T11:33:08.479040 | 1 | �� }�. | NULL | 2017-12-14 11:33:09.000000 |
| 2 | example_bash_operator | 2017-12-14 11:38:27.888317 | running | manual__2017-12-14T11:38:27.888317 | 1 | �� }�. | NULL | 2017-12-14 11:38:27.000000 |
| 3 | example_branch_dop_operator_v3 | 2017-12-14 13:47:05.170752 | running | manual__2017-12-14T13:47:05.170752 | 1 | �� }�. | NULL | 2017-12-14 13:47:05.000000 |
| 4 | example_branch_dop_operator_v3 | 2017-12-15 04:26:07.208501 | running | manual__2017-12-15T04:26:07.208501 | 1 | �� }�. | NULL | 2017-12-15 04:26:07.000000 |
| 5 | example_branch_dop_operator_v3 | 2017-12-15 06:12:10.965543 | running | manual__2017-12-15T06:12:10.965543 | 1 | �� }�. | NULL | 2017-12-15 06:12:11.000000 |
| 6 | example_branch_dop_operator_v3 | 2017-12-15 06:28:43.282447 | running | manual__2017-12-15T06:28:43.282447 | 1 | �� }�. | NULL | 2017-12-15 06:28:43.000000 |
+----+--------------------------------+----------------------------+---------+------------------------------------+------------------+----------------+----------+----------------------------+
6 rows in set (0.21 sec)
그러나 다른 컴퓨터에 시동와 같은 MySQL의 DB에 연결 스케줄러는이 DB 이야기에 관심이 없다 실제로 이러한 DAG 실행을 실행하고 작업 인스턴스로 변환합니다.
여기에서 설정에 무엇이 있는지 잘 모릅니다. 따라서 몇 가지 질문이 있습니다.
- $ AIRFLOW_HOME/dags에있는 DAGS 폴더에 채워지는 시간 및 방법은 무엇입니까? 웹 서버가 시작될 때 생각합니다. 그런데 다른 컴퓨터에서 스케줄러를 시작하면 그 컴퓨터의 DAGS 폴더는 어떻게 채워 집니까?
- 현재 웹 서버를 호스팅하는 컴퓨터에서만 공기 흐름 initdb를하고 있으며 스케줄러에서는 수행하지 않습니다. 희망이 맞습니다.
스케줄러에 대한 디버그 로그를 사용하여 누락 된 항목을 표시 할 수있는 로그를 더 많이 표시 할 수 있습니까? 현재 로그에서 보면 로컬 시스템의 DAGS 폴더를보고 DAGS가 없으며 (예제는 아님) config로 하여금 True로 설정된 예제를로드하도록 유도합니다.
는 중요한 생각하지 마하지만 현재 LocalExecutor
어떤 도움이 감사를 사용하고 있습니다.
편집 : 기류 문서와 같이 컴퓨터에서 DAGS 폴더를 동기화해야한다는 것을 알고 있지만 이것이 스케줄러가 위의 경우에 작업을 선택하지 않는 이유인지는 확실하지 않습니다.
나는 airflow.conf 파일에 지정된대로는 $ AIRFLOW_HOME/DAG를 디렉토리로 DAG를 (평 스크립트)를 배포 할 것으로 예상 생각 -
우리는 이것에 대한 문제를 제기했다. 스케줄러 (Scheduler)는 dags 디렉토리를보고이를 집어 들고 dag bag에 추가하는 서비스입니다. 디버그를 켜려면 settings.py 파일을 편집하여 LOGGING_LEVEL을 1logging.DEBUG1로 설정하고 서비스를 다시 시작하십시오. https://github.com/apache/incubator-airflow/blob/master/airflow/settings.py#L88이 예제의 DAG를 무시하고 튜토리얼을 기반으로 만드는 것이 가장 좋습니다. – Davos요점은 if airflow.cfg가 예제를로드한다고하면 Dags 폴더에 자체 생성 된 DAG가없는 경우 스케줄러도 작동해야합니다. – Agraj