[spark] 8. Spark 프로그램 실행 옵션

data_hamster·2023년 7월 15일
0

spark을 얀 위에서 돌린다고 가정


실행환경은 크게 두가지
개발, 테스트, 공부를 위한 환경.
조금 더 인터렉티브함. 명령 하나 실행해보고 결과 보고.
스파크 전용 - 제플린
커맨드라인에서 스파크 사용 가능

프로덕션은 개발이 끝난 코드를
주기적으로 실행해주는 환경
스파크 서밋을 주로 일반적으로 사용
데이터 브릭스를 쓰고 있다면, 코드를 주기적 실행 가능
얀이 아닌 스탠드얼론으로 되어 있따면,
API를 노출하는데, 이를 통해 잡을 실행함.
스탠드얼론을 프로덕션에서 잘 안씀


얀을 가정하고 설명
마스터와 슬레이브로 구성
마스터 얀앱에서 마스터
슬레이브 얀-컨테이너에 해당

스파크는 조금 다름
얀의 애플리케이션 마스터 - 드라이버

얀의 컨테이너 - 엑시큐터

하나의 드라이버가 3개의 엑시큐터를 통해 실행
4개의 서버에서 각가 돌수도 있고, 한대 서버도 되지만 기본은 분산 서버


좀 더 자세히.
드라이버 - 애플리케이션 마스터. 스파크 코드를 총 지휘하는 역할.
모드에 따라 클라이언트, 클러스터 모드 있음. - 얀을 전제로 함.
클러스터 모드는
드라이버가 얀 클러스터 안에서 동작. 얀 클러스터 안에서 컨테이너를 하나 잡아서 거기서 돌게 됨. 애플리케이션 마스터가 됨.
스파크-서밋. 개발이 끝난 코드를 스파크 클러스터 안에서 돌림.

클라이언트 모드
드라이버가 얀 클러스터 밖에서 동작.
노트북, 스파크 쉘. 개발, 학습, 디버깅. 개발중인 코드를 스파크 클러스터 밖에서 돌리는 것.

두개의 실행 모드가 있다는걸 이해. 드라이버를 실행 할 때 다양한 config를 지정하게 되어있음. 몇개 레이어가 있는데 나중에 더 설명
중요한거 몇가지만
지금 내가 실행하려는 스파크 잡을 수행하려는데 몇개의 엑시큐터를 사용할 것인가.
엑시큐터 몇개, CPU 몇개, 메모리는 얼마나 등.
스파크서밋의 파라미터
드라이버 코드 안에선 스파크 컨텍스트를 만들어서 스파크 클러스터와 커뮤니케이션을 함. 커뮤니케이션을 하는 대상은 두가지. 하나는 얀의 리소스 매니저. 스파크에선 이걸 클러스터 매니저라 부름. RM을 통해 필요한 숫자만큼 필요한 사양만큼 엑시큐터를 불러옴. 얀으로 따지만 컨테이너의 태스크로 실행. 그 태스크로 부터 작업 진행여부의 리포트를 받게 됨.
--num-executors
--executor-memory

하나의 엑시큐터는 JVM같음. 트랜스폼, 액션 같은 역할. 이는 나중 챕터에서 소개.
얀에서 엑시큐터는 컨테이너에 해당.


스파크가 돌아가는 RM 레이어가 무엇인지. 스파크 클러스터 옵션.
하나는 로컬. 간단한 JVM을 로컬에서 돌리는 옵션 - 우리가 채택
얀을 채택 - 클라이언트 모드, 클러스터 모드 있음
컨테이너를 별도로 쓴다면, k8s, 메소스
스파크자체인 스탠드 얼론 - 거의 안쓰임

이러한 기능들은 모두 얀을 기준으로 설명함.
실습 환경은 로컬이 됨. [n]이라는 숫자 - 몇개의 CPU를 쓸 것인가? JVM을 몇개 띄워서 각자가 클러스터 역할을 할 것임.


로컬, 얀을 좀 더 살펴본다.
이 세팅으로 스파크 쉘, 파이참IDE, 주피터 노트북 (구글 콜랩, 아나콘다)
n은 쓰레드의 수: 엑시큐터의 수가 됨.
로컬모드는 JVM 하나가 스파크 클러스터처럼 동작. 그 안에 엑시큐터 수는 n값 만큼 결정.
이상적으론 CPU의 숫자에 해당하면 좋음. 엑시큐터가
별을 써줄 수 있는데 이는 내 CPU 최대 쓰레드 만큼 사용


얀은 실행모드가 클라이언트, 클러스터
클라이언트:
드라이버가 (애플리케이션 매니저) 얀 클러스터 밖에 있음. 드라이버가 노트북이 될 수도 있고, 스파크 쉘, 인터렉티브하게 명령 보내고 받고가 가능해짐. 개발, 테스트, 디버깅용.

클러스터:
드라이버가 스파크 클러스터 안,
실제 프로덕션 모드.

요약


로컬은 기본 클라이언트 모드. 스파크 쉘, 파이참 같은 IDE 노트북.
실행 모드에 따라 실행 방식이 달라짐.
얀 역시 실행모드가 클라이언트면 스파크쉘, 노트북
클러스터 모드면 스파크-서밋

우리는 실습 때 로컬, 노트북을 중심으로 사용.

마지막 챕터에선 클라우드에서 스파크 클러스트 실행. 어떻게 모드들을 사용하는지 데모.

profile
반갑습니다 햄스터 좋아합니다

0개의 댓글