-
[스파크 완벽 가이드] Chapter 2 - 스파크 간단히 살펴보기Dev/Spark 2020. 10. 4. 17:17
* 해당 포스트는 "스파크 완벽 가이드" 책을 읽고 난 이후의 정리 내용입니다.
자세한 내용은 "스파크 완벽 가이드" 책을 통해 확인해주세요.
스파크의 기본 아키텍쳐
커져가는 데이터를 분석(프로세싱)하기 위해서는 더 많은 자원이 필요
더 많은 자원 -> Scale up, Scale out을 통해 이루어짐
Scale up: 하드웨어의 자원을 늘리는 것
Scale out: 하드웨어 자체를 늘리는 것
Spark: Cluster에서 데이터를 프로세싱하기 위한 프레임워크
클러스터 매니저: Cluster에서의 자원 할당을 관리하는 관리자
스파크 애플리케이션에서의 작업 과정
드라이버: main() 함수 프로세스
익스큐터: 드라이버 프로세스가 SparkContext, SparkSession에 할당한 작업 수행
클러스터 매니저: 익스큐터 작업의 자원 할당(분산 환경에서)spark.apache.org/docs/latest/running-on-mesos.html
spark.apache.org/docs/latest/running-on-kubernetes.html
스파크 언어 API
스칼라, 자바, 파이썬, SQL, R
스파크 시작하기
spark-shell scala용 shell
pyspark python용 shell
spark-submit 미리 생성해둔 Executable Jar 사용
SparkSession
Apache Spark 2.0부터 도입된 익스큐터 실행을 위한 세션 단위
Dataframe
테이블 - 로우, 컬럼 단위로 표시
각 노드에 분산되어 존재
Dataset[Row] => dataframe
파티션
데이터 분할의 단위
익스큐터 개수와 파티션 개수를 적절히 설정하는 것이 중요(하지만)
Dataframe부터는 스파크에서 자동 설정* repartition - coalesce의 관계
Repartition : 파티션의 갯수를 늘리거나 줄이거나 둘 다 가능(Full Shuffle)
Coalesce : 파티션의 갯수를 줄이는 것만 가능
stackoverflow.com/questions/31610971/spark-repartition-vs-coalesce
2.7 Transformation
데이터를 변경하는 함수들
스파크의 기본적인 데이터 수정 방식 -> 원래의 데이터는 그대로, 변경점만을 저장불변(Immutable) => Functional Programing(함수형 프로그래밍)에서의 필수 요소 중 하나
* 지연 연산(Lazy evaluation)
Action Function들이 수행되는 시점에서 앞의 모든 연산이 처리되는 방법
사용 목적:중간중간 Transformation의 작업 과정을 저장하는 것은 자원 비용의 증가를 초래
또한 데이터 처리의 최적화를 진행할 수 없음.따라서 Action이 일어났을 때 모든 Transformation을 수행하는 방식을 채택
2.8 Action
출력, 연산 결과 저장 등의 실제 "행위"로 작동하는 함수들그림에서의 filter(), limit()은 Transformation이고 show()는 실제 출력을 의미하기 때문에 Action이다.
2.9 Spark UI
Spark-Server-ip:4040/예제 실행
'Dev > Spark' 카테고리의 다른 글
[스파크 완벽 가이드] Chapter 6 - 다양한 데이터 타입 다루기 (3) (0) 2020.10.25 [스파크 완벽 가이드] Chapter 6 - 다양한 데이터 타입 다루기 (2) (0) 2020.10.18 [스파크 완벽 가이드] Chapter 7 - 집계 연산 (2) (0) 2020.10.18 [스파크 완벽 가이드] Chapter 7 - 집계 연산 (1) (0) 2020.10.18 [스파크 완벽 가이드] Chapter 6 - 다양한 데이터 타입 다루기 (1) (0) 2020.10.16