익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT 위키
검색
아파치 스파크 스테이지
편집하기
IT 위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
고급
특수 문자
도움말
문단 제목
2단계
3단계
4단계
5단계
형식
넣기
라틴 문자
확장 라틴 문자
IPA 문자
기호
그리스 문자
그리스어 확장
키릴 문자
아랍 문자
아랍어 확장
히브리 문자
뱅골어
타밀어
텔루구어 문자
싱할라 문자
데바나가리어
구자라트 문자
태국어
라오어
크메르어
캐나다 원주민 언어
룬 문자
Á
á
À
à
Â
â
Ä
ä
Ã
ã
Ǎ
ǎ
Ā
ā
Ă
ă
Ą
ą
Å
å
Ć
ć
Ĉ
ĉ
Ç
ç
Č
č
Ċ
ċ
Đ
đ
Ď
ď
É
é
È
è
Ê
ê
Ë
ë
Ě
ě
Ē
ē
Ĕ
ĕ
Ė
ė
Ę
ę
Ĝ
ĝ
Ģ
ģ
Ğ
ğ
Ġ
ġ
Ĥ
ĥ
Ħ
ħ
Í
í
Ì
ì
Î
î
Ï
ï
Ĩ
ĩ
Ǐ
ǐ
Ī
ī
Ĭ
ĭ
İ
ı
Į
į
Ĵ
ĵ
Ķ
ķ
Ĺ
ĺ
Ļ
ļ
Ľ
ľ
Ł
ł
Ń
ń
Ñ
ñ
Ņ
ņ
Ň
ň
Ó
ó
Ò
ò
Ô
ô
Ö
ö
Õ
õ
Ǒ
ǒ
Ō
ō
Ŏ
ŏ
Ǫ
ǫ
Ő
ő
Ŕ
ŕ
Ŗ
ŗ
Ř
ř
Ś
ś
Ŝ
ŝ
Ş
ş
Š
š
Ș
ș
Ț
ț
Ť
ť
Ú
ú
Ù
ù
Û
û
Ü
ü
Ũ
ũ
Ů
ů
Ǔ
ǔ
Ū
ū
ǖ
ǘ
ǚ
ǜ
Ŭ
ŭ
Ų
ų
Ű
ű
Ŵ
ŵ
Ý
ý
Ŷ
ŷ
Ÿ
ÿ
Ȳ
ȳ
Ź
ź
Ž
ž
Ż
ż
Æ
æ
Ǣ
ǣ
Ø
ø
Œ
œ
ß
Ð
ð
Þ
þ
Ə
ə
서식 지정
링크
문단 제목
목록
파일
각주
토론
설명
입력하는 내용
문서에 나오는 결과
기울임꼴
''기울인 글씨''
기울인 글씨
굵게
'''굵은 글씨'''
굵은 글씨
굵고 기울인 글씨
'''''굵고 기울인 글씨'''''
굵고 기울인 글씨
'''아파치 스파크 스테이지'''(Apache Spark Stage)는 스파크 작업(Job)을 여러 개의 독립적인 단위로 나누는 실행 단위이다. 스파크 작업은 여러 개의 '''스테이지'''로 나누어져 병렬적으로 실행되며, 각 스테이지는 여러 '''태스크'''(Task)로 분할된다. 스테이지는 주로 데이터셋에 대한 좁은 변환(Narrow Transformation)과 넓은 변환(Wide Transformation)에 따라 구분된다. ==개요== 스파크 작업은 대개 여러 개의 '''스테이지'''로 나누어져 실행된다. 각 스테이지는 데이터를 처리하는 작업 단위로, 스파크 클러스터에서 병렬로 실행될 수 있다. 스테이지의 구분은 주로 셔플 연산(shuffle operation)이 발생하는 지점에서 이루어진다. 셔플 연산은 데이터가 네트워크를 통해 이동하며 다시 분배되는 과정을 의미한다. *좁은 변환 (Narrow Transformation): 데이터를 재분배하지 않고 하나의 파티션 내에서만 연산을 수행하는 연산으로, 셔플 연산이 발생하지 않는다. 예: `map`, `filter` *넓은 변환 (Wide Transformation): 여러 파티션에서 데이터를 재배치하는 연산으로, 셔플 연산이 발생한다. 예: `groupBy`, `join` ==스테이지의 분할== 스파크는 셔플 연산이 발생하는 지점에서 스테이지를 나누며, 셔플 연산이 없는 경우에는 동일한 스테이지에서 실행된다. ===스테이지 나누기 예시=== #좁은 변환: `rdd.map` 또는 `rdd.filter`와 같은 연산은 셔플을 발생시키지 않으며, 하나의 스테이지에서 처리된다. #넓은 변환: `rdd.groupBy`나 `rdd.join`은 셔플을 발생시키며, 이 연산은 새로운 스테이지를 형성한다. 스파크는 이러한 변환을 기반으로 '''DAG(Directed Acyclic Graph)'''를 구성하고, 각 스테이지를 순차적으로 처리하면서 셔플을 통한 데이터 이동이 필요한 시점에서 스테이지를 나눈다. ==스테이지의 실행== 각 스테이지는 여러 개의 '''태스크'''로 분할되어 실행된다. 태스크는 스파크 클러스터의 각 Executor에서 병렬적으로 실행된다. 스파크의 스테이지 실행은 다음과 같은 순서로 이루어진다: #첫 번째 스테이지가 실행된다. #첫 번째 스테이지가 완료되면, 두 번째 스테이지가 실행된다. #두 번째 스테이지에서 셔플이 발생하면, 결과가 네트워크를 통해 분배된다. #셔플이 완료되면, 새로운 스테이지가 실행된다. #모든 스테이지가 완료되면, 최종 결과가 계산된다. 이 과정에서 '''스테이지'''는 독립적으로 병렬 처리되며, 각 스테이지는 이전 스테이지의 데이터를 사용한다. 스파크는 이러한 스테이지의 의존 관계를 관리하여 효율적으로 작업을 스케줄링한다. ==스테이지 간 의존성== 스파크에서 스테이지 간 의존성은 좁은 의존성(Narrow Dependency)과 넓은 의존성(Wide Dependency)으로 나눌 수 있다: *좁은 의존성(Narrow Dependency): 하나의 파티션에서 다른 파티션의 데이터를 참조하는 연산이다. 예: `map`, `filter`. 이러한 연산은 셔플을 발생시키지 않으며, 동일한 스테이지에서 실행된다. *넓은 의존성(Wide Dependency): 여러 파티션에서 데이터를 병합하거나 재분배하는 연산이다. 예: `groupBy`, `join`. 이러한 연산은 셔플을 발생시켜 새로운 스테이지를 형성한다. 스파크는 넓은 의존성이 있을 때마다 새로운 스테이지를 나누어, 셔플을 통해 데이터를 재분배한다. ==스테이지의 중요성== 스파크에서 '''스테이지'''는 작업을 효율적으로 분할하고, 각 스테이지를 병렬적으로 실행할 수 있게 한다. 스테이지를 적절하게 나누면 성능을 극대화할 수 있으며, 셔플이 발생하는 지점을 관리함으로써 네트워크 비용과 I/O 비용을 줄일 수 있다. *성능 최적화: 스테이지를 적절하게 나누어 셔플을 최소화하고, 병렬 처리를 극대화한다. *디버깅: 각 스테이지를 독립적으로 디버깅할 수 있어, 오류를 추적하고 수정하는 데 유리하다. ==스파크 UI에서 스테이지 보기== 스파크의 실행 상태를 시각적으로 확인할 수 있는 UI에서 각 스테이지의 진행 상황을 볼 수 있다. 스파크 UI에서는 각 스테이지에 대해 다음 정보를 제공한다: *스테이지의 상태 (실행 중, 완료 등) *각 태스크의 상태 (완료된 태스크, 대기 중인 태스크 등) *셔플 발생 여부 및 셔플의 진행 상태 스파크 UI는 `http://localhost:4040`에서 확인할 수 있으며, DAG 그래프와 함께 스테이지의 실행 흐름을 한눈에 확인할 수 있다. ==예제== 다음은 간단한 스파크 코드에서 스테이지를 확인하는 예제이다:<syntaxhighlight lang="python"> from pyspark.sql import SparkSession spark = SparkSession.builder.appName("StageExample").getOrCreate() rdd = spark.sparkContext.parallelize([1, 2, 3, 4, 5]) rdd = rdd.map(lambda x: x * 2) rdd = rdd.filter(lambda x: x > 5) result = rdd.collect() print(result) </syntaxhighlight>이 코드에서 `map`과 `filter`는 각각 하나의 스테이지를 형성하며, `collect`가 호출될 때 최종 결과가 출력된다. ==같이 보기== *[[아파치 스파크]] *[[RDD(Resilient Distributed Dataset)]] *[[스파크 캐싱]] *[[스파크 DAG 스케줄러]] ==참고 문헌== *Zaharia, Matei, et al. "Spark: Cluster Computing with Working Sets." USENIX, 2010. *Chambers, Bill, and Zaharia, Matei. "Spark: The Definitive Guide." O'Reilly Media, 2018. [[분류:아파치 스파크]] [[분류:분산 컴퓨팅]]
요약:
IT 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT 위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록