반응형
1. 스파크란
스파크는 통합 컴퓨팅 엔진이며, 클러스터 환경에서 데이터를 병렬로 처리하는 라이브러리 집합. 널리 쓰이는 언어(파이썬, 자바,스칼라,R) 을 지원하며 SQL 뿐만 아니라 스트리밍, 머신러닝에 이르기까지 넓은 범위의 라이브러리를 제공한다.
2. 스파크의 특징
HDFS 사용 | – 하둡의 파일시스템 기반 동작 |
직관적 이해 | – 스칼라 기반 최소화 코드로 작성 |
RDD | – RDD 단위로 데이터 연산을 수행 |
3. 스파크 철학
1) 통합
- 간단한 데이터 읽기부터 SQL 처리, 머신러닝 그리고 스트림 처리에 이르기까지 다양한 데이터 분석작업을 같은 연산 엔진과 일관성있는 API 로 수행할 수 있도록 설계.
2) 컴퓨팅 엔진
- 통합관점의 중시하면서 기능의 범위를 컴퓨팅 엔진으로 제한, 그 결과 저장소 시스템의 데이터를 연산하는 역할만 수행할 뿐 영구 저장소 역할은 수행하지 않음. 내부에 데이터를 오랜 시칸 저장하지 않으며 특정 저장소 시스템을 선호하지 않음
3) 라이브러리
- 스파크 컴포넌트는 데이터 분석 작업에 필요한 통합 API 를 제공하는 통합 엔진 기반의 자체 라이브러리
4. 스파크의 역할
- 스파크는 클러스터의 데이터 처리 작업을 관리하고 조율
- 클러스터 : 여러 컴퓨터 자원을 모아 하나의 컴퓨터처럼 사용 가능
- 클러스터는 YARN과 같은 클러스터 매니저에서 관리한다. 사용자는 클러스터 매니저에 스파크 애플리케이션을 제출(submit)한다. 그러면 클러스터 매니저가 애플리케이션 실행에 필요한 자원을 할당
5. 스파크 애플리케이션
- 스파크 애플리케이션은 드라이버 프로세스와 다수의 익스큐터 프로세스로 구성
- 드라이버 프로세스 : 스파크 애플리케이션 정보의 유지 관리, 사용자 프로그램이나 입력에 대한 응답, 전반적인 익스큐터 프로세스의 작업과 관련된 분석, 배포 그리고 스케쥴링 역할
- 익스큐터 : 드라이버가 할당한 코드를 실행, 진행 상황을 다시 드라이버 노드에 보고하는 두가지 역할 수행
6. 스파크의 DataFrame
- 스파크의 데이터 프레임은 파이썬과 다르게 단일 컴퓨터가 아닌 수천 대의 컴퓨터에 분산되어 있음
- 이유는 단일 컴퓨터에 저장하기에는 데이터가 너무 크거나 계산에 너무 오랜 시간 걸릴 수 있음
- 모든 익스큐터가 병렬로 작업을 수행할 수 있도록 파티션이라 불리는 청크 단위로 데이터를 분할함. 파티션은 클러스터의 물리적 머신에 존재하는 로우의 집합을 의미
- 만약 파티션이 하나라면 스파크에 수천 개의 익스큐터가 있더라도 병렬성은 1이 되며, 수백개의 파티션이 있더라도 익스큐터가 하나밖에 없다면 병렬성은 또한 1이 됨
7. 트랜스포메이션
- 스파크의 핵심 데이터 구조는 불변성을 가짐. 즉 한번 생성하면 변경할 수 없음
- 변경을 하려면 원하는 변경 방법을 알려줘야 하는데 이때 사용하는 명령을 트랜스포메이션이라고 부름
- 추상적인 트랜스포메이션만 지정하면 액션을 수행해도 스파크는 실제 트랜스포메이션을 수행하지 않음
- 지연 연산은 스파크가 연산 그래프를 처리하기 직전까지 기다리는 동작 방식을 의미. 스파크는 연산 명령이 내려진 즉시 데이터를 수정하지 않고 원시 데이터에 적용할 트랜스포메이션의 실행 계획을 생성함
1) 좁은 의존성
- 각 입력 파티션이 하나의 출력 파티션에만 영향을 미친다
- Where 절은 좁은 의존성을 가짐
- 하나의 파티션이 하나의 출력 파티션에만 영향을 미침
2) 넓은 의존성
- 하나의 입력 파티션이 여러 출력 파티션에 영향을 미침
- 클러스터에서 파티션을 교환하는 셔플을 수행
8. 액션
- 실제 연산 수행을 위해선 액션 명령을 내려야 함
- 액션은 일련의 트랜스포메이션으로부터 결과를 계산하도록 지시하는 명령어
- 콘솔에서 데이터를 보는 액션, 각 언어로된 네이티브 객체에 데이터를 모으는 액션, 출력 데이터 소스에 저장하는 액션 총 3가지 액션이 존재
- 액션을 지정하면 스파크 잡이 실행
9. 스파크 UI
- 스파크 잡의 진행 상황을 모니터링할 때 사용
- Localhost:4040 의 주소를 사용함
반응형
'Data Engineering > Spark' 카테고리의 다른 글
[ Spark ] 스파크 간단 스터디 6 (0) | 2021.07.18 |
---|---|
[ Spark ] 스파크 간단 스터디 5 (2) | 2021.07.11 |
[ Spark ] 스파크 간단 스터디 4 (0) | 2021.07.09 |
[Spark] 스파크 간단 스터디 3 (0) | 2021.07.07 |
[Spark] 스파크 간단 스터디 2 (0) | 2021.06.27 |