728x90
반응형
Chapter 1. 아파치 스파크(Apache Spark)란?
- 가장 활발하게 개발되고 있는 병렬 처리 오픈소스 엔진, 통합 컴퓨팅 엔진이며 클러스터 환경에서 데이터를 병렬로 처리하는 라이브러리 집합
- 단일 노트북 환경에서부터 수 천대의 서버로 구성된 클러스터까지 다양한 환경에서 실행 가능
1.1 스파크 등장 배경
새로운 처리 엔진과 프로그래밍 모델이 필요한 이유?
- 컴퓨터 어플리케이션과 하드웨어의 바탕을 이루는 경제적 요인의 변화
- 프로세서의 성능 향상이 해마다 빨리지고 있으며, 어플리케이션은 코드를 수정하지 않아도 자연스럽게 빨라지고 있음.
- 대규모 어플리케이션은 이런 경향에 맞춰 만들어져, 대부분 단일 프로세서에서만 실행 되도록 설계
- 대규모 데이터 처리를 프로세서의 성능 향상에 맡겼던 것
- 하드웨어 성능의 성능 향상은 2005년 경에 멈춤(단일 코어 프로세서 → 멀티 코어 프로세서)
- 데이터 저장 비용은 극히 저렴(대용량화), 클러스터에서 처리해야 할 만큼 방대해짐
- 대용량 데이터 병렬처리의 요구가 발생, 스파크와 같은 새로운 프로그래밍 모델이 필요
1.2 아파치 스파크의 철학
통합
- 빅데이터 어플리케이션 개발에 필요한 통합 플랫폼을 제공하자는 핵심 목표를 가지고 있음
- 간단한 데이터 읽기부터 SQL처리, 머신러닝, 스트림 처리까지 다양한 분석 작업을 같은 연산 엔진과 일관성 있는 API로 수행할 수 있도록 설계
컴퓨팅 엔진
- 데이터를 연산하는 역할만 수행, 영구 저장소 역할 수행은 하지 않음.
- 그 대신 클라우드 기반의 저장소와의 연결을 지원(Azure, S3, Hadoop, Cassandra, Kafka)
라이브러리
- 데이터 분석 작업에 필요한 통합 API를 제공하는 통합 엔진 기반의 자체 라이브러리
- 스파크 코어 엔진 자체는 최초 공개 후 큰 변화가 없었지만 라이브러리의 경우 꾸준히 변해 옴(스파크 SQL, MLlib, GraphX).
1.3 스파크 역사
Spark: Cluster Computing with Working Sets (2010)
- 2009년 UC 버클리 대학교에서 AMP Lab에서 연구 프로젝트로 시작
- 새로운 프로그래밍 모델의 장단점을 이해하기 위해 맵리듀스 사용자들과 함께 연구
- 스파크팀은 어플리케이션을 간결하게 개발할 수 있는 함수형 프로그래밍 기반의 API를 설계, 메모리에 저장된 데이터를 효율적으로 공유할 수 있는 새로운 엔진 기반의 API를 구현
- 스파크의 조합형 API 의 핵심 아이디어는 계속해서 진화중임
- 초기에는 함수형 연산 관점에서 API를 정의하였고, v1.0 부터는 스파크 SQL을 추가, 이후 DataFrame, ML pipeline 등을 추가
1.4 스파크 실행하기
728x90
반응형
'Study > spark' 카테고리의 다른 글
[Spark] chapter 2 스파크 간단히 살펴보기 (0) | 2021.07.14 |
---|