본문 바로가기
728x90

전체 글313

[Airflow] KubernetesPodOperator 사용법 정리 1. KubernetesPodOperator란?Kubernetes 위에 정의한 자원과 빌드한 이미지를 Pod를 생성해 실행 시킬 수 있는 Airflow OperatorCeleryExecutor, KubernetesExecutor 모두 가능하다(kubernetes cluster만 있다면)2. Pod 설정 항목private image 저장소 URLetl_image_url = "이미지 저장소 URL"# task에 아래와 같이 사용image=etl_image_url, # task 내 image property에 private image repository url을 입력 image pull secretspod에 배포할 이미지를 가져올 때 secret 지정from kubernet.. 2024. 4. 27.
[Airflow] DAG Parsing, DAG Processor 정리 + import와 parsing error 이슈 정리 Airflow DAG Parsingscheduler에 dag_processor라는것이 포함되어 있고, 이것이 dag를 parsing하는 역할을 해줌 1. 이슈 정리Airflow on k8s 이전을 위해 DAG를 개발계의 k8s에 gitsync를 시켜둔 상황import error가 나와 확인 해보니 version up에 따른 method 명칭 변경따라서 명칭을 변경하거나 사용하지 않은 library는 import문에서 제거아무리 기다려도 변경사항 반영이 안된 채로 계속 import에러가 잔류실제 코드는 gitsync를 통해 동기화 됐고, 컨테이너에 들어가서 확인해봐도 동기화 된 상태2. 원인airflow dag 내부에 운영계에 있는 RDB, Redshift와 connect.. 2024. 4. 27.
[Airflow] Airflow 암호화 fernet key 정리 Airflow Metastore를 이관하면서 암호화된 정보를 이관될 metastore에 어떻게 적용하는지, 암호화된 값은 어떻게 확인하는지 정리해봤습니다.1. 정의대칭형 암호화에서 사용되는 키Python 암호화 라이브러리인 cryptography 패키지에서 제공하는 대칭키 암호화 방식 중 하나128비트(16바이트) 또는 256비트(32바이트)의 임의의 바이트 시퀀스로 구성됩니다. 이 키를 사용하여 데이터를 암호화하고 복호화할 수 있습니다. Fernet은 블록 암호 기술 중 하나인 AES를 기반으로 합니다.Fernet은 base64 인코딩을 사용하여 키를 인코딩하고 디코딩Fernet은 키를 생성할 때 32바이트(256비트)의 임의의 바이트 시퀀스를 사용합니다. 이 바이트 시퀀스는 base6.. 2024. 4. 27.
[Airflow] Metastore version, RDBMS 종류에 따른 차이 정리 최근에 Airflow Metastore에 있는 데이터 이관을 하면서 Metastore 이관 관점에서 Metastore에 관련된 테이블, 컬럼 정보들을 정리해봤습니다.1. Airflow version별 metastore의 구성 차이2.1.3(PostgreSQL)1) 테이블 수28개 테이블ab_permissionab_permission_viewab_permission_view_roleab_register_userab_userab_user_roleab_view_menualemberic_versionconnectiondagdag_codedag_pickledag_rundag_tagimport_errorjoblogrendered_task_instance_fieldssens.. 2024. 4. 27.
[Docker] 도커 볼륨 정리, Docker, Docker-compose적용 컨테이너는 삭제가 될 때 자체 파일 시스템이 사라지게 되는 특성 때문에, 데이터가 다 사라지게 됩니다. 따라서 볼륨을 마운트해서 이와 같은 문제를 해결해야 합니다. 1. 볼륨이란? 볼륨이란 호스트 머신의 폴더(로컬 컴퓨터 폴더) - 저장 공간 자체 도커가 인식하는 호스트 머신 볼륨은 도커 컨테이너 내부의 폴더에 매핑 2. 볼륨이 필요한 이유 볼륨의 가지는 의미는 컨테이너 내부 폴더와 컨테이너 외부 폴더를 연결하는 것 → 로컬폴더와 내부 폴더는 격리되어 있으나 볼륨을 이용해 연결이 가능하도록 만들 수 있다는 의미 3. 볼륨 종류 1) 익명 볼륨 익명 볼륨이란 컨테이너가 존재하는 동안에만 실제로 존재하는 볼륨을 의미 2) 명명 볼륨 명명 볼륨이란 컨테이너가 컨테이너가 종료된 후에도 볼륨이 유지가 되는 것을 .. 2024. 3. 6.
[Kafka] ubuntu 20.04 lts 위의 docker-compose로 kafka + zookeeper + CMAK 구성하기 이번 포스트에는 개발할 때 사용하기 위해 도커 컴포즈로 빠르고 간단하게 kafka broker와 CMAK() zookeeper를 컨테이너로 띄워보도록 하겠습니다. 1. EC2 생성 t2.medium 스펙(2vCore, 4GB mem)으로 ubuntu 20.04 lts 를 생성합니다. 편하게 접근하기위해 public ip도 부여받습니다.(테스트용) 2. docker 설치 + docker-compose 설치 1) docker 설치 // apt 인덱스 업데이트 $ sudo apt-get update // repository over HTTPS를 사용하기 위한 패키지 설치 $ sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent.. 2024. 3. 5.
[NoSQL] MongoDB cluster 구성 정리 (feat production, NCP) NCP 서비스 중 MongoDB cluster를 생성해보면서, cluster를 구성할 수 있는 방법들을 정리 해봤습니다. 1. MongoDB Cluster Type 비교 클러스터 타입 이중화 구성 서버 생성 수(대) 구성 Stand-alone X 1 Standalone Single Replica Set O 3~7 Primary, Secondary, Arbiter Sharding O Mongos : 2~5 Config : 3 Shard: 2개 이상(최대 5개) Shard(Replica Set)당 Member: 3~7 Shard(Replica Set)당 Arbiter: 0~1 Mongos, Primary, Secondary, Arbiter 2. Single replica set vs sharding Sing.. 2024. 2. 26.
[Airflow] Trigger Rule을 통해 반드시 실행 시켜야 할 Task 다루기 이번 포스트에는 Daily Batch 중에 비용절감을 위해 수정한 사항에 대해 정리해보겠습니다. 1. 수정이 필요한 이유 Daily Batch 실패 난 건 중에, ML server(GPU 장비 탑재된 EC2)에서 script가 돌아가는 job이 있었습니다. EC2가 켜지는 Task는 성공했지만, script task 단계에서 에러가 났었고, EC2는 stop되지 않았습니다. 물론 후속작업들도 전부 upstream_failed에 의해 failed처리 되었습니다. GPU 장비가 붙은 EC2는 비용이 어마어마하게 많이 나오기 때문에, 몇 시간만 켜져 있더라도 무시 하지 못할 비용이 나오게 됩니다. 따라서 script가 실패하더라도, 반드시 stop되게 DAG를 구성하는 것이 필요했습니다. 2. 기존 코드 기존.. 2024. 2. 26.
[NoSQL] Docker로 EC2에 MongoDB 설치해서 NoSQL booster for mongodb에 연결하기 이번 포스트에는 AWS EC2 ubuntu 20.04 lts에 Docker를 설치하고, mongodb를 설치 및 연결해보겠습니다. NoSQL Booster for MongoDB가 없으신 분은 아래 링크를 통해 다운로드 받아주세요. https://nosqlbooster.com/downloads NoSQLBooster - The Smartest GUI Tool and IDE for MongoDB nosqlbooster.com 1. EC2 생성 EC2 에서 20.04 LTS ubuntu 생성해줍니다. 공식 홈페이지를 찾아보면 MongoDB docker로 띄우기위해 최소로 필요한 서버의 크기는 2vCore 와 4GB mem정도로 나옵니다. 2. Docker 설치 // apt 인덱스 업데이트 $ sudo apt-.. 2024. 2. 25.
728x90