본문 바로가기
Big Data/Spark

(Apache Spark) 개요

by 스퀴시 2020. 11. 9.
728x90
SMALL

Spark 소개 및 특징

  • What is Spark?

    • 인메모리 기반의 대용량 데이터 고속 처리 엔진
    • Apache Spark 는 오픈 소스 범용 분산 클러스터 컴퓨팅 프레임워크
    • 범용적이면서도 빠른 속도로 작업을 수행할 수 있도록 설계한 클로스터용 연산 플랫폼이자 스트림 처리를 효과적으로 수행하는 인-메모리 방식의 분산 처리 시스템
    • 최초 데이터 로드와 최종 결과 저장시에만 디스크 사용
    • 메모리에 분산 저장하고,병렬 처리 구조
  • Hadoop vs Spark

    • 디스크 입출력 방식을 인-메모리 데이터 처리 방식으로 전환
    • 기존 맵리듀스 디스크 입출력 방식보다 평균 10~100배 정도의 속도 향상

Hadoop vs Spark 성능 비교

  • 기존 디스크 입출력에 대한 지연 시간 개선

  • 메모리를 사용하여 반복적인 작업이나 스트리밍 데이터를 효율적으로 처리

  •  

Spark VS hadoop 성능 비교

  • 빅데이터 애플리케이션에 필요한 대부분의 기능을 지원 (단일 프레임워크로 만듬)

    • 맵리듀스와 유사한 일괄 처리 기능
    • 실시간 데이터 처리 기능 (Spark Streaming)
    • SQL과 유사한 정형 데이터 처리 기능 (Sprk SQL)
    • 그래프 알고리즘 (Spark GraphX)
    • 머신 러닝 알고리즘 (Spark MLlib)
    • 통계 플랫폼 (Spark R)

     

Spark 구성 요소

 

  • Spark 특징
    • Speed
      • In-Memory 기반의 빠른 처리
    • Ease of Use
      • 다양한 언어 지원(Java, Scala, Python, R, SQL)을 통한 사용의 편이성
    • Generality
      • SQL, Streaming, 머신러닝, 그래프 연산 등 다양한 컴포넌트 제공
    • Run Everywhere
      • YARN, Mesos, Kubernetes 등 다양한 클러스터에서 동작 가능
      • HDFS, Cassandra, HBase 등 다양한 파일 포맷 지원 (No SQL 등)

Spark 지원언어

  • Spark 프로그래밍
    • 스파크 애플리케이션은 스칼라, 자바, 파이썬, R로 구현
    • 각 언어로 스파크 SQL을 실행
    • 스칼라 → 스파크에서 가장 많이 쓰임
      • 객체 지향 언어의 특징과 함수형 언어의 특징을 함께 가지는 다중 패러다임 프로그래밍 언어
      • 스칼라는 JVM에서 동작하는 JVML언어
      • JVML(Java Virtual Machune Language)언어는 자바 가상머신 위에서 동작하는 언어들로 Scala, kotlin, Groovy 등
    • 파이썬, Java, R
      • 파이썬 - 머신러닝
      • R - 통계플랫폼
      • Java → java기반설계인 스파크
    • 스파크 쉘 - 데이터를 대화식으로 분석하는 강력한 도구인 대화형 쉘을 제공
    • PySpark

Spark 유사 플랫폼 비교

  • 스파크와 하둡의 비교
    • 스파크의 메모리 내 (인 메모리 기반) 데이터 고속 처리 엔진은 특정 상황, 스테이지 간 다중 스테이지 작업과 비교 시 맵리듀스에 비해 최대 100배 더 빠르다.

    • 아파치 스파크 API는 맵리듀스와 다른 아파치 하둡 구성 요소에 비해 개발자 친화적 API를 제공하여 분산 처리 엔진의 복잡성 대부분을 간단한 메서드로 처리하도록 한다.

      • 머신러닝도 간단한 함수로 제공됨
    • 아파치 스파크의 중심은 컴퓨팅 클러스터로 분할 가능한 불변적 객체 컬렉션을 나타내는 프로그래밍 추상화, 즉 탄력적 분산 데이터 집합(Resilient Distributed Dataset, RDD) 개념이다.

      • 객체화
      • RDD - 데이터 추상화
      • RDD 는 여러 분산 노드에 걸쳐서 저장되는 변경이 불가능한 데이타(객체)의 집합으로 각각의 RDD는 여러개의 파티션으로 분리가 된다. (서로 다른 노드에서 분리되서 실행되는).
      • 쉽게 말해서 스파크 내에 저장된 데이타를 RDD라고 하고, 변경이 불가능하다. 변경을 하려면 새로운 데이타 셋을 생성해야 한다.
    • 스파크 SQL은 구조적 데이터 처리에 초점을 두며, R과 파이썬(pandas) 에서 차용한 데이터 프레임을 사용.

    • 스파크 SQL은 표준 SQL 지원 외에 기본적으로 지원되는 JSON, HDFS, 아파치 Hive, JDBC, 아파치 ORC, 아파치 Parquet 를 포함한 다른 데이터 저장소에서의 읽기와 쓰기를 위한 표준 인터페이스 제공

      • 하둡과 파케이의 파일 형식을 알아야 한다.

  • Summary
    • 아파치 스파크는 인메모리 기반의 대용량 데이터 고속 처리 엔진으로 오픈 소스 범용 분산 클러스터 컴퓨팅 프레임 워크를 의미
    • 스파크 애플리케이션은 스칼라, 자바, 파이썬, R 로 구현
    • 아파치 스파크의 중심은 컴퓨팅 클러스터로 분할 가능한 불변적 객체 컬렉션을 나타내는 프로그래밍 추상화, 즉 탄력적 분산 데이터 집합(Resilient Distributed Dataset, RDD) 개념이다.
LIST

'Big Data > Spark' 카테고리의 다른 글

(Apache Spark) 인메모리 방식이란?  (0) 2020.11.09