그림 발췌

https://blogs.msdn.microsoft.com/bigdatasupport/2015/09/14/understanding-sparks-sparkconf-sparkcontext-sqlcontext-and-hivecontext/ 

http://bigdatafindings.blogspot.kr/2015/08/some-key-points-about-spark-suffle.html


SparkContext?

- 스파크에서는 아래 그림과 같이 Driver ProgramWorker Node Executor 간의 통신이 발생한다. DriverExecutor에게 Task를 할당하게 된다. Executor에서는 Task를 수행하고 종료 시 Driver에게 결과 값을 주게 된다.

스파크를 실행하면SparkContext생성으로부터 시작이 된다앞선 예제들을 확인하면 알 수 있듯이, SC를 사용하여 RDD생성을 하였다.

(다만 앞선 예제에서는 로컬 내 실행 되었기 때문에위의 그림처럼 노드들에게 Task를 분산으로 나누지는 않았다..)


기본적인 SC 시작 방법

- SC(Spark Context) 초기화

- Local: 한 개의 스레드나 단일의 로컬머신에서 동작할 때따로 접속할 필요가 없음을 알려주는 값

- My App: Cluster에 접속할 경우, Cluster UI에서 My App이란 이름으로 어플리케이션을 구분할 수 있음

SparkContext(conf = conf): 최종 SparkContext를 sc변수로 할당



Reduce By Key vs Group By Key

- Reduce By Key: The reduce operation happens for each partition, and then the results will be shuffled.

- 같은 Node의 같은 Key값을 기준으로 값들을 미리 병합하여, 최종적으로 셔플링할, 부하를 줄여줌

- Group By Key: 모든 Pair 데이터들이 Key를 기준으로 셔플링이 이루어지는데, 이는 많은 부하가 발생할 수 있음


밑에 그림을 보면 이해하기 쉬운데,  RBK의 경우 미리 노드에서 같은Key들에 대해 값을 미리 병합한 것을 확인할 수 있음






반응형

'기타 > 분산 컴퓨팅' 카테고리의 다른 글

Spark Accumulator  (0) 2017.04.07
Spark Data 불러오기/저장하기  (0) 2017.04.07
Spark Pair RDD 개념  (0) 2017.04.07
Spark RDD 개념 및 예제  (0) 2017.04.07
Apache Spark 설치  (0) 2017.04.07

+ Recent posts