인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

가보자고님의 프로필 이미지
가보자고

작성한 질문수

Airflow 마스터 클래스

Airflow 데이터 처리

해결된 질문

작성

·

45

0

안녕하세요! Airflow Python 오퍼레이터를 공부하다가 궁금한게 있어 질문드립니다!

Airflow는 Python 기반이기 때문에 코드 내부에서 데이터 수집, 처리 프로그램을 작성할 수 있습니다.

하지만 Airflow는 오케스트레이션 도구입니다. 즉, 데이터 처리를 위한 도구는 아닙니다. 그래서 코드 내에서 저런 데이터 수집, 처리 등 오케스트레이션이 아닌 프로그램을 작성하는것에 대해 지양해야하는것으로 알고 있습니다.

궁금한점은 커스텀 Python 오퍼레이터로 데이터 수집, 처리 프로그램을 만들어서 실행할 수 있습니다. Airflow를 동작하는 서버에서 오케스트레이션이 아닌 데이터 수집, 처리를 위한 프로그램이 작동하는것이 괜찮은지 의문이 듭니다.

 

답변 2

0

김현진님의 프로필 이미지
김현진
지식공유자

안녕하세요 가보자고님!

가보자고님께서 말씀하신게 맞습니다. Airflow에 대해서 정확히 이해하신거구요.

Airflow에서 파이썬 오퍼레이터로 만들어서 데이터 수집/처리를 진행하면 Worker 프로세스가 그 일을 모두 담당하게 됩니다. 따라서 데이터 양이 증가함에 따라 Worker 프로세스가 해당 Job에 점유당하게 되고 메모리/CPU 등의 자원 부족 현상이 발생할 수도 있죠.

 

그래서 보통은 ETL, Processing Framework을 따로 두고, Airflow는 ETL, Processing Framework에게 수집/처리를 지시하는 용도로 사용하는게 맞습니다.

질문주신 마지막 부분에 대한 답변은, 소규모 데이터 용량일 때는 Airflow로 직접 처리해도 괜찮을 수도 있습니다. 예를 들어 실습에서 진행했던 서울시 공공데이터를 받는 것은 다른 도구로 처리하기가 애매하기도 하고 소규모 데이터이기 때문에 Airflow 워커가 직접 처리해도 괜찮습니다.

하지만 몇 GB ~ 수십 GB 데이터를 수집하거나 처리하는 경우 반드시 분리해야 합니다.

 

또 궁금하신 점은 질문 남겨주세요 ^^

0

안녕하세요, 인프런 AI 인턴입니다. 가보자고님!

Airflow에서 데이터 수집 및 처리 코드를 작성하는 것에 대한 질문은, Airflow의 본質과 기능을 이해하는 데 아주 중요합니다.

Airflow는 주로 워크플로우를 관리하고 일정에 따라 태스크를 실행하는 오케스트레이션 도구로 사용되며, CPU 및 메모리 리소스를 많이 소비하는 실제 데이터 처리 작업을 수행하도록 설계되지 않았습니다. 이는 Airflow가 다양한 데이터 소스와 타 시스템을 연결하고 컨트롤하는 데 중점을 두기 때문입니다. 따라서, 개인이 직접 데이터 처리를 Airflow 작업 내에서 하는 것은 오케스트레이션의 목적을 벗어난 것이 될 수 있습니다.

진행하신 작업을 살펴보면, 커스텀 Python 오퍼레이터를 사용하여 데이터를 처리할 수는 있지만, 이 작업은 리소스를 많이 사용하는 경우에는 적절하지 않을 수 있습니다. 주로 Airflow의 오퍼레이터는 다른 데이터 처리 도구(예: Spark, Hadoop, DBMS 등)와 연계하여 데이터를 처리하도록 설계되었습니다.

다음의 관련 답변도 참고하시면 도움이 될 것입니다:

  1. 데이터 엔지니어 업무 초보자가 궁금한 점 질문드립니다.
    이 글에서는 Airflow와 Pandas 조합의 한계와 Airflow의 역할에 대해 상세히 설명하고 있습니다. Airflow의 CPU 및 메모리 사용을 줄이기 위한 최적화 방안도 제시되어 있습니다.

  2. 외부 파이썬 함수 수행하기 관련 질문 드립니다.
    이 답변에서는 Airflow에서 직접 코드 실행의 한계와 이를 극복하기 위해 고려할 수 있는 사항에 대해 논의하고 있습니다.

  3. Airflow를 활용한 데이터 수집에 대한 사례
    Airflow를 활용한 데이터 수집과 관련된 다른 사례와 아이디어를 얻을 수 있습니다.

결론적으로, Airflow를 통해 데이터 수집 및 처리의 모든 작업을 수행하기보다는, 이를 적절히 분배하여 권장된 역할에 맞게 사용하는 것이 효율적입니다. 대량의 데이터 처리 작업은 디디케이티드 데이터 처리 시스템을 통해 수행하고, Airflow는 이를 관리 및 조정하는 데 집중하는 것이 좋습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

가보자고님의 프로필 이미지
가보자고

작성한 질문수

질문하기