전체 글 373

Docker & K8S - Docker 설치

Docker Desktop vs. Docker Engine https://docs.docker.com/get-docker/ Docker Desktop은 Docker Engine + 여러가지 툴들 Docker 사용을 위한 시스템 사양 체크 2023년 5월 기준 맥 최소 4GB의 메모리 맥 OS 버전 11 혹은 그 이상 윈도우 최소 4GB의 메모리 64비트 윈도우 10이나 윈도우 11 그 이외에 다른 조건이 존재 - 예) Hyper-V와 Container 기능이 활성화되어 있어야함 - 예) WSL 버전 (이는 윈도우 위에서 돌아가는 리눅스 커널) Docker (Desktop) 설치 - Windows https://touchingdata.tistory.com/174 Superset - Docker 설치 Doc..

Docker & K8S 2023.12.18

Docker & K8S - Virtual Machines vs. Docker Containers

Virtual machine과 container의 차이점에 대해 배워보자 Virtual Machine 소개 AWS의 EC2가 대표적인 Virtual Machine (VM) 하드웨어를 추상화하여 한 컴퓨터 위에 가상 컴퓨터를 올리는 것 즉 컴퓨터 하드웨어 단의 추상화 Virtual Machines: 보통 하나의 컴퓨터 위에 다수의 VM을 실행하는 것이 일반적, 이 안에서 소프트웨어가 동작 VM을 생성하고 관리하기 위한 소프트웨어: VMWare, VirtualBox, Hyper-v, … Virtual Machine의 장단점 장점 소프트웨어를 실행하기 위한 독립적이고 분리된 공간을 제공 다수의 소프트웨어를 각 VM단에서 독립적으로 실행가능 단점 각 VM은 자신만의 OS를 필요로 함 (가상 하드웨어위에서 돌기 ..

Docker & K8S 2023.12.18

Docker & K8S - Docker 소개

내가 만든 프로그램이 다른 컴퓨터에서 안 돌아간다면? 설치 과정에서 중요한 파일이 빠짐 사용하는 라이브러리 등의 버전이 안 맞음 가장 골치 아픈 문제! 환경 설정이 안 맞는 것이 존재 내 컴퓨터 환경을 그대로 패키징해서 다른 이에게 줄 수 있다면? Docker Image: 이렇게 독립적으로 완전하게 만들어진 패키지 내가 만든 소프트웨어를 모든 의존성(Dependency)이 포함된 완전한 형태로 패키지화 한 것 Docker Container: 이 Docker Image를 독립된 환경에서 실행한 것 나와 환경이 다른 사람이 Docker Engine만 갖고 있다면 Image를 받아 똑같이 소프트웨어를 실행시킬 수 있습니다. 물론 조금의 compatibility 이슈가 있을 수는 있지만 기본적으로 같은 리눅스 ..

Docker & K8S 2023.12.18

Docker & K8S - Airflow 운영상의 어려움

관리해야하는 DAG의 수가 100개를 넘어간다면? 데이터 품질이나 데이터 리니지 이슈 이외에도 다양한 이슈들이 발생 어떤 이슈들이 있을까? 라이브러리 충돌 Worker의 부족 Worker 서버들의 관리와 활용도 이슈 1. 라이브러리 충돌 라이브러리/모듈의 충돌 이슈가 발생하기 시작함 DAG에 따라 실행에 필요한 라이브러리/모듈이 달라지기 시작 예) Python 버전 이로 인해 DAG 혹은 Task별로 별도의 독립공간을 만들어주는 것이 필요 Docker to the rescue Dag 혹은 Task 코드를 Docker Image로 만들고 이를 독립된 공간(Docker Container)안에서 실행 지금은 Docker 이미지(Image)는 소프트웨어의 실행을 위해 필요한 모든 dependent한 모든 것(의..

Docker & K8S 2023.12.18

Docker & K8S

Airflow 환경 구축을 위한 Docker와 K8S 실습 Docker란 무엇인가? Container란 무엇인가? Airflow에서 Docker와 K8s 실습 Contents 1. Hello World, Docker! 2. 웹 서비스를 Docker로 빌드하고 실행해보기 3. Docker-Compose 사용해보기 4. Container Orchestration이란? 5. Docker로 Airflow Task 실행해보기 6. Airflow를 Docker/K8s로 설정하기 1. Hello World, Docker! Docker가 왜 필요하고 무엇인지 배우고 다양한 실습을 해보자 1. Airflow 운영상의 어려움 2. Docker 소개 3. Virtual Machines vs. Docker Containers..

Docker & K8S 2023.12.18

Airflow - 최종 정리

Airflow란 무엇인가? Airflow는 파이썬으로 작성된 데이터 파이프라인 (ETL) 프레임웍 가장 많이 사용되는 데이터 파이프라인 관리/작성 프레임웍 Airflow에서 데이터 파이프라인을 DAG(Directed Acyclic Graph)라고 부름 Airflow의 장점 데이터 파이프라인을 세밀하게 제어 가능 다양한 데이터 소스와 데이터 웨어하우스를 지원 백필(Backfill)이 쉬움 Airflow 관련 중요 용어/개념 start_date, execution_date, catchup 스케일링 방식 Scale Up vs. Scale Out vs. 클라우드 버전 vs. K8s 사용 데이터 파이프라인 작성시 기억할 점 데이터 파이프라인에 관한 정보를 수집하는 것이 중요 비지니스 오너와 데이터 리니지에 주의할..

Airflow 2023.12.18

Airflow - MySQL 테이블 복사하기 (3) Backfill 실행해보기

Backfill을 커맨드라인에서 실행하는 방법 airflow dags backfill dag_id -s 2018- 07- 01 -e 2018- 08- 01 This assumes the followings: ○ catchUp이 True로 설정되어 있음 ○ execution_date을 사용해서 Incremental update가 구현되어 있음 start_date부터 시작하지만 end_date은 포함하지 않음 파이썬 arr=[0, 1, 2, 3, 4, 5, 6, 7]에서 arr[:5]=[0, 1, 2, 3, 4]인 것과 같은 개념 실행순서는 날짜/시간순은 아니고 랜덤. 만일 날짜순으로 하고 싶다면 DAG default_args의 depends_on_past를 True로 설정 default_args = { '..

Airflow 2023.12.15

Airflow - MySQL 테이블 복사하기 (2)

MySQL_to_Redshift DAG의 Task 구성 SqlToS3Operator MySQL SQL 결과 -> S3 (s3://grepp-data-engineering/{본인ID}-nps) s3://s3_bucket/s3_key 백엔드 DB에 존재하는 데이터를 얻기 위해 SELECT 쿼리를 수행하고 얻은 데이터들을 S3 버킷에 적재하는 태스크입니다. S3ToRedshiftOperator S3 -> Redshift 테이블 (s3://grepp-data-engineering/{본인ID}-nps) -> Redshift (본인스키마.nps) COPY command is used S3의 파일들을 Redshift의 테이블에 COPY하는 태스크입니다. from airflow.providers.amazon.aws.t..

Airflow 2023.12.15

Airflow - MySQL 테이블 복사하기 (1) 전체적인 개요

OLTP 복사 거의 대부분의 경우 데이터 인프라를 처음 구축할 때 MySQL, PostgreSQL 과 같은 프로덕션 데이터베이스를 데이터 웨어하우스로 복사하는 작업을 진행합니다. 이를 OLTP(Online Transaction Processing) 복사라고 하는데 OLTP의 정의는 다음과 같습니다. Online Transaction Processing (OLTP) system. OLTP databases are optimized for fast, real-time CRUD operations (Create, Read, Update, Delete) and are designed to handle many short transactions. These systems are used for day-to-day..

Airflow 2023.12.15