본문 바로가기
빅데이터 시스템

스파크 병렬 처리

by 볼록티 2019. 12. 15.
728x90
반응형

-이번장에서 배울 것

0.클러스터에서 RDD가 어떻게 분산되는지.

 -클러스터에 RDD는 그 데이터가 워커 노드들을 통해서 파티션 된다. 파티셔닝은 스파크에서

 자동으로 행해지며, 얼마나 많이 파티션할지는 컨트롤이 가능하다.

 -싱글 파일들에 대한 파티셔닝

  sc.textFile(‘myfile’, 3 )

  디폴트는 2이며, 파티션 개수가 많아진다는 것은 그만큼 더 병렬화 된다는 것.

 -여러 파일들에 대한 파티셔닝

 sc.textFile(“mydir/*”)

  각 파일은 적어도 하나 이상의 파티션을 갖는다. 

 sc.wholeTextFiles(“mydir”)

  작지만 많은 양의 파일들을 다룰 때. 키는 파일이름, 값은 파일 내용으로 pairRDD를 생성.



1.스파크가 병렬로 RDD 연산을 어떻게 수행하는지.


 -파티션에서 병렬 연산

  RDD 연산은 각 파티션에서 병렬로 수행된다. 데이터가 있는 워커노드에서 작업이 수행된다.

  몇몇 연산은 파티셔닝을 보존하고 있는다. map, flatMap,filter

  몇몇 연산은 재파티션을 한다. reduce, sort, group

 

 -글에 단어 개수 평균 구하기

avglens = sc.textFile(file)

1

avglens = sc.textFile(file)

.flatMap(lambda line: line.split())

2

avglens = sc.textFile(file)

.flatMap(lambda line: line.split())

.map(lambda word: (word[0], len(word)))

 

3

avglens = sc.textFile(file)

.flatMap(lambda line: line.split())

.map(lambda word: (word[0], len(word)))

.groupByKey()

 

4

avglens = sc.textFile(file)

.flatMap(lambda line: line.split())

.map(lambda word: (word[0], len(word)))

.groupByKey()

.map(lambda (k, values): (k, sum(values)/len(values)))

 

 

 -스테이지란?

  동일한 파티션에서 실행되는 연산은 스테이지들에서 실행된다.

  하나의 스테이지 내의 작업은 함께 파이프라인된다.

  개발자들은 성능을 향상시키기 위해서 스테이지를 알아야한다.

 

 

 

 -job: 작업의 셋은 action의 결과로써 실행된다.

 -stage: job에서 작업 셋은 병렬로 실행될 수 있다.

 -Task: work의 개별 집합은 하나의 executor로 보낸다.

 -Application: Application은 하나의 드라이버로 관리되는 모든 job을 포함한다.

 

 

 

 

 

 

-주요 포인트

 1.RDD는 스파크 실행체 JVM의 메모리에 저장된다. 

 2.데이터는 파티션으로 쪼개지고, 각 파티션은 별개의 실행체에 있다.

 3.RDD 연산들은 병렬로 된 파티션들에서 수행된다.

 4.동일한 파티션에 의존하는 연산은 스테이지에서 함께 파이프라인된다.

  ex)  map, filter

 5.다양한 파티션에 의존하는 연산은 별개의 스테이지에서 수행된다.

  ex) join, reduceByKey

 

 

 

 

 

 

 

 

 

이글은 서울과학기술대학교 권혁윤 교수님의 강의를 토대로 필기한 내용임을 밝힙니다. :)

 

 

728x90
반응형

'빅데이터 시스템' 카테고리의 다른 글

스파크 애플리케이션 작성 및 전개  (0) 2019.12.15
Pair RDD와 함께 데이터 병합.  (0) 2019.12.15
RDD와 함께 스파크 활용하기.  (0) 2019.12.15
스파크 기초  (0) 2019.12.15
데이터 파일 파티셔닝  (0) 2019.12.15

댓글