게시글
질문&답변
dag list가 안보이는 이유..
안녕하세요 임주아님 !Dag 이 안 보이는거는 Variable 등록한거와는 관련이 없습니다. 혹시... 도커 내린 후 재기동을 해도 그런가요? 대부분 재기동했더니 잘 보인다고 하시는 경우가 많아서 한번 해보시겠어요?
- 0
- 1
- 26
질문&답변
다중 스케줄러 실행 시 확인 방법 문의
안녕하세요 kyou 님!강의 내용에 없던 scheduler 고가용성 테스트도 해보시고 좋습니다 ^^일단 airflow web에서도 scheduler 현황을 파악할 수 있는 메뉴는 없고, flower 웹에서는 worker 현황만 보이기 때문에 멀티 스케줄러 현황을 보기가 좀 여려울 거에요.우선 kyou 님 질문에 답변 드리자면 DB를 통해서 확인하셔도 되고 CLI 사용하실 때 --allow-multiple --limit 100 옵션을 넣어서 해보실래요? 그럼 scheduler 노드 개수가 나올꺼에요. airflow jobs check --job-type SchedulerJob --allow-multiple --limit 100 일반적으로 scheduler alive 등의 모니터링은 Grafana 를 통해서 쉽게 확인할 수 있습니다. 참고로 airflow는 여러 metric 정보를 내보낼 수 있는 기능이 있는데 statsD 라는 Metric 수집기를 사용해서 Metric 정보를 내보내고 이를 prometheus 에 저장, Grafana dashboard 로 구성하는게 가능합니다.Airflow statsD 전송 --> stateD exporter --> prometheus --> Grafana 이런 흐름으로 metric 정보 전송이 가능한데 exporter, prometheus, Grafana 3개 모두 docker 컨테이너로 띄울 수 있어서 한번 해보시는것도 좋을 것 같아요. 참고로 airflow statsD 로 metric 을 내보내기 위해 파라미터 설정을 몇 가지 해줘야 합니다. 아래 문서를 참고해보세요. https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/metrics.html Grafana Dashboard에 따라서 scheduler의 상태를 그래프로 볼 수 있습니다. 한번 구성해보는것도 나쁘지 않을 것 같아요. ^^그럼 새해복 많이 받으시고 화이팅입니다!
- 0
- 1
- 34
질문&답변
task 실행중 오류
앗 brianbok97님 원인을 찾으셨군요. 제가 답글이 늦었습니다.일단 원인은 trigger rule이 맞습니다. 기본이 all_success이기 때문에 refine_data_ 입장에서는 상위가 get_yesterday_data_ task도 상위 중 하나이므로 이 task도 success 해야 수행됩니다. trigger_rule을 변경하셨다면 one_success 로 바꾸셨을 것 같네요. 정 trigger_rule을 사용하기 꺼려진다면 get_yesterday_data_ task를 수정해서 어제 날짜가 존재한다면 그냥 빠져나오도록 수정하는 것도 괜찮은 방법일 듯 합니다. 그럼 success 로 보이긴 하니깐요. 그리고 spark plugin 도 설치하셨나요? 강의에 없던 내용인데 훌륭하십니다 ^^
- 0
- 3
- 47
질문&답변
plugins 폴더
안녕하세요 가보자고님오랜만에 질문글 올려주셨네요!sql 파일을 담은 디렉토리는 굳이 plugins 아래에 있을 필요는 없습니다.dagspluginssqls이런식으로 sqls 를 $AIRFLOW_HOME 바로 아래에 위치시켜도 좋습니다.어차피 plugins 내 오퍼레이터들이 sqls 를 바라볼 수만 있으면 되니까요. 그리고 sh 파일도 dags, plugins 외 다른 디렉토리에 두어도 상관은 없습니다.airflow worker가 실행할 수 있도록 절대경로로 shell 위치를 지정해주면어느 위치에 있어도 실행은 가능하니 plugins 아래에 있지 않아도 상관은 없습니다. 프로젝트 수행시 아래처럼 폴더 구조를 잡기도 합니다. dags/plugins/|- operators/|- sensors/config/files/|- sqls/|- ingest/ 아 그리고 dags 폴더에는 가급적 dag 파일만 있는게 좋긴합니다. dag 파일이 많다면 dags 폴더 안에 폴더를 두는것도 가능해서, 폴더를 구분해서라도 가급적이면 dag 파일만 있는게 깔끔하죠.. 참고하세요 ^^
- 0
- 1
- 32
질문&답변
docker container network 관련 질문
안녕하세요 brianbok97님!해결되었다니 다행입니다. 그런데 저도 궁금한 게 있는데spark 컨테이너 서비스를 추가로 정의해준거에요? 아니면 기존 airflow 이미지에 pip install apache-airflow-providers-apache-spark 라이브러리 추가 설치해주고 그 이미지로 올리신거에요? 참고로 airflow + spark 조합은 아주 좋은 조합중에 하나입니다. airflow가 직접 파이썬으로 Extract 나 Transform 로직을 airflow worker가 처리하기는 것보다는 Spark에게 처리를 지시하도록 구성하는게 좋습니다. Spark은 병렬 처리가 가능해서 전처리를 훨씬 빠르게 수행할 수도 있어서 컴퓨팅 프레임워크로 Spark을 쓰면 좋습니다. 참고로 위 파이썬 패키지를 설치하면 spark_submit operator도 사용 가능합니다. 하지만 굳이 패키지 설치하기 번거롭다면 spark_submit 오퍼레이터를 사용하지 않아도 됩니다. spark-submit 명령이 수행되도록 하는 오퍼레이터를 직접 만들던가 ssh operator로 spark-submit 명령을 전송하는 것도 좋은 방법입니다. 직접 spark도 사용해서 테스트해보시는 것을 보니 실력이 금방 느시겠네요. 화이팅입니다!
- 0
- 3
- 50
질문&답변
db container connection 에러
안녕하세요 rosy 님!일단 sudo docker ps 명령을 했을 때 postgres_custom 컨테이너가 정상 상태인지 확인해보시구요.음 아마도 srkim 이라고 이전에 만들었던 DB의 내용이 그대로 인식된게 아닌가 합니다.컨테이너 DB에 연결되는 볼륨은 로컬 디렉토리와 연결되는데, 기존에 만들었던 DB볼륨의 내용이 새로 만드신 custom_srkim 과 연결되면서 문제가 될 수도 있어요.우선 volume을 새로 하나 지정하고 만들어 보시겠어요? docker-compose.yaml 파일 하단에 보시면 volume 항목이 정의되어 있습니다.volumes: postgres-db-volume: postgres-custom-db-volume:저기에 새로운 볼륨을 하나 추가하신 다음에 custom_srkim 의 volume 항목 지정시 새로 만든 volume을 연결해보세요. volumes: postgres-db-volume: postgres-custom-db-volume: postgres-custom-srkim-volume:그리고 postgres_custom 컨테이너 서비스 항목에는 아래처럼 지정하시면 됩니다. services: postgres_custom: image: postgres:13 environment: ... volumes: - postgres-custom-srkim-volume:/var/lib/postgresql/data ports: - 5431:5432 networks: network_custom: ipv4_address: 172.28.0.3 이렇게 만든 후 docker compose up 해보시고 접속해보시겠어요?
- 0
- 2
- 20
질문&답변
(맥환경) dag 파일 인식 안됨
안녕하세요 five 님우선 맥북 로컬 디렉토리 airflow/dags 내 dags_bash_operator.py 파일은 그대로 있죠?그러면 docker-compose up 하고 스케줄러가 올라왔을 때 스케줄러 노드로 들어가서 해당 파일이 보이는지 확인해봐야 합니다. docker ps 명령을 통해 스케줄러 노드의 ID를 확인한 후 아래 처럼 명령해주면 스케줄러 노드 안으로 진입할 수 있어요.docker exec -it {스케줄러노드ID} bash 이 상태에서 cd /opt/airflow/dags 로 이동해서 dags_bash_operator.py 파일이 보이는지 확인해보실래요?
- 0
- 2
- 57
질문&답변
db 통신 라이브러리 사용에 궁금한 부분이 있습니다.
안녕하세요 이한희님!먼저 강의를 잘 듣고 추가적인 실습환경도 만들어서 하신다니 잘 하고 계신 듯 합니다!질문주신 라이브러리 같은 경우 테이블 형식의 데이터를 다루는 경우 파이썬에서는 pandas 라이브러리를 많이 사용하는데, pandas 그 자체를 받아서 DB에 넣을 수 있는 라이브러리는 SQLAlchemy만 가능하빈다. psycopg2나 pymysql같은 경우 pandas 데이터프레임 그 자체를 파라미터로 받아서 넣을 수는 없어요. (row 하나씩 분해해서 데이터를 만든 후 insert 하는 방법을 사용해야 함) 저 같은 경우 pandas 데이터프레임을 쉽게 넣고, 조회하고자 할 경우 주로 SQLAlchemy를 사용하고 그 외에는 대체로 psycopg2 같은 라이브러리를 사용하곤 합니다. 참고로 psycopg2, pymysql 같은 경우 각각 postgres, mysql 전용 라이브러리이고, 해당 데이터베이스에 대해서는 SQLAlchemy 보다는 많은 기능을 지원하는 걸로 알아요. 그래서 postgres나 mysql 전용으로 좀 더 전문적으로 다루고자 할 경우 psycopg2, pymysqlDB 범용적으로 좀 더 쉽게 사용하고자 할 경우 SQLAlchemy 를 사용한다고 보심 될 것 같습니다.
- 0
- 1
- 25
질문&답변
Airflow 데이터 처리
안녕하세요 가보자고님!가보자고님께서 말씀하신게 맞습니다. Airflow에 대해서 정확히 이해하신거구요.Airflow에서 파이썬 오퍼레이터로 만들어서 데이터 수집/처리를 진행하면 Worker 프로세스가 그 일을 모두 담당하게 됩니다. 따라서 데이터 양이 증가함에 따라 Worker 프로세스가 해당 Job에 점유당하게 되고 메모리/CPU 등의 자원 부족 현상이 발생할 수도 있죠. 그래서 보통은 ETL, Processing Framework을 따로 두고, Airflow는 ETL, Processing Framework에게 수집/처리를 지시하는 용도로 사용하는게 맞습니다. 질문주신 마지막 부분에 대한 답변은, 소규모 데이터 용량일 때는 Airflow로 직접 처리해도 괜찮을 수도 있습니다. 예를 들어 실습에서 진행했던 서울시 공공데이터를 받는 것은 다른 도구로 처리하기가 애매하기도 하고 소규모 데이터이기 때문에 Airflow 워커가 직접 처리해도 괜찮습니다. 하지만 몇 GB ~ 수십 GB 데이터를 수집하거나 처리하는 경우 반드시 분리해야 합니다. 또 궁금하신 점은 질문 남겨주세요 ^^
- 0
- 2
- 50
질문&답변
스케줄링, dag removed원인 질문입니다.
안녕하세요 백미정님!질문주신 내용의 dag 을 모두 첨부해주실 수 있나요?dag 내용을 봐야 자세히 답변이 가능할 것 같습니다. 그리고 질문 내용 중 궁금한게 있습니다. 첫 번째 질문은 당일 날짜를 11월 17일이라 했을 때, 11월 1일부터 17일까지 일괄 수행하고, 18일부터는 스케줄이 도달함에 따라 돌게끔 하고 싶은거지요?
- 0
- 2
- 78