일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 데브코스
- Snowflake
- beuatifulsoup
- 코딩 테스트
- Spark
- VPC
- Tableau
- 데이터 엔지니어
- django
- 데이터 시각화
- GCP
- Kafka
- superset
- 팀 프로젝트
- 코테 연습
- 슈퍼셋
- SQL
- PCCP
- AWS
- HTML
- cloud platform
- airflow
- 코딩테스트
- Selenium
- Til
- Today
- Total
주니어 데이터 엔지니어 우솨's 개발일지
데이터 엔지니어링 46일차 TIL 본문
학습내용
Airflow Executor란?
- Executor는 Task들을 관리하고 실행하는 역할을 수행한다
- 병렬 혹은 일렬 실행이나 어느 worker에서 실행할지 등
- 다양한 수의 Executor타입이 존재
- Sequential Executor : 디폴트로 설치되며 Sqlite와 같은 싱글스레드 DB에서만 사용가능
- Local Executor : task들을 Airflow 마스터 노드안에서 실행한다
- Celery Executor : 다수의 Worker 노드가 있는 경우 사용되며 Celery 큐를 사용해 task들을 worker노드로 분산하여 실행한다.
- Kubernetes Executor는 K8s 클러스터를 사용하여 task들을 독립된 환경에서 사용한다.
Airflow 아키텍쳐 : Docker와 K8s를 사용하는 방법
1. Airflow Operator로 KubernetesPodOperator를 사용
- 특정 태스크를 Docker Image로 만들어 K8s에서 실행하는방법
2. Airflow Operator로 DockerOperator를 사용
- 특정 태스크를 Docker Image로 만들어 Docker Container 위에서 실행하는 방법
3. Ariflow Executor로 다음중의 하나를 사용
- KubernetesExecutor : 모든 DAG코드가 Docker Image로 빌드되어 K8s에서 실행됨
- CeleryKubernetesExecutor : Airflow 로드가 전체적으로 큰데 소수의 task만 Isolation을 필요로 하는경우 사용하며 CeleryExecutor와 KubernetesExecutor를 동시에 사용하는 방법을 제공해주는 Executor이다
- LocalKubernetesExecutor : LocalExecutor와 KubernetesExecutor를 동시에 사용하는 방법을 제공해주는 Executor이다
하이레벨 Docker 사용 프로세스
- 먼저 대상 소프트웨어를 선택
- 다수의 컴포넌트로 구성되는 소프트웨어라면 각각이 Docker Iamge로 만들어져야할 수도 있다.
- 이를 Docker Image로 빌드한다(Dockerization)
- Dockerfile이란 텍스트파일로 세부 정보를 기술 : 해당 소프트웨어를 이미지로 바꾸기 위한 Docker에게 주는 명령어들을 포함한다.
- Docker Iamge : 하나의 Docker Container안에서 실행된다 : Dockerfile을 기준으로 만들어지며 소프트웨어를 실행하기위해 필요한 모든 것을 포함한다.
Docker Image의 구성요소
- 기본OS(ex. 우분투, 데비안)와 같은 소프트웨어의 실행환경
- 소프트웨어 자체(코드)
- 소프트웨어가 필요로하는 라이브러리
- 파일 시스템 스냅샷 : 스택화된 형태로 구현
- 환경 설정 변수 : 빌드할 때 변수와 실행 때 변수 두가지가 존재
- 메타 데이터 : 이미지 자체에 대한 정보(버전, 작성자 ,설명 등)
이러한 정보와 설치 관련 실행 순서등이 Dockerfile에 기술된다.
도커 이미지 생성
도커 이미지 확인
Docker Hub
- Docker Registry : Docker Image들의 보관소
- On-perm registry와 Cloud registry가 존재
- 여기에 등록을 하면 회사내 혹은 퍼블릭하게 이미지를 공유할 수 있다.
- Teams & Organizations
- Public과 Private Repo 제공
- Official Images
- Github와 연동을 통한 Automated Build제공
도커 허브에 레포 생성
Dockerfile의 생성
FROM node:alpine
COPY ./app
WORKDIR /app
CMD node app.js
Dockerfile 사용가능 기타 키워드
- ARG : Docker Image를 만들 때 사용되는 변수지정, 최종이미지에는 들어가지 않는다
- ENV : 컨테이너가 실행될 때 사용되는 환경변수, 최종이미지에 저장됨
- USER : 컨테이너를 실행할 때 사용할 유저 ID
- EXPOSE : 서비스 사용 포트번호
- RUN : 빌드시 실행되어야하는 명령들이 지정됨(Docker build)
- RUN apt-get update && apt-get install -y curl
CMD vs ENTRYPOINT
- Container가 시작할 때 실행되어야 하는 명령어를 지정하는데 사용한다(Docker run)
- 굉장히 흡사한 기능을 제공하지만 우선 순위가 있다
- 둘다 한 Dockerfile에서 여러번 실행되면 각각 마지막 것만 사용됨
- ENTRYPOINT가 있으면 CMD값이 파라미터로 실행된다
=> 최대한 CMD만 사용하는게 좋다
'데브코스' 카테고리의 다른 글
데이터 엔지니어링 48일차 TIL (1) | 2024.06.05 |
---|---|
데이터 엔지니어링 47일차 TIL (0) | 2024.06.05 |
데이터 엔지니어링 45일차 TIL (1) | 2024.06.05 |
데이터 엔지니어링 44일차 TIL (1) | 2024.06.05 |
데이터 엔지니어링 43일차 TIL (0) | 2024.06.05 |