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

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

작성자 없음

작성자 정보가 삭제된 글입니다.

Airflow 마스터 클래스

Airflow library 설치

docker container network 관련 질문

작성

·

36

·

수정됨

0

안녕하세요 강사님 강의 잘 보고 있습니다.

spark 관련된 질문을 드려도 될까요..?

도커에 spark 컨테이너를 띄워서 airflow의 bash operator로 spark-submit을 해보려 하는데 로그가 다음과 같이 나오면서 spark-submit이 안됩니다.

image.png

compose 파일도 network 설정을 다시했고,

docker network inspect 로 확인해보니 잘 연결된 것이 확인됐습니다.

spark submit도 master container 내부에서 잘 실행이되는 상황입니다.

shell 파일을 이런식으로 작성한다고 해서 airflow dags로 spark-submit을 할 수 있는건 아닌가요 ?

#!/bin/bash

script=$1
echo "${script}"
echo "start spark submit with bash operator"

spark-submit \
    --master spark://spark-master:7077 \
    ${script}

답변 3

0

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

안녕하세요 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도 사용해서 테스트해보시는 것을 보니 실력이 금방 느시겠네요. 화이팅입니다!

기존 이미지에

필요한 패키지랑 dockerfile 새로 작성해서 도커파일로 빌드했습니다..!

답변감사합니다 ㅎㅎ

spark provider 버전을 못찾고 헤메다가 컨테이너안에 적혀있는거 보고 맞추어서 설치했습니다(airflow info)

0

log 보면서 dockerfile 수정해서 해결했습니다..

airflow 버전에 맞는 패키지 받으니 해결됐어요

0

안녕하세요, 인프런 AI 인턴입니다.

brianbok97님, 도커 컨테이너를 사용하여 Airflow의 BashOperator로 Spark 작업을 실행하시려는 상황이네요. Spark의 spark-submit 명령어를 사용할 때 컨테이너 내에서 명령이 제대로 작동하지 않는 경우는 일반적으로 두 가지 이슈로 귀결될 수 있습니다: 환경 설정 문제 또는 파일 경로 문제입니다.

해당 문제를 해결하기 위한 몇 가지 체크포인트를 제시해 드리겠습니다:

  1. 환경 변수 확인: spark-submit 명령이 제대로 인식되지 않는 경우는 컨테이너 내에서 PATH나 Spark 관련 환경 변수가 제대로 설정되지 않았을 수도 있습니다. Dockerfile이나 컨테이너 설정 파일을 다시 확인하여 Spark가 설치된 경로가 PATH에 포함되었는지 확인해 보세요.

  2. 파일 경로 문제: sparktest.sh 스크립트가 실행될 때, 경로나 파일이 잘못 지정되었을 수 있습니다. 특히, Docker 컨테이너 내의 파일 시스템 경로 설정을 잘못한 경우입니다. 컨테이너 내부에서 스크립트 파일이 올바르게 위치해 있는지 확인해 보세요.

  3. 네트워크 설정 확인: Docker Compose에서 네트워크 설정이 올바르게 설정되었는지 확인해야 합니다. 특히, Spark Master와 Worker가 같은 네트워크에서 통신 가능한지 확인하세요.

  4. 로그 파일 분석: 오류 로그에서 추가적인 힌트를 얻을 수 있을지도 모릅니다. 구체적인 오류 메시지를 확인해 보시고, 환경 변수가 정확하게 설정되었는지 확인하세요.

만약, 여전히 해결되지 않거나 명확하지 않다면, 유사한 문제를 다룬 답변들을 확인하시거나 추가적인 정보를 제공해 주시면 더 도움이 될 수 있습니다.

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

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기