안녕하세요.
정보관리기술사를 취득한 이후 지금까지 얻은 지식을 많은 사람들에게 공유하고,
특히 데이터 엔지니어를 희망하고 공부하고 싶은 분 들에게 도움이 되고자 컨텐츠를 제작하고 있습니다.
반갑습니다 ^^
Contact: hjkim_sun@naver.com
강의
수강평
- Airflow 마스터 클래스
- Airflow 마스터 클래스
게시글
질문&답변
8-2 trigger dag run 오류
안녕하세요 Nathan 님 오랜만입니다 ^^우선 캡쳐해주신 내용을 보니 dags_trigger_dag_run_operator 에서 첫 번째 task (start_task) 가 제대로 수행이 안된 것 같습니다. 정상적으로 success 된 걸로 보이나요? 로그로 봤을 때는 첫 번째 Task에 문제가 있어서 Trigger Dag 을 수행하는 두 번째 task가 제대로 수행되지 않은 것 같아요. 제가 수행해봤을 때는 아래처럼 두 번째 Task Details 에 특이사항은 없이 수행됩니다. (사진) 그리고 trigger 된 DAG은 아래처럼 정상 수행되어야 합니다. (사진) 우선 dags_trigger_dag_run_operator의 task 상태들 한번 캡쳐해서 올려주시겠어요? 그리고 코드도 혹시모르니 여기 한번 복붙 해주세요.
- 0
- 2
- 25
질문&답변
airflow rest api
안녕하세요 미요님!혹시나 해서 해봤는데 둘 다 잘 동작했습니다.먼저 첫 번째꺼는 404 에러라 URL 자체를 잘못작성하신 케이스에요.curl -X POST "http://localhost:8080/api/v1/dags/dags_bash_operator/dagRuns/scheduled__2025-03-30T15:00:00+00:00/clear" \ -H "Content-Type: application/json" \ -u "airflow:airflow" \ -d '{ "dry_run": false }'이렇게 Clear할 DagRun의 ID를 적고 /clear로 마치면 됩니다. 두번째 케이스는 기간별 한번에 DAG Clear할 수 있는 API 이고 URL은 잘 작성하신것 같은데 Method를 잘못주신거 아닌가 싶습니다. 저는 아래처럼 작성해서 잘 동작했어요.curl -X POST "http://localhost:8080/api/v1/dags/dags_bash_operator/clearTaskInstances" \ -H "Content-Type: application/json" \ -u "airflow:airflow" \ -d '{ "dry_run": false, "reset_dag_runs": true, "only_failed": false, "only_running": false, "include_subdags": true, "include_parentdag": true, "start_date": "2025-04-01T00:00:00Z", "end_date": "2025-04-05T00:00:00Z" }' 참고로 Airflow 공식 사이트에 API 정리가 잘 돼있습니다.(사진) (사진) 참고해보세요 ^^
- 0
- 2
- 38
질문&답변
강의안 문제
안녕하세요, 박민재님맥북에서 다운로드해보니 잘 보이는데 윈도우에서 다운받아보니 캡쳐해주신것 처럼 보이네요 ㅜㅜ윈도우에서 점검을 안해본 제 불찰입니다. 일단 전체 강의안 다시 올렸어요. 알려주셔서 감사합니다 ^^
- 0
- 3
- 60
질문&답변
airflow.cfg 변경
안녕하세요 kosa 님!실습 환경대로 docker-compose.yaml 이용해서 올리고 있죠?(컨테이너 안으로 들어가서 직접 airflow.cfg 수정하더라도 컨테이너 재기동이 필요한데 재기동 하는 순간 수정한게 사라지므로 의미없습니다) 그럼 변수명을 expose_config 라고 쓰면 안되고 바로 윗 줄 주석되어 있는 부분에 AIRFLOW__WEBSERVER__EXPOSE_CONFIG 라고 되어 있는 보이죠?주석 해제 하시거나 저 이름으로 만들어주시면 됩니다.참고로 docker-compose.yaml 파일에 작성할 때는 AIRFLOW__ 같은 접두사를 붙여서 작성하지만 airlfow.cfg 파일에 들어갈 때는 expose_config 이름으로 들어갑니다. 그리고 airflow 공식문서에 Environment Variable 항목을 보고 변수명 작성해주시면 됩니다.(사진) 그리고 DAG parsing 주기는 dag_dir_list_interval 파라미터로 주는데 이것도AIRFLOW__SCHEDULER__ 를 붙여주셔야 해요.(사진) 그리고 스케줄러를 2개 이상 띄우지 않는다면 그 외 고려할 만한 부분은 없을 것 같네요.답변이 되었을까요?궁금한 건 또 언제든 질문주세요 ^^
- 0
- 1
- 52
질문&답변
>> 가 이해가 잘 안갑니다ㅠㅠ
안녕하세요 김세은님!세은님께서 작성하신걸로 만들게 되면 다른 DAG이 만들어집니다.원래의 task flow에서 t7은 t5와 dependency가 없습니다.그러나 아래처럼 만들면 t5가 끝나야 t4와 t7이 시작되는 구조가 되어 버리는 거죠.t1 >> [t2, t3] >> t4t5 >> [t4, t7] >> t6 >> t8 원래 구조에서 t7은 선행이 없습니다. DAG이 시작되면 t7이 바로 시작될 수 있는 구조에요.세은님이 작성하신 구조처럼 한번 바꿔보시고 DAG Graph 에서 어떻게 변화하는지 직접 한번 보시는게 제일 좋을거에요. 그리고 task flow내 존재하는 task는 한번만 실행되어야 합니다. task를 실행했는데 조금 있다가 또 실행되면 논리적으로 DAG(Directed Acyclic Graph, 일방향 그래프)이 아닌거죠.task flow를 정의할 때 task는 여러 번 나와도 되며 순환되지만 않으면 됩니다. 이것도 세은님이 한번 해보시고 어떤 에러가 발생하는지를 보시는게 가장 좋을 듯 합니다. t1 >> [t2, t3] >> t4t5 >> t4[t4, t7] >> t6 >> t8 >> t5 예를 들어 이렇게 작성하면 순환되는 그래프가 됩니다. 이렇게 작성하시면 에러가 발생해서 DAG parsing에 오류가 발생할거에요.
- 0
- 2
- 42
질문&답변
vsc에서 airflow 자동완성
위에서 얻은 ti 라는 객체는 kwargs['ti'] 에서 얻은 객체인데 kwargs 라는 딕셔너리에서 "ti" key에 해당하는 value 값을 뽑은 것입니다. 우리는 ti key에 무엇이 있는지 알고 있지만, 프로그램 입장에서는 런타임시에 알 수 있으므로 vscode 에서 코드를 개발할 때에는 ti 객체가 어떤 타입인지 알 수 없습니다. 그래서 IDE 에서 자동완성 기능을 제공하지 못하는 것이구요.IDE에서 자동완성 도움을 받으려면 ti객체에 대한 타입을 지정해주면 가능할 것 같습니다.from airflow.models import TaskInstance @task() def xxxx(**kwargs): ti: TaskInstance = kwargs['ti'] 위처럼 ti 객체에 대한 타입 힌트를 주면 IDE 툴에서 ti 변수에 대한 타입을 알 수 있으니 자동완성 기능 도움도 받을 수 있을 듯 합니다.이 문제는 딕셔너리에서 키 값으로 뽑아오는 밸류의 정확한 타입을 런타임시에 알 수 있다는 한계점 때문에 extention으로는 해결이 어려울 것 같아요. 답변이 되었을까요?
- 0
- 1
- 38
질문&답변
airflow 디버깅 관련 문의
안녕하세요 kosa님!단순 문법 에러인 경우에는 vscode에서도 문법 오류 부분을 알려줄거에요.(vscode에서 문법 에러 표시가 안되면 파이썬 인터프리터 설정이 잘못돼있을 가능성이 높습니다) 다만 문법 에러가 아닌 task 연결 실수 등 런타임시에 발견될 수 있는 오류들은 실행해봐야 알 수 있는 부분이긴 합니다. airflow dag test CLI 명령이 있기는 하지만 이것도 현재 실습 환경 상 로컬에서 실행할 수는 없는 명령이라 결국은 DAG을 올리고 실행해봐야 할 수 밖에 없는 구조에요. 고민하고 있는 오류 남겨주시면 로컬에서 확인할 수 있는 오류인지 저도 한번 볼꼐요.
- 0
- 3
- 52
질문&답변
git pull 시 docker 재부팅 질문
안녕하세요 min0님기본적으로 git pull 해서 파일이 들어오면 조금 기다리면 dag이 뜨기는 합니다.기본 파라미터가 5분으로 설정돼있어요 (dag_dir_list_interval 파라미터, 기본값 300초)혹시 더 오래 기다렸는데도 웹에서 DAG이 안 뜨나요?
- 0
- 2
- 40
질문&답변
데이터레이크 구성요소
안녕하세요 totota님 혹시 다른 챕터는 나오는데 그 부분만 안나오나요? 인프런 영상이 검은색으로만 나오고 음성만 나오는 경우는 보통 캡처 프로그램 같은게 실행중일 때 그렇기도 합니다. 혹시 그런 프로그램이 떠있지는 않은지 확인 부탁드려요.(제가 실행해봤을 때는 잘 나옵니다)
- 0
- 2
- 51
질문&답변
안녕하세요 대학생 질문드립니다
안녕하세요 kosa.share05님 대부분의 기술적인 IT 직군들이 그렇겠지만 어떤 사람의 실력을 평가할 때 단순히 지식이 많냐를 평가하기 보다 트러블 슈팅 경험을 위주로 더 많이 봅니다. 특히 요즘같은 시대에는 대용량 시스템 운영하면서 겪었던 문제점과 해결 방법을 보거나 LLMops등 최신 트렌드와 관련된 도구들과의 연계, 접목을 해본 적이 있는지를 많이 보는 듯합니다. 그런데 신입일 경우 사실 이런 경험을 바라지는 않습니다 ^^ 경력직을 뽑는다 할 때 저런 것들을 주로 본다고 이해해주시면 될 것 같구요. (신입에게 기대하는 기대치가 높지 않습니다) 그런데 제가 인사쪽은 잘 모르다보니 데이터 엔지니어로써 신입으로 취직하기 어려운지 아닌지는 잘 모르겠어요. (제가 봤을 때 신입도 뽑기는 하는 것 같습니다만) 그래도 신입이시라 한다면 Python, SQL, OS 와 같은 기본 skill이 있으면 좋을 것 같아요. 회사마다 요구하는 정도가 다 다르겠지만 프로젝트 경험을 통해 CI/CD나 대용량 처리 도구를 경험해보면 좋을 것 같습니다. 요즘 취업 시장이 좋지 않아 참 안타깝습니다. 그래도 희망 잃지 마시고 좋은 결과가 있기를 바랄께요!
- 0
- 2
- 60