그림 발췌
http://bigdatafindings.blogspot.kr/2015/08/some-key-points-about-spark-suffle.html
SparkContext란?
- 스파크에서는 아래 그림과 같이 Driver Program과 Worker Node 내 Executor 간의 통신이 발생한다. 이 Driver는 Executor에게 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 |