본문 바로가기

분류 전체보기106

airflow DAG 시각화 및 구조화: Log Grouping, Edge Labels, Task Groups 활용하기 1. Log GroupingLog Grouping을 사용하면 작업 로그를 구조화하여 필요한 정보만 빠르게 확인할 수 있다.import pendulumfrom airflow.decorators import dag, task@dag( schedule="@once", start_date=pendulum.datetime(2024, 8, 10, 3, tz=pendulum.timezone("Asia/Seoul")), catchup=False, max_active_tasks=3, tags=["example", "log grouping"],)def log_group(): @task def task1(): print("::group:: mysql 데이터 추출") .. 2024. 9. 4.
kubernetes에서 private harbor 이미지 pull 하는 방법 CONTAINER-RUNTIME으로 containerd을 사용중이며, private container registry에서 이미지 pull 시 tls 에러가 나는 현상이 발생하여, 이를 해결하는 과정을 정리한다.pod가 어느 노드에서 생성될 지 알 수 없기 때문에 아래 과정은 모든 kubernetes worker에서 진행해야 한다. 1. hosts 파일 수정/etc/hosts에 harbor의 hostname과 ip를 작성한다.10.0.1.117 registry.dd.io2. Docker 인증서 디렉토리에 인증서 추가 `/etc/docker/certs.d/registry.dd.io/` 디렉토리에 harbor 레지스트리 서버의 ca.crt 파일을 추가한다.`/registry.dd.io` 디렉토리는 실제 har.. 2024. 9. 4.
airflow에서 remote spark cluster에 job submit 하기: SparkSubmitOperator airflow에서 SparkSubmitOperator와 task decorator를 사용해 remote spark cluster에 job을 submit하는 방법을 알아본다.spark on yarn 환경으로 spark 3.3.2, hadoop 3이 설치되어 있다. 1. spark binary 다운로드airflow에서 remote spark에 job을 submit 하기 위해서는 airflow가 설치된 서버에 spark-submit 호출이 가능해야 한다.이를 위해 spark binary를 다운받아 spark-submit이 가능하도록 했다.spark 3.3.2, hadoop 3을 사용하고 있어 spark-3.3.2-bin-hadoop3를 다운받았다.## binary 다운로드wget https://archive... 2024. 9. 3.
airflow Variable 1. Variables 개요airflow에서 사용하는 key-value 저장소의 역할을 한다.airflow에서 관리하는 글로벌 환경변수로 여러 DAG에서 공유해야 하는 설정 값을 저장한다.DAG 코드의 변경 없이 런타임에 설정을 수정할 수 있다.airflow 메타 데이터베이스에 저장되기에 너무 많은 Variables는 성능에 영향을 줄 수 있다. 2. Variables과 Fernetairflow는 메타스토어 데이터베이스에 저장된 변수를 암호화하기 위해 Fernet을 사용한다.airflow 설치 시 설정한 fernetKey가 사용되며, fernetKey를 설정하지 않고 airflow를 설치한 경우에는 암호화 되지 않는다.UI 상에서도 is Encrypted의 값이 다른 것을 확인할 수 있다.[ fernet.. 2024. 9. 2.
tekton 설치 1. tekton pipeline 설치kubectl apply -f https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml 2. tekton dashboard 설치kubectl apply -f https://storage.googleapis.com/tekton-releases/dashboard/latest/release-full.yaml 3. tekton trigger, interceptors 설치kubectl apply -f https://storage.googleapis.com/tekton-releases/triggers/latest/release.yaml kubectl apply -f https://storage.goo.. 2024. 8. 29.
argocd 설치 1. argocd namespace를 생성한 후 stable version의 argocd를 설치kubectl create namespace argocdkubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml 2. ingress 설정apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: argocd-server-ingress namespace: argocd annotations: nginx.ingress.kubernetes.io/ssl-passthrough: "true" nginx.ingress.kube.. 2024. 8. 29.
mlflow helm 설치 주의 사항yaml 파일을 보면 대부분의 service type이 LoadBalancer로 되어 있음.on-prem 환경에서 설치 시 metallb가 설치되어 있지 않다면 LoadBalancer를 사용할 수 없으니, NodePort로 service type을 변경해야한다.username / password를 재설정하는 경우에는 pvc를 모두 삭제 후에 재설치 해야한다.pvc에 데이터가 남아있으면 변경되지 않는다. 1. mlflow의 values.yaml 다운로드helm show values oci://registry-1.docker.io/bitnamicharts/mlflow > mlflow-values.yaml  2. values.yaml 수정2-1. 관리자 인증을 비활성화한다. auth: enab.. 2024. 8. 29.
airflow helm 설치 1. helm repo 추가 및 values.yaml 다운로드# helm repo addhelm repo add apache-airflow https://airflow.apache.org # values.yaml 다운로드helm show values apache-airflow/airflow > values.yaml 2. values.yaml 수정2-1. ingress 설정# Ingress configurationingress: # Enable all ingress resources (deprecated - use ingress.web.enabled and ingress.flower.enabled) enabled: false # Configs for the Ingress of the web Servi.. 2024. 8. 29.
kubeflow 1.9.0 설치하기 kubernetes versionv1.29.8kubeflow version1.9.0kustomize versionv5.4.31. kustomize를 설치한다.curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash install kustomize /usr/bin/kustomize 2. manifest git을 clone 한다.git clone https://github.com/kubeflow/manifests.gitcd manifestsgit checkout v1.9-branch 3. apps/jupyter/jupyter-web-app/upstream/base/pa.. 2024. 8. 26.
airflow Dynamic Task Mapping 1. Dynamic Task Mapping 개요런타임에 task의 수와 argument를 동적으로 결정할 수 있다.병렬 처리를 통해 처리 시간을 단축할 수 있다.과도한 병렬 처리로 시스템 부하를 유발할 수 있으므로, 적절한 max_active_tasks 설정이 필요하다.각 task에 다른 argument를 전달할 수 있다.mapreduce의 map과 비슷한 개념이라고 볼 수 있다. 2. 주요 개념2-1. expand입력받은 argument를 각 task에 동적으로 매핑해 여러 task instance를 생성한다.아래는 expand를 사용한 간단한 예제이다.@taskdef return_x(x): return xx_values = return_x.expand(x=[1, 2, 3])  위의 task는 아.. 2024. 8. 20.
반응형