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

JP님의 프로필 이미지
JP

작성한 질문수

실리콘밸리 엔지니어와 함께하는 Apache Airflow

병렬처리 질문드립니다.

해결된 질문

작성

·

326

1

안녕하세요 선생님 🙂

airflow 실습중에 airflow의 병렬처리에서 메시지 큐가 어떻게 처리되는지 궁금하여 질문드립니다!

  1. celery와 k8s를 병렬처리에 사용함에 있어서 메시지 큐를 별도로 설정하지 않는것 같은데요. 이 둘은 메시지 큐를 알아서 처리해주는건거요?

  2. celery와 k8s를 사용한 병렬 처리방식은 이해못해서 일단은 concurrent 패키지의 ThreadPoolExecutor 사용하여 병렬 처리를 하였습니다. airflow에서 병렬처리시 일반적으로 threadPool을 사용하는지도 궁금합니다. threadPool이 일반적이지 않다면 어떤 방식으로 병렬 처리를 하는지 궁금합니다!

항상 감사합니다! 🙂

답변 2

1

미쿡엔지니어님의 프로필 이미지
미쿡엔지니어
지식공유자

안녕하세요 JP님,

시간 차가 있어서 지금 일어났네요. 기본적으로 스케줄 관리 시스템이라면(여기서는 Airflow겠죠) 메세지 큐가 있습니다. SequentialExecutor, LocalExecutor에는 따로 External Queue를 사용하지는 않지만, CeleryExecutor는 RabbitMQ(이는 Redis로도 변경가능 하죠)를 기본으로 사용하고 있습니다. 이는 Airflow 만들때 Celery를 기반으로 만들었기 때문이죠(Celery에도 Beat를 사용해서 Broker에 넣는 거 아시죠?). KubernetesExecutor 같은 경우는 자체적으로 Distribution을 관리하고 있습니다.

 

또한 Airflow내에서 Concurrency관리를 하는데, DAG Level에서는 concurrency 파라미터를 사용할 수 있고, Task level, Worker level에서도 이를 각각 task_concurrencyparallelism(https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#parallelism)로 세팅하실 수 있습니다. Pool concurrency로 https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/pools.html를 보시면 세팅하실 수 있습니다.

 

어디서 어떻게 병렬처리를 할 것인지는 그 Use case가 다 달라서 딱히 어떤 식으로 사용하시라는 말씀은 드릴 수 없겠네요. concurrency 패키지 사용하는 방법도 그 용도가 맞다면 틀린 것이 아닙니다 ㅎㅎㅎ

 

퍼포먼스를 올리시고 싶다면 https://airflow.apache.org/docs/apache-airflow/1.10.9/faq.html#how-can-my-airflow-dag-run-faster 보시면 쉽게 도움이 될 듯합니다.

 

도움이 되었길 바라겠습니다.

 

JP님의 프로필 이미지
JP
질문자

선생님 바쁘실텐데 아침에 답글 달아주셔서 감사합니다! 😀

Celery의 Beat에 대해서는 잘 모르고 있었는데 검색해보고 기능하나 배워갑니다!

감사합니다!! 행복한 주말 되세요!! 😁

0

JP님의 프로필 이미지
JP
질문자

JP님의 프로필 이미지
JP

작성한 질문수

질문하기