목록Data Engineering (29)
코딜기
Airflow Jinja 템플릿이란?파이썬에서 Jinja 템플릿을 사용하는 것과 비슷하게 Jinja 템플릿을 사용해서 간단하게 데이터를 넘겨줄 수 있습니다.오퍼레이터 파라미터 입력 시 중괄호 2개를 이용하면 Airflow에서 기본적으로 제공하는 변수들을 치환된 값으로 입력할 수 있습니다. (ex: 수행 날짜, DAG_ID)모든 오퍼레이터, 모든 파라미터에 Template 변수 적용이 가능한 것은 아니기 때문에 Airflow 문서에서 어떤 파라미터에 Template 변수 적용 가능한지 확인이 필요합니다.https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/operators/index.html가장 많이 사용하는 Airflow 템플릿 변수dat..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ciRw2G/btsI0ss718U/XeWelUVruEt7TKoGmAgxOK/img.png)
Task Decorator란?파이썬에서 데코레이터를 사용하는 것과 비슷하게 데코레이터를 사용해서 간단하게 Task를 만들 수 있습니다.데코레이터를 사용하면 PythonOperator를 import 할 필요가 없습니다.실행시키는 코드(py_task1 >> py_task2)를 작성할 필요가 없습니다.Task Decorator 사용코드 자체가 간결해진 것을 확인할 수 있습니다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bo84i6/btsI1vCaeAg/b4iTOk4oADsMTk86cxDstk/img.png)
Email Operator란?이메일을 전송하는 오퍼레이터입니다.이메일 전송을 위해 사전 세팅 작업이 필요합니다.구글 메일 서버를 사용하기 때문에 G-mail에서 사전 세팅 작업이 필요합니다.Docker-compose.yaml 파일의 environment 항목 세팅 작업이 필요합니다.G-mail 세팅1. 사용할 G-mail 계정에 로그인을 한 후 G-mail에서 몇 가지 세팅을 해줍니다.G-mail → 설정 → 모든 설정 보기 → 전달 및 POP/IMAP → IMAP 사용 경로로 이동해 줍니다.2. 구글 계정관리에서 몇 가지 추가 세팅을 해줍니다.구글 계정관리 → 보안 → 2단계 인증 → 앱비밀번호 세팅 경로로 이동해 줍니다.※ 발급된 앱 비밀번호 토큰은 꼭 저장해서 잃어버리지 않게 해야 합니다.Docke..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dQQ15k/btsHHtd75IK/EuCnuykkGdxOykLNJ7wBs0/img.png)
Airflow에서 외부 파일을 읽기 위한 docker compose yaml 수정Airflow의 Worker 컨테이너는 기본적으로 외부 파일을 인식할 수 없습니다.컨테이너 안에 파일을 만들어주면 컨테이너 재시작 시 파일이 사라집니다. docker compose yaml 파일의 volume 부분을 수정하여 worker 컨테이너가 외부 파일을 읽을 수 있도록 설정해 줍니다.즉, 로컬의 폴더와 airflow의 폴더를 연동시키는 방식이라고 생각하시면 이해하기 편합니다.docker compose yaml 수정방법은 아래 부분을 로컬의 plugins 경로로 바꿔주면 됩니다.${AIRFLOW_PROJ_DIR:-.}은 도커 초기화한 경로이고, 따로 폴더를 수정 및 생성하지 않았다면 아래와 같이 설정해 주시면 됩니다.※..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b7CRIx/btsHqJH853l/ZMcyYpdGf5qh0MF3TnrUX0/img.png)
AMI(Amazon Machine Image)란?AMI(Amazon Machine Image)는 인스턴스를 생성하기 위한 이미지입니다.기존의 사용했던 인스턴스의 환경(운영 체제(OS), 애플리케이션 서버, 애플리케이션, 구성 설정, 라이브러리 등)을 그대로 이미지로 캡처해서 새로운 인스턴스를 만들 수 있습니다.이를 통해 사용자는 특정 환경이 미리 구성된 인스턴스를 쉽고 빠르게 시작할 수 있습니다.AMI의 용도1. 인스턴스 복제AMI를 사용하면 기존의 사용했던 EC2 인스턴스 환경을 그대로 복제하여 새로운 인스턴스를 생성할 수 있습니다.이는 다양한 환경(개발, 테스트, 프로덕션)에서의 일관된 설정을 유지하는 데 매우 유용합니다.2. 백업 및 복구인스턴스의 현재 상태를 AMI로 캡처하여 백업으로 사용할 수 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wX3hg/btsHpMsfghY/RkPgeyL4JZeV0YQTamvTuk/img.png)
Airflow.cfg란?airflow.cfg는 Airflow의 실행, 스케줄링, 로깅, 보안 및 통합 등 여러 기능을 설정하는 데 사용됩니다.Airflow 설치 시 기본적으로 생성되는 일반 텍스트 기반의 구성 파일로, INI 포맷을 사용하여 다양한 설정을 선언적으로 정의할 수 있습니다.실행 방식, 스케줄링 매개변수, 데이터베이스 접속 정보, 로깅, 메일 설정 등을 수정할 수 있습니다.파일은 여러 섹션으로 구분되어 있으며, 각 섹션은 Airflow의 특정 기능이나 구성 요소에 관한 설정을 담고 있습니다.Airflow 인스턴스를 업그레이드하거나 변경할 때 주의 깊게 관리해야 합니다.실수로 중요한 설정을 변경하거나 잘못 구성하면 Airflow의 성능이 저하되거나 예기치 않은 동작을 할 수 있습니다.주요 섹션과..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bWFwY0/btsHos12Ryc/ijy8ZxkHlk4fAb3AUBMXRk/img.png)
이 포스팅의 과정을 진행하기 전에 EC2 가상환경 구성을 먼저 하시는 것을 추천드립니다.가상 환경에 Airflow 패키지 설치1. Airflow 패키지 설치에 앞서 MySQL 클라이언트를 사용하기 위해 필요한 패키지를 설치해 줍니다.sudo apt install default-libmysqlclient-dev -ysudo apt install python3.8-dev -y2. 설치가 완료되었으면 아래 명령어를 통해 Airflow 패키지 설치를 해줍니다.간단하게 명령어 설명을 하자면, [ ] 안에 들어간 것들이 Airflow에 필요한 패키지들입니다.패키지들을 따로따로 설치하게 되면 사용하는 Airflow의 버전과 Constraints에 맞는 버전이 다르게 설치되어, Airflow가 정상적으로 작동하지 않..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bDdQ66/btsHnqKwoMk/iKN8x5eefrTGR6aEBuKov1/img.png)
EC2의 가상환경자세한 개념은 파이썬 가상환경 설정 게시물에서 확인할 수 있습니다.EC2 가상환경 설치가 필요합니다.EC2에 가상환경 활성화하기아래 명령어를 통해 python용 가상환경을 env라는 디렉터리에 생성해 줍니다.가상환경을 만들 프로젝트 폴더 경로 안에 들어가서 생성해 줘야 작업별로 가상환경을 독립시킬 수 있습니다.이 포스팅에서는 활성화하는 방법을 공유하는 것이 목표이기 때문에 따로 독립시키지 않고 진행하겠습니다.virtualenv env아래 명령어를 통해 가상환경을 활성화 및 비활성화를 할 수 있습니다.가상환경을 설치한 폴더로 이동한 후 진행하셔야 합니다.정상적으로 활성화가 되었다면 사진과 같이 커맨드 라인 맨 앞에 (env) 표시가 생긴 것을 확인할 수 있습니다.# 가상환경 활성화하기sou..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bWg56E/btsHpjXzjxL/jYN1nJ8tLbN5TxVQpU5zo1/img.png)
EC2의 가상환경자세한 개념은 파이썬 가상환경 설정 게시물에서 확인할 수 있습니다.EC2에 가상환경 세팅하기아래 명령어를 통해 virtualenv를 설치한 후 버전을 확인해 주면 정상적으로 설치가 된 것을 확인할 수 있습니다.python3 -m pip install --user virtualenvvirtualenv --version
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bFpkEN/btsHneXJtF5/CdikGyOkvv1c4DZ3S27qNK/img.png)
EC2에 pip 설치하기1. 우선 pip를 설치할 EC2 인스턴스를 생성한 후 SSH로 접속을 해줍니다.2. pip 설치를 해주기 전에 python 세팅을 먼저 해줍니다.3. 아래 명령어를 통해 pip를 설치해 줍니다.sudo apt updatesudo apt install python3-pip -y4. 설치를 하고 pip 버전을 확인해 줍니다.5. 만약 pip 버전이 9.0.x 또는 20.x 이상이 아니라면 업그레이드를 해줘야 합니다.python -m pip install --upgrade pip