더북(TheBook)

4.4.2 스파크의 스테이지와 태스크

 

지금까지 살펴본 RDD 계보와 의존 관계는 스파크가 실행자에 보낼 세부 태스크를 구성할 때 중요하게 작용한다. 스파크는 셔플링이 발생하는 지점을 기준으로 스파크 잡 하나를 여러 스테이지(stage)로 나눈다. 그림 4-5는 그림 4-4의 RDD 계보를 스테이지 두 개로 나눈 것이다.

▲ 그림 4-5 그림 4-4의 DAG를 스테이지 두 개로 나눈 결과

 

1번 스테이지에는 셔플링으로 이어지는 변환 연산들, 즉 parallelize, map, reduceByKey 변환 연산들이 포함된다. 1번 스테이지 결과는 중간 파일의 형태로 실행자 머신의 로컬 디스크에 저장된다. 2번 스테이지에서는 이 중간 파일의 데이터를 적절한 파티션으로 읽어 들인 후 두 번째 map 변환 연산자부터 마지막 collect 연산까지 실행한다.

스파크는 각 스테이지와 파티션별로 태스크를 생성해 실행자에 전달한다. 스테이지가 셔플링으로 끝나는 경우 이 단계의 태스크를 셔플-맵(shuffle-map) 태스크라고 한다. 스테이지의 모든 태스크가 완료되면 드라이버는 다음 스테이지의 태스크를 생성하고 실행자에 전달한다. 이 과정은 마지막 스테이지(이 예제에서는 2번 스테이지) 결과를 드라이버로 반환할 때까지 계속한다. 마지막 스테이지에 생성된 태스크를 결과 태스크(result task)라고 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.