[Apache Spark] 스파크 애플리케이션 개발하기

연수·2021년 12월 10일
0

spark

목록 보기
20/26

💡 스파크 애플리케이션

스파크 애플리케이션 → 스파크 클러스터 + 사용자 코드

🧣 스칼라 기반 앱

  • 스칼라는 스파크의 '기본' 언어이기 때문에 애플리케이션을 개발하는 가장 적합한 방법으로 볼 수 있다.
  • 스파크 애플리케이션은 두 가지 자바 가상 머신 기반의 빌드 도구인 sbt아파치 메이븐을 이용해 빌드할 수 있다.
  • 스칼라 애플리케이션에 sbt 빌드 환경을 구성하려면 패키지 정보를 관리하기 위해 build.sbt 파일을 정의해야 하는데, build.sbt 파일에 포함되어야 할 핵심 항목은 아래와 같다.
    • 프로젝트 메타데이터 (패키지명, 패키지 버전 정보 등)
    • 라이브러리 의존성을 관리하는 장소
    • 라이브러리에 포함된 의존성 정보
  • 사용자 코드를 작성하고 spark-submit 명령을 사용해 코드를 클러스터에 제출한다.
  • 프로젝트를 설정하고 코드를 작성한 뒤 빌드한다.
    • 'uber-jar', 'fat-jar' → sbt assemble 명령
    • 라이브러리 모두를 target 폴더로 모으기 → sbt package 명령 (JAR 파일을 만들어내지는 않음)

 

🐍 파이썬 애플리케이션

  • PySpqrk 애플리케이션을 작성하는 방법은 일반 파이선 애플리케이션이나 패키지를 작성하는 방법과 유사하다.
  • 애플리케이션을 실행하려면 클러스터에서 스크립트를 실행하기만 하면 된다. (빌드 X)
  • spark-submit—-py-files 인수로 .py, .zip, .egg 파일을 지정하면 애플리케이션과 함께 배포할 수 있다.
  • 코드를 실행하려면 SparkSession을 생성하는 실행 가능한 스크립트 파일을 만들어야 한다.
    • 모든 파이썬 클래스에서 SparkSession 객체를 생성하는 것보다 런타임 환경에서 변수를 생성해 파이썬 클래스에 전달하는 방식을 사용하는 것이 좋다!
  • PySpark를 라이브러리 의존성으로 정의하기 위해 pip 사용
  • pip install pyspark 으로 PySpark 설치 가능

 

🍵 자바 애플리케이션

  • 스칼라와 유사
  • 가장 큰 차이점은 라이브러리 의존성을 지정하는 방법이다.
  • 메이븐을 사용해 라이브러리 의존성을 지정할 때, 스파크 패키지 저장소를 반드시 추가해야 한다. (스파크 관련 라이브러리를 얻기 위함!)
  • 자바 코드를 실행하려면 main 클래스가 필요하다.
  • mvn package 명령으로 패키지를 만들 수 있다.

 

🧪 스파크 애플리케이션 테스트

테스트 코드 개발은 매우매우 중요하다!

🧃 전략적 원칙

  1. 입력 데이터에 대한 유연성
  2. 비즈니스 로직 변경에 대한 유연성
  3. 결과 유연성과 원자성

 

🔮 테스트 구성 전략

  1. SparkSession 관리하기
    • SparkSession을 한 번만 초기화하고 런타임 환경에서 함수와 클래스에 전달하는 방식을 사용하면 테스트 중 SparkSession을 쉽게 교체할 수 있다.
  2. 테스트 코드용 스파크 API 선정하기
    • SQL, DataFrame, Dataset, RDD 등 적합한 API 선정
    • 애플리케이션에 사용할 언어를 선택할 때도 요구 사항에 따라 언어를 선택해야 한다.

 

⭐ 애플리케이션 시작하기

  • spark-submit 명령으로 스파크 잡을 제출할 때 클라이언트 모드와 클러스터 모드 중 하나를 선택해야 한다.
  • 드라이버와 익스큐터 간의 지연 시간을 줄이기 위해 클러스터 모드로 실행할 것을 추천한다.

 

🌽 애플리케이션 환경 설정하기

  • 설정 분류
    • 애플리케이션 속성
    • 런타임 환경
    • 셔플 동작 방식
    • 스파크 UI
    • 압축과 직렬화
    • 메모리 관리
    • 처리 방식
    • 네트워크 설정
    • 스케줄링
    • 동적 할당
    • 보안
    • 암호화
    • 스파크 SQL
    • 스파크 스트리밍
    • SparkR
  • 스파크 시스템 설정 방법
    • SparkConf 객체 사용
    • 자바 시스템 속성
    • 하드코딩된 환경 설정 파일

 

[출처] 스파크 완벽 가이드 (빌 체임버스, 마테이 자하리아 지음)

profile
DCDI

0개의 댓글