에어플로우(Airflow) 설치
- 다음과 같은 명령어로 간단하게 설치를 진행한다.
1 |
|
- 에어플로우는 플라스크(Flask)를 기반으로 웹 서버를 구현한다.
1 |
|
- 데이터베이스를 이니셜라이즈(initialize)한 후 UI를 띄운다.
1 |
|
- 127.0.0.1:8000 으로 접속하면 에어플로우에 접속할 수 있고 로그인 창이 생긴다.
- 유저를 생성한다.
1 |
|
- 예제 DAG를 확인할 수 있다.
에어플로우 CLI
1 |
|
webserver
- 웹 서버를 열어본다.
1 |
|
- 127.0.0.1:8000으로 접속하면 에어플로우에 접속할 수 있고 로그인 창이 생긴다.
users
1 |
|
- 설치할 때 만든
admin user
가 보인다.
scheduler
- 위와 같은 문구가 뜨기 때문에 스케쥴러를 실행시켜 준다.
- 스케쥴러가 없으면 DAG가 업데이터 되지 않고 새로운 테스크가 스케쥴되지 않는다.
1 |
|
- 실행시키면
Warning
사항이 없어진다.
db
1 |
|
dags
1 |
|
- 여기서 나오는 리스트는 UI에 전시되는 것과 동일하다.
example_xcom
이라는 DAG를 파헤쳐본다.
tasks
1 |
|
example_xcom
이라는 DAG 안의 테스크들이 리스팅(Listing)된다.- DAG를 트리거(trigger)하는 방법을 알아볼 것이다.
1 |
|
- 2022년 1월 1일에 실행되게끔 트리거를 설정해본다.
1 |
|
- UI 상에서
queued
가 설정되었음을 확인할 수 있다.
- UI에서도 관리할 수 있다.
- 이 외의 많은 커맨드가 있지만 간단하게 필요한 부분만 알아보았다.
에어플로우 UI
- UI에 대한 사용법과 DAG를 컨트롤하는 방법을 알아볼 것이다.
- DAGs라는 테이블은 현재 에어플로우가 인식하는 데이터 베이스 상에 존재하는 DAG들을 리스팅 해놓은 곳이다.
- 컬럼들을 하나하나 살펴본다.
- 맨 왼쪽의 버튼은 DAG를 켜고 끌 수 있는 스위치이다.
- DAG: DAG명과 태그들을 갖게 된다.
- Owner: DAG를 만든 사람을 나타내는 컬럼이다.
- Runs: 실행중인 DAG의 상태를 나타낸다.
- Queued
- Success
- Running
- Failed
- Schedule: 대부분의 데이터 파이프 라인이 스케쥴을 갖고 있기 때문에 주기를 나타내는 설정을 명시한다.
- Crontab
@daily
나None
- Last Run: 마지막으로 실행된 DAG의 상태이며, 링크가 뜨고 마지막에 돌렸던 DAG의 로그를 보고 모니터링을 할 수 있다.
- Next Run: 다음 실행이 언제 스케쥴링 되었는지 확인할 수 있다.
- Recent Tasks: 방금 전에 실행 된 테스크의 상태를 확인할 수 있다.
- Actions: 행동할 수 있는 버튼이다.
- Link: 마우스를 호버하면 여러가지 링크가 전시된다.
- DAG를 클릭해보면 여러가지 뷰(View)를 볼 수 있다.
- 그래프 뷰(Graph View)는 테스크 간의 의존성을 확인할 때 유용하다.
- 간트 뷰(Gantt View)에서는 각 테스크가 얼마의 시간을 소비하였는지 확인할 수 있다.
- 병렬 처리를 확인할 수 있다.
- 각 작업의 시간을 볼 수 있기 때문에 최적화가 용이하다.
- 그래프 뷰에서 테스크를 클릭하면 모달(modal)이 뜨게 되고 여기에서 테스크를 컨트롤할 수 있다.
- 강제로 실패와 성공을 마크할 수 있고, 로그를 클릭하여 테스크가 뱉어내는 로그를 확인할 수 있다.
에어플로우와 스파크(Spark)
- 에어플로우에 스파크 프로바이더(provider)를 설치해야 한다.
1 |
|
- DAG를 생성한다.
1 |
|
- 하지만 위처럼 사용하면 헤비하니 지양하는 편이 좋다.
- 스파크 서브밋(submit)을 실행해주는 편이 좋다.
- 서브밋만 하고 에어플로우는 지켜보며 실행되는 지만 모니터링하는 것이 좋다.
1 |
|