아파치 에어플로우는 워커간의 코드를 동기화 하는 기능이 없다.
에어플로우의 워커는 복수개를 설정할 수 있다.
에어플로우 워커가 1개라면 해당 워커에 내가 원하는 DAG 코드를 업데이트 후 DAG를 실행해야 된다.
간단하게 설명하면 다음과 같다.
1. 에어플로우 워커 실행
2. 해당 워커 컨테이너에 원하는 실행할 DAG 코드 업데이트 하기
3. 워커 컨테이너에 넣은 DAG 실행
워커가 2개라고 가정해보자.
워커가 두개라면 어느 워커에 DAG를 업데이트 시켜야될까.
결론은 두 워커 컨테이너 모두에 같은 DAG 파일을 업데이트 해야된다.
두개의 워커 컨테이너 이름을 A 워커, B 워커라고 할 때의 작업은 다음과 같다.
1. 에어플로우 워커 A, 워커 B 실행
2. 실행할 DAG 코드를 워커 A 에 적재
3. 실행할 DAG 코드를 워커 B 에 적재 (워커 A에 업데이트한 코드와 같아야함)
4. 워커 컨테이너에 업데이트한 DAG 실행
문제 해결 방법은 여러가지가 있으나,
나는 다음과 같이 해결했다.
메인 서버에 git-sync 컨테이너를 이용해서 github 레파지토리와 실시간 연동한다.
메인 서버에 내가 실행할 코드를 위의 방식으로 계속 업데이트 시키고,
에어플로우 워커컨테이너의 DAG 볼륨을 메인서버와 마운트한다.
'Data Engineering > Airflow' 카테고리의 다른 글
[Airflow] 비밀번호 입력 없이 sudo 명령어 사용하는 방법 (0) | 2022.12.03 |
---|---|
[Airflow] pip 업데이트 하는 방법 (0) | 2022.12.03 |
[Airflow] Bash Operator로 간단한 echo DAG 만들어보기 (0) | 2022.05.04 |
[Airflow] Bash Operator로 간단한 Sleep Dag 만들어보기 (0) | 2022.05.04 |
[Airflow] Python Operator로 간단한 Dag 만들어보기 (0) | 2022.05.04 |