Why Docker?

우상욱·2024년 3월 3일
0

Airflow

목록 보기
6/22

QA


  • How to create a real Datapiple?
  • What is a DAG, an Operator?
  • How to execute a Python function?
    데이터 파이프라인에서는 많은 파이썬 함수를 실행하게 됩니다. 그걸 위한 Operator도 별도로 존재합니다.
  • How to execute a Spark Job?

Why docker?


  1. 새로운 도구를 사용하려고 할 때 기존의 방식은
    download -> install -> Error -> debug -> install again -> Error again -> debug again.... -> Success!

  2. Docker는 소프트웨어를 설치하고 실행하게 해줍니다. 설치된 종속성과 사용된 운영체제에 관계 없이. 에러 디버깅 같은 건 이제 더 이상 없습니다.

  3. 응용 프로그램을 설치하려면

  • Dockerfile
    • Python 설치
    • Wget 설치
    • 응용 프로그램 설치
  • Build Docker Image
  • Docker run name of image
  • Docker Container
    • Application is running
    • 구체적으로 말하면, 컨테이너 안에서 어플리케이션이 실행하고 있다고 보면 되고, 의존성은 도커 컨테이너 내에만 존재합니다.
    • Docker container는 기존의 OS와 완전히 격리됩니다.
  1. Docker Compose
  • Define and run multi-container Docker applications
  • 에어플로우는 데이터베이스, 웹서버, 스케줄러가 있는데
  • 이 3개의 컨테이너를 동시에 띄울 수 있게 해줍니다.
  • Websever, Scheduler, DB가 각각 컨테이너를 갖습니다.
  1. Docker compose.yaml
  • 웹서버를 실행하고 싶어, 스케줄러를 실행하고 싶어. DB를 실행하고 싶어.
  • 이 세 개의 컨테이너를 하나의 어플리케이션으로 묶습니다.
  • 기억하셔야할 것들은 이 컨테이너들은 같은 네트워크들을 공유합니다.
  • 각 컨테이너마다 서로 통신이 가능합니다.
######################################################
# AIRFLOW
######################################################

  airflow:
    build: ./docker/airflow # 빌드 도커 이미지
    restart: always # 실패하면 자동 시작
    container_name: airflow
    volumes:
      - ./mnt/airflow/airflow.cfg:/opt/airflow/airflow.cfg # 환경설정 파일 적용
      - ./mnt/airflow/dags:/opt/airflow/dags # 마운트/에어플로에 있는 폴더가 dag
    ports:
      - 8080:8080
    healthcheck:
      test: [ "CMD", "nc", "-z", "airflow", "8080" ]
      timeout: 45s
      interval: 10s
      retries: 10

Docker optimization


  • docker에서 Settings -> Resources를 클릭합니다.
  • 최소 6gb ~ 8gb가 적당합니다.
  • 최신 버전의 Docker와 Docker Compose를 사용하세요
profile
데이터엔지니어

0개의 댓글