더북(TheBook)

 4.2 데이터 파티셔닝을 이해하고 데이터 셔플링 최소화

 

스파크의 데이터 파티셔닝은 데이터를 여러 클러스터 노드로 분할하는 메커니즘을 의미한다. 데이터 파티셔닝은 스파크의 성능과 리소스 점유량을 크게 좌우할 수 있는 RDD의 가장 기본적인 개념이다. 데이터 파티셔닝과 밀접한 관련이 있는 데이터 셔플링도 스파크에서 중요하게 다루어야 할 주제다. RDD 연산자의 상당수가 데이터 파티셔닝과 셔플링을 조절할 수 있는 방법을 제공하기 때문에 두 개념을 설명하지 않고서는 스파크 API를 깊이 있게 다루었다고 할 수 없을 것이다.

이 절에서는 스파크 클러스터(Spark cluster)를 자주 언급하지만, 다양한 스파크 클러스터와 스파크 배포 유형에 관련된 자세한 내용은 3부에서 본격적으로 다룰 예정이다. 이 장에서는 일단 스파크 클러스터를 ‘병렬 연산이 가능하고 네트워크로 연결된 머신(즉, 노드)의 집합’ 정도로만 생각하자.

RDD의 파티션6은 RDD 데이터의 일부(조각 또는 슬라이스)를 의미한다. 예를 들어 로컬 파일 시스템에 저장된 텍스트 파일을 스파크에 로드하면, 스파크는 파일 내용을 여러 파티션으로 분할해 클러스터 노드에 고르게 분산 저장한다. 이때 여러 파티션을 노드 하나에 저장할 수도 있다. 이렇게 분산된 파티션이 모여서 RDD 하나를 형성한다. RDD의 두 번째 D가 분산(Distributed)인 이유도 바로 이 때문이다.

 

6 과거에는 파티션 대신 스플릿(split) 용어를 사용했다. 지금도 스파크 소스 코드에서 이 단어를 발견할 수 있다(물론 언젠가는 리팩토링될 것이다).

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