Spark 완벽 가이드 ch1. 아파치 스파크란

Q·2023년 1월 9일
1

Spark 완벽 가이드

목록 보기
1/24
  • 통합 컴퓨팅 엔진이며, 클러스터 환경에서 데이터를 병렬로 처리하는 라이브러리 집합
  • 파이썬, 자바, 스칼라, R 지원
  • SQL뿐만 아니라 스트리밍, 머신러닝까지 넓은 범위의 라이브러리 제공
  • 단일 노트북 환경에서부터 수천 대의 서버로 구성된 클러스터까지 다양한 환경에서 실행 가능

아파치 스파크의 철학

"빅데이터를 위한 통합 컴퓨팅 엔진과 라이브러리 집합"


통합

  • 스파크의 핵심 목표: '빅데이터 애플리케이션 개발에 필요한 통합 플랫폼을 제공하자'

  • 통합의 의미?

    • 간단한 데이터 읽기에서부터 SQL처리, 머신러닝, 스트림 처리 등
    • 다양한 데이터 분석 작업을 같은 연산 엔진과 일관성 있는 API로 수행할 수 있도록 설계
  • 스파크는 일관성 있는 조합형 API를 제공하므로 작은 코드 조각이나 기존 라이브러리를 사용해 애플리케이션을 만들 수 있다.

  • 스파크의 API는 사용자 애플리케이션에서 다른 라이브러리의 기능을 조합해 더 나은 성능을 발휘할 수 있도록 설계되었다.

    • ex) SQL쿼리로 데이터를 읽고 ML라이브러리로 머신러닝 모델 평가

      -> 스파크 엔진은 이 두 단계를 하나로 병합하고 데이터를 한 번만 조회할 수 있게 함

컴퓨팅 엔진

  • 스파크는 통합이라는 관점을 중시하며 기능의 범위를 컴퓨팅 엔진으로 제한해옴

  • 따라서 저장소 시스템의 데이터를 연산하는 역할만 수행할 뿐, 영구 저장소 역할은 수행하지 않음

  • 그 대신, 다음과 같은 저장소 지원

    • Azure Storage
    • Amazon S3
    • 분산 파일 시스템인 Apache Hadoop
    • 키/값 저장소인 Apache Cassandra
    • 메시지 전달 서비스인 Apache Kafka
    • etc.
  • 스파크는 데이터 저장 위치에 상관없이 처리에 집중하도록 만들어짐


라이브러리

  • 다양한 외부 라이브러리 지원

  • 표준 라이브러리 지원

    • 사실 스파크의 표준 라이브러리는 여러 오픈소스 프로젝트의 집합체
    • 스파크 SQL: SQL과 구조화된 데이터를 제공
    • MLlib: 머신러닝 지원
    • 스파크 스트리밍&구조적 스트리밍: 스트림 처리 기능 제공
    • GraphX: 그래프 분석 엔진 제공
  • 스파크 코어 엔진 자체는 최초 공개 후 큰 변화가 없었지만 라이브러리는 더 많은 기능을 제공하기 위해 꾸준히 변해옴


스파크의 등장 배경

  • 데이터 분석에 새로운 처리 엔진과 프로그래밍 모델이 필요한 근본적인 이유는?
    • 데이터 수집 비용은 극히 저렴해졌지만, 데이터는 클러스터에서 처리해야 할 만큼 거대해짐
      • 데이터 수집에 필요한 기술 비용은 계속해서 저렴해짐
      • 정밀도는 개선됨
    • 게다가 지난 50년간 개발된 sw는 더는 자동으로 성능이 향상되지 않음
      • 단일 프로세서 성능 향상의 한계
  • 그래서 아파치 스파크가 탄생

스파크의 역사

  • UC버클리 대학교에서 2009년 스파크 연구 프로젝트로 시작

    • 당시엔 하둡 맵리듀스가 클러스터 환경용 병렬 프로그래밍 엔진 대표주자였음
  • 연구 결과로 명확해진 두 가지 사실

    1. 클러스터 컴퓨팅이 엄청난 잠재력을 가짐
    2. 맵리듀스 엔진을 사용하는 대규모 애플리케이션의 난이도와 효율성 문제
    • ex) 전통적인 머신러닝 알고리즘은 데이터를 10~20회 가량 처리함

      -> 이를 맵리듀스로 처리하려면 매번 데이터를 처음부터 읽어야함
  • 위 사실을 기반으로, '여러 단계로 이루어진 애플리케이션을 간결하게 개발할 수 있는 함수형 프로그래밍 기반의 API' 개발

    • 연산 단계 사이에서 메모리에 저장된 데이터를 효율적으로 공유할 수 있는 새로운 엔진 기반의 API 구현
  • 1.0 이전의 스파크 초기 버전은 함수형 연산 관점에서 API를 정의

  • 1.0 부터는 구조화된 데이터를 기반으로 동작하는 신규 API인 스파크 SQL이 추가

  • 시간이 흘러 DataFrame, 머신러닝 파이프라인, 자동 최적화를 수행하는 구조적 스트리밍 등 더 강력한 구조체 기반의 신규 API 추가

profile
Data Engineer

0개의 댓글