Apache Spark?
Apache Spark는 대규모 데이터 처리를 위한 오픈 소스 분산 컴퓨팅 시스템입니다.
용어 정리
- 기본 개념
- RDD (Resilient Distributed Dataset): Spark의 기본 데이터 구조.
- DAG (Directed Acyclic Graph): 작업의 실행 계획을 나타냅니다.
- Partitioning: 데이터의 분할 방식.
- Transformation and Action: Spark에서의 주요 작업 유형들.
- Spark Architecture
- Driver와 Executor의 역할과 동작 방식
- Spark Application, Jobs, Stages, Tasks의 관계와 흐름
- Spark APIs
- DataFrame & Dataset API: 선언적 데이터 처리를 위한 인터페이스
- Spark Streaming: 실시간 데이터 처리를 위한 API
- Spark SQL
- DataFrame을 사용하여 SQL 쿼리를 실행하는 방법
- Catalog와 External Databases
- Spark MLlib
- 머신러닝 작업을 위한 라이브러리
- Spark Tools and Utilities
- Spark-shell, Spark-submit 등의 유틸리티
- Cluster Managers
- Standalone, Mesos, YARN, Kubernetes 등 Spark의 클러스터 매니저들에 대한 이해
- Tuning and Debugging
- Spark UI 사용법
- Performance tuning: 메모리 관리, 셔플 최적화, 데이터 직렬화, 파티션 조정 등
- 로깅 및 디버깅 기법
- Data Sources and Integration
- HDFS, Cassandra, Kafka, S3 등 다양한 데이터 소스와의 통합 방법
- Deployment and Operations
- 클러스터 구성 및 유지 보수
- 클러스터 모니터링 및 로깅
- Programming Languages
- Spark는 Scala로 작성되었으며, Scala, Java, Python 및 R에서 사용할 수 있습니다. 따라서 해당 언어 중 하나 이상에 익숙해야 합니다.
- Environment Setup
- Spark 및 관련 라이브러리의 설치 및 설정 방법
- Spark Ecosystem Projects
- Apache Kafka, Delta Lake, Apache Arrow 등과 같은 연관 프로젝트에 대한 이해
Spark 개념
- RDD (Resilient Distributed Dataset)
- RDD 는 Spark의 기본 데이터 구조
- 분산되고 불변하는 컬랙션으로, 변환과 작업을 지원, (트랜스포메이션과 액션)
- 실패한 작업을 다시 실행할 수 있는 내결합성 제공
- DataFrame and Dataset
- DataFrame은 이름이 있는 열을 가진 분산 데이터 컬렉션, SQL처럼 작동하며, 최적화된 실행 계획을 위한 Catalyst엔진을 사용한다.
- Dataset은 Spark 2.x부터 도입된 타입세이프한 구조화된 API Scala와 java에서만 사용가능
- RDD보다는 DataFrame및 Dataset을 사용하는 것이 장되는데 내부최적화 기능을 사용할 수 있기때문
- Transformations and Actions
- Transformation은 데이터를 변경하지 않고 새로운 RDD/DataFrame을 생성하는 연산입니다. (map 이나 filter처럼)
- Action은 RDD/DataFrame에서 값을 계산하거나 데이터를 저장하는 연산입니다.
- DAG(Directed Acyclic Graph
- DAG는 RDD의 변환을 노드로 나타내는 방향성 비순환 그래프 입니다.
- 이를 통해 Spark는 스테이지 경계를 결정하고, 필요한 경우 재계산을 효율적으로 수행합니다.
- Partitioning
- 데이터가 클러스터 노드 간에 어떻게 분할되는지를 결정하는것Spark Architecture
- Dravier Program: Spark의 메인 프로그램으로 작업의 실행과 결과 집계를 담당합니다.
- Excutor: 클러스터 노드에서 실행되며, 실제 작업을 수행하고, 데이터를 로컬에 저장합니다.
- Task: 파티션 단위의 데이터 처리 단위
- Job: 하나 이상의 스테이지로 구성된 병렬 처리 작업 단위.
- Stage: 연속적인 변환 적업들을 그룹화하여 형성된 작업단계이다.Spark Content and SparkSession
- Spark Context(SC) : Spark 진입점, 클러스터와 통신을 관리합니다.
- Spark Session: Spark2.x 부터 도입된 진입점, SQL,DataFram, Dataset과 같은 기능에 접근할때 사용합니다.
내결합성
내결합성은 영어로 Resilience로 시스템이나 네으워크 일부가 실패할 경우에도 작동을 계속 유지할 수 있는 능력을 나타내는 말이다.
Spark의 RDD에서 R은 이 내결함성을 나타내는 약자이다.
Spark는 내부적으로 RDD의 데이터를 여러 파티션으로 나누어 클러스터 내의 여러 노드에 분산저장을 하는데 이때 각파티션은 다중 복제를 통해 여러 노드에 복사될 수 있다. 따라서 노드 중 하나가 실패하더라도 해당 데이터는 다른 노드에도 복제되어 있어 데이터 손실없이 작업을 계속 수행할 수 있는것이다.
그리고 RDD는 불변성을 가지기 때문에, 한번에 생성된 RDD는 변경되지 않습니다. 이특성은 실패한 작업의 복구가 필요할때 중요한데 실패한 작업은 원본데이터나 변환 로직을 사용하여 다시 계산될 수 있다.
'DB' 카테고리의 다른 글
MYSQL/성능개선을 위한 인덱스 정의시 알아두면 유용한 정보(쿼리 실행 계획) (0) | 2023.10.23 |
---|---|
백터 데이터베이스 개념 (0) | 2023.05.24 |