일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spark SQL
- KDT_TIL
- 빅데이터
- DataFrame Hint
- off heap memory
- backfill
- Spark
- Kubernetes
- CI/CD
- 데이터 파이프라인
- Airflow
- etl
- Spark Partitioning
- Speculative Execution
- SQL
- Dag
- disk spill
- AQE
- k8s
- mysql
- colab
- topic
- Docker
- Kafka
- spark executor memory
- Spark 실습
- aws
- Salting
- redshift
- Spark Caching
- Today
- Total
목록전체 글 (67)
JUST DO IT!
📚 KDT WEEK 12 DAY 3 TIL Dag Dependencies Explicit Trigger Reactive Trigger(Sensor) 다른 Operator Trigger rule Dag Dependencies는 DAG끼리 의존성을 가져 task 실행 순서 등을 정의하는 것이다. Airflow에서는 Dag Dependencies를 설정하는 방법에 크게 두 가지로 나뉜다. 예를 들어 DAG A > DAG B의 순서를 가질 경우, 1. Explicit trigger TriggerDagOperator를 DAG A에 두어, DAG A가 명시적으로 DAG B를 트리거 2. Reactive trigger ExternalTaskSensor를 DAG B를 두어, DAG B가 DAG A의 테스크가 끝나기를 ..
📐 Airflow에서 Jinja Template 사용하기 Jinja Template를 사용하면 Airflow의 Variables나 execution_date 등을 코드 내에서 쉽게 사용하기 좋다. Jinja Template을 지원하는 Operator의 Parameter에서만 사용 가능하다. BashOperator에서는 bash_command에서 Jinja Template를 사용할 수 있다. 아래는 그 예시이다. # BashOperator를 사용하여 템플릿 작업 정의 task1 = BashOperator( task_id='task1', bash_command='echo "{{ ds }}"', # ds로 execution_date 나타냄 dag=dag ) # 동적 매개변수가 있는 다른 템플릿 작업 정의 ta..
📚 KDT WEEK 12 DAY 2 TIL Airflow API 사용하기 사용하기 전에 먼저 Airflow API를 사용하기 위해 airflow.cfg 변경이 조금 필요하다. airflow.cfg의 api 섹션에서 auth_backend의 값을 아래와 같이 변경해야한다. [api] auth_backend = airflow.api.auth.backend.basic_auth basic_auth는 airflow api를 사용하기 위해 사용자의 아이디와 비밀번호로 인증하는 방식이다. 이 설정이 되어있는지 확인하고 싶다면 터미널에 다음의 명령어를 입력해서 확인할 수 있다. (docker) docker exec -it airflow-scheduler airflow config get-value api auth_ba..
📚 KDT WEEK 12 DAY 1 TIL Airflow에서 Slack 알림 처리하기 🟥 Slack 알림 처리하기 1. Slack API 페이지에서 알림받을 채널 설정하기 먼저, Slack API 페이지에 접속한다. https://api.slack.com/messaging/webhooks Sending messages using Incoming Webhooks Creating an Incoming Webhook gives you a unique URL to which you send a JSON payload with the message text and some options. api.slack.com 오른쪽 상단의 Your Apps를 누르고, 새로운 앱을 만든다. 첫 번째 옵션(From scratch..
📚 KDT WEEK 11 DAY 5 TIL Docker를 사용하는 이유 - 서버 관리의 어려움 Docker Container를 관리하는 방법 - Container Orchestration K8s 🟥 서버 관리의 어려움 서버의 수가 많아지고 다양한 문제가 발생했을 때 문제를 해결하는 방법 1. Infrastructure As Code 대화형 명령이 아닌 자동화된 스크립트로 해결하고 다수의 서버에 명령을 대신 실행 DevOps 엔지니어가 꼭 알아야하는 기술 중 하나 하지만 배우기 어렵고, 소프트웨어 충돌 문제에는 크게 도움이 되지 않는다. ex. Chef, Puppet, Ansible, Terraform... 2. Virtual Machine 소프트웨어 충돌 해결을 위해 한 서버에 다수의 VM을 올려 서비스..
📚 KDT WEEK 11 DAY 4 TIL Docker-compose 실습 1 - Docker-compose 파일이 없을 때 실습 2 - Docker-compose 파일이 있을 때 🟥 Docker-compose docker-compose.yaml : 다수의 도커 컨테이너를 관리하기 위한 환경설정 파일 개별 Container를 따로 관리하는 것보다 훨씬 더 생산성이 높다. 파일에 각 컨테이너별로 이름과 포트포워딩, 도커 볼륨, 환경과 네트워크 구성 등 한번에 기술해뒀다고 생각하면 편하다. 따라서 한마디로 여러 개의 도커 컨테이너로 구성된 하나의 앱을 구성할 때에는 굉장히 편리한 파일이다. 그 부분을 실습으로 직접 비교해보겠다. docker volume도 기술되어 있다. 더보기 이전 글에서 배웠던 내용을 조..
📚 KDT WEEK 11 DAY 3 TIL Docker Volume 🟥 Docker Volume Docker Container가 실행되었다가 중단되는 것을 대비해서 데이터를 보관해두는 기능 Docker Container내의 가상 파일 시스템과 호스트 시스템의 파일 시스템을 맵핑(마운트)하여 사용한다. 다시 말해, Container와 Host 시스템이 특정 폴더를 공유하여 Container가 사라지더라도 데이터를 남게하는 것이다. ⚙️ 방법 docker run -v /home/USER/logs:/var/lib/airflow/logs 호스트 파일 시스템 Path : Container 파일 시스템 Path 방식으로 직접 마운트 docker run -v /var/lib/mysql/data 영구적으로 유지하고 싶..
📚 KDT WEEK 11 DAY 2 TIL CI/CD Git Github Actions Actions 기능을 사용한 Python CI/CD 구현 🟥 CI/CD 소프트웨어 빌드 : 소프트웨어를 최종적으로 출시하기 위한 형태로 만드는 것 Continuous Intergration(CI) : 개발자가 코드를 고칠 때마다 테스트를 돌려봄으로써 안정성을 증대시킴 Continuous Delivery(CD) : 성공한 빌드의 프로덕션 릴리스 (자동화) 코드의 변경 ➡️ Code Commit ➡️ CI(테스트 수행) ➡️ CD(소프트웨어 배포)가 반복되는 구조 🟦 Git 분산환경을 지원하는 소스 버전 컨트롤 시스템 SVN/CVS(다른 소프트웨어 버전 관리 시스템)에 비해 현저하게 빠르지만 사용법은 훨씬 더 복잡하다. ..
📚 KDT WEEK 11 DAY 1 TIL Docker 실습 리눅스 우분투 MySQL Airflow 측면에서 바라보는 Docker 더보기 Airflow 운영상의 어려움 DAG의 수가 많아지면 데이터 품질이나 데이터 리니지 이슈 등 외에도 다른도 발생하는데, DAG 라이브러리 충돌, Worker부족, Worker 서버들의 관리와 활용도 이슈 등이 발생할 수 있다. 이런 이슈들을 해결하기 위해 사용하는 방법으로, Docker와 K8s를 많이 사용한다. 태스크나 DAG 코드를 Docker Image로 만들어서 Docker Container 형태로 실행 라이브러리와 모듈 충돌 방지 개발 환경과 프로덕션 환경을 동일하게 유지 가능 Airflow Worker를 K8s(공용 서버 클러스터)에서 필요한 대로 동적으로 ..
📚 KDT WEEK 10 DAY 4 TIL MySQL ➡️ Redshift Airflow ETL 구현 사전작업 ETL 코드 Backfill 구동 🟥 MySQL(OLTP)에서 Redshift(OLAP)로 Airflow ETL 구현해보기 프로덕션 데이터베이스(MySQL)에서 데이터 웨어하우스(Redshift)로 데이터를 전송하는 ETL을 Airflow로 구현해보자. 🛠️ 사전 작업 1. 권한 설정 먼저, 서로간의 권한 설정이 사전에 필요하다. Airflow DAG에서 S3 접근 권한 : AWS IAM User(S3 버킷 읽기, 쓰기 권한) 생성해서 access key, secret key 받기 https://sunhokimdev.tistory.com/34 > Snowflake 실습 > Snowflake에서 ..