AWS Ubuntu EC2 Airflow 환경 구축
생성한 EC2 인스턴스 정보는 다음과 같다. Airflow와 Docker는 결코 가벼운 서비스가 아니기 때문에 메모리가 6~8GB 정도는 돼야 정상적으로 작동하기 때문에 여유롭게 t3.large를 사용하였다.
- OS : Ubuntu Server 24.04 LTS
- instance : t3.large (2 vCPU, 8 GiB Mem)
- (24.10.17 기준)
- 1 hour : $0.104
- 1 day : $2.496
- 1 week : $17.472
docker-compose를 사용한 Airflow 환경 구축 과정
docker-compose 만으로도 Airflow 환경 구축이 가능하다. 그러나 Dockerfile을 활용해 build 하면, 더 유연하게 docker-compose를 활용할 수 있다. 여기서는 파이썬 패키지를 다운로드하기 위한 requirements.txt를 적용하기 위해 Dockerfile을 사용하였지만, 환경 변수와 같은 추가 작업을 Dockerfile에서 진행한다면 휴먼 에러를 줄일 수 있다.
apt, apt-get 최신 버전 유지
sudo apt update
sudo apt-get update
docker 다운로드
sudo apt install docker.io
docker version
docker-compose 최신 버전 다운로드
처음에 sudo apt-get docker-compose로 설치를 했으나 최신 버전이 아닌 구버전이 다운로드되어 airflow 초기화 과정에서 에러가 발생하였다. 최신 버전을 다운로드하려면 아래 코드를 작성하면 된다.
sudo apt install jq
VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | jq .name -r)
DESTINATION=/usr/bin/docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-$(uname -s)-$(uname -m) -o $DESTINATION
sudo chmod 755 $DESTINATION
docker-compose -v
airflow 2.9.3 docker-compose.yaml 다운로드
docker-compose 실행을 위해 airflow 2.9.3의 yaml 파일을 다운로드한다.
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.9.3/docker-compose.yaml'
docker-compose.yaml 수정
- 기본적으로 아래와 같이 주석 처리 되어 있음
# build : .
- 다음과 같이 Dockerfile을 활용하도록 수정
build:
context: .
dockerfile: Dockerfile
Dockerfile 파일 작성
- 받아온 docker-compose.yaml 파일에서 airflow의 버전을 확인 후 그에 맞춰 Dockerfile 작성
FROM apache/airflow:2.9.3
COPY requirements.txt /requirements.txt
RUN pip install --upgrade pip
RUN pip install -r /requirements.txt
requirements.txt 파일 작성
- Airflow에서 사용할 패키지와 버전 작성
boto3==1.26.51
airflow에서 사용할 디렉터리 설정
airflow를 사용하기 위해서는 dags, logs, plugins 디렉터리가 반드시 필요하다. 그 이유는 docker-compose가 실행되면서 로컬(EC2)의 디렉터리(dags, logs, plugins)와 docker-compose의 볼륨이 연동되기 때문이다. 따라서 생성한 dags에 작성한 DAG 파일을 넣어주면, web 상에서 해당 DAG가 적용되는 것을 확인할 수 있을 것이다.
mkdir ./dags ./logs ./plugins
echo -e "AIRFLOW_UID=$(id -u)\nAIRFLOW_GID=0" > .env
docker-compose 빌드
sudo docker-compose build
docker-compose를 활용한 airflow 초기화
sudo docker-compose up airflow-init
airflow 띄우기
sudo docker-compose up -d
웹 접속 및 설치된 패키지 확인
웹 접속
- 접속이 안된다면, 보안 그룹(인바운드 그룹)에 8080 포트를 열어주면 됨
http://<ec2_public_IPv4_addr>:8080
설치된 패키지 확인
- ps 명령어로 현재 작동 중인 container의 id를 확인
sudo docker ps
- exec 명령어로 해당 컨테이너에 접속
- worker, scheduler, webserver 중 하나를 선택해 들어가면 됨
sudo docker exec -it <container_id> sh
- 현재 Airflow에 설치된 파이썬 패키지 확인
(airflow) pip list
Reference
https://velog.io/@cmh2806/Ubuntu-Docker%EB%A1%9C-Airflow-%EC%8B%A4%ED%96%89
https://spidyweb.tistory.com/447
https://dcloud.tistory.com/237
https://eng-sohee.tistory.com/138
https://velog.io/@wonsuk2/Ubuntu%EC%97%90-Docker%EC%84%A4%EC%B9%98
'Data Engineering > Airflow' 카테고리의 다른 글
[Airflow] LocalExecutor Parallelism 개념 및 설정 방법 (0) | 2024.10.14 |
---|---|
[Airflow] Executor 실행 준비 과정 (SchedulerJobRunner._execute()) (0) | 2024.10.10 |
[Airflow] DAG Scheduling과 Execution (2) | 2024.06.09 |
[Airflow] Airflow 기타 기능 정리 (0) | 2024.06.05 |
[Airflow] Airflow 기초 지식 (0) | 2024.06.02 |