이 글은 “스파크 완벽 가이드” 책 내용을 정리한 글입니다.

저작권에 문제가 있는 경우 “gunjuko92@gmail.com”으로 연락주시면 감사하겠습니다.

스파크 완벽 가이드 - 아파치 스파크란

  • 아파치 스파크란?
    • 통합 컴퓨팅 엔진
    • 클러스터 환경에서 데이터를 병렬로 처리하는 라이브러리 집합
    • 병렬 처리 오픈소스 엔진
    • 파이썬, 자바, 스칼라, R를 지원
    • SQL, 스트리밍, 머시러닝 등 넓은 범위의 라이브러리를 제공
  • 스파크 구성

그림

1 아파치 스파크의 철학

통합

  • 빅데이터 애플리케이션 개발에 필요한 통합 플랫폼을 제공하는것이 목표이다.
  • 통합의 의미 : 스파크는 데이터 읽기, SQL 처리, 스트림 처리, 머신러닝 등 다양한 데이터 분석 작업을 같은 연산 엔진과 API로 수행할 수 있도록 설계
  • 일관성 있는 조합형 API를 제공하므로 기존 라이브러리를 사용해 애플리케이션을 만들 수 있음

컴퓨팅 엔진

  • 스파크는 기능의 범위를 컴퓨팅 엔진으로 제한함
  • 데이터를 연산하는 역할만 수행할 뿐 저장소 역할은 수행하지 않음
  • 대신에 다양한 저장소를 지원 (아마존 S3, Hadoop, Kafka 등)
  • 스파크는 데이터 저장 위치에 상관없이 처리에 집중하도록 만들어짐
  • 사용자 API는 서로 다른 저장소 시스템을 매우 유사하게 볼 수 있도록 만들어졌음.

라이브러리

  • 데이터 분석 작업에 필요한 통합 API를 제공함
  • 스파크는 엔진에서 제공하는 표준 라이브러리와 오픈소스 커뮤니티에서 서드파티 패키지 형태로 제공하는 다양한 외부 라이브러리를 지원함
  • 스파크는 SQL, MLlib, 스파크 스트리밍, GraphX 등 다양한 라이브러리를 제공한다. 그 외 수백 개의 외부 오픈소스 라이브러리도 존재한다.

2. 등장 배경

  • 이전에는 대규모 데이터 처리를 프로세서의 성능 향상에 맡겼지만 하드웨어 성능 향상에는 한계가 있음
  • 성능 향상을 위해선 병렬 처리가 필수적으로 필요함 + 데이터가 클러스터에서 처리해야 할 만큼 거대해짐 => 새로운 프로그래밍 모델이 필요해졌음

3. 스파크의 역사

  • 전통적인 머신러닝 알고리즘은 데이터를 10~20회 가량 처리함 => 맵 리듀스로 처리하려면 단계별로 맵리듀스 잡을 개발하고 클러스터에서 각각 실행해야 하므로 매번 데이터를 처음부터 읽어야함
  • 이런 문제를 해결하기 위해 여러 단계로 이루어진 애플리케이션을 간견하게 개발할 수 있는 함수형 프로그래밍 기반의 API를 설계함 그리고 연산 단계 사이에서 메모리에 저장된 데이터를 효율적으로 공유할 수 있는 새로운 엔진 기반의 API를 구현
  • 스파크에서 대화형으로 SQL을 실행할 수 있는 엔진인 샤크를 개발
  • MLlib, 스파크 스트리밍, GraphX를 만들기 시작 (같은 엔진을 이용해 여러 처리 유형을 결합)
  • 2014년에 1.0 버전을 2016년에 2.0 버전을 공개

5. 스파크 실행하기

  • 스파크는 스칼라로 구현되어 자바 가상 머신 기반으로 동작
  • 로컬 환경에서도 실행 가능.
  • 하둡 클러스터에 접속하고 싶은 경우 하둡 버전에 맞는 패키지 유형을 선택해 올바른 버전을 내려받아야함.
  • 다양한 언어를 지원하는 스파크의 대화형 셸을 제공함