-
[스파크 완벽 가이드] 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
Running Spark on Mesos - Spark 3.0.1 Documentation
Running Spark on Mesos Spark can run on hardware clusters managed by Apache Mesos. The advantages of deploying Spark with Mesos include: dynamic partitioning between Spark and other frameworks scalable partitioning between multiple instances of Spark Secur
spark.apache.org
spark.apache.org/docs/latest/running-on-kubernetes.html
Running Spark on Kubernetes - Spark 3.0.1 Documentation
Running Spark on Kubernetes Spark can run on clusters managed by Kubernetes. This feature makes use of native Kubernetes scheduler that has been added to Spark. The Kubernetes scheduler is currently experimental. In future versions, there may be behavioral
spark.apache.org
Kubernetes에서의 Spark Cluster 작동 원리
스파크 언어 API
스칼라, 자바, 파이썬, SQL, R
스파크 시작하기
spark-shell scala용 shell
pyspark python용 shell
spark-submit 미리 생성해둔 Executable Jar 사용
SparkSession
Apache Spark 2.0부터 도입된 익스큐터 실행을 위한 세션 단위Spark-shell을 실행했을 때 나오는 화면
Dataframe
테이블 - 로우, 컬럼 단위로 표시
각 노드에 분산되어 존재
Dataset[Row] => dataframe
파티션
데이터 분할의 단위
익스큐터 개수와 파티션 개수를 적절히 설정하는 것이 중요(하지만)
Dataframe부터는 스파크에서 자동 설정* repartition - coalesce의 관계
Repartition : 파티션의 갯수를 늘리거나 줄이거나 둘 다 가능(Full Shuffle)
Coalesce : 파티션의 갯수를 줄이는 것만 가능
stackoverflow.com/questions/31610971/spark-repartition-vs-coalesce
Spark - repartition() vs coalesce()
According to Learning Spark Keep in mind that repartitioning your data is a fairly expensive operation. Spark also has an optimized version of repartition() called coalesce() that allows avoid...
stackoverflow.com
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