본문 바로가기
개발이야기/AI

Spark

by 효우너 2020. 12. 17.
728x90
반응형

Apache Spark

1. Apache Spark란?

  • 메모리 내 처리를 지원하여 빅데이터를 분석하는 애플리케이션의 성능을 향상시키는 오픈 소스 병렬 처리 프레임워크

    • 빅데이터 솔루션은 기존 데이터베이스에 비해 너무 크거나 복잡한 데이터를 처리하도록 설계
  • Spark는 메모리에서 대량의 데이터를 처리하므로 디스크 기반 대체 방법보다 훨씬 빠름

  • In-Memory 기반 통합 컴퓨팅 엔진

    • In-Memory : 빅데이터 시대에 데이터 처리 속도를 향상시킬 수 있는 핵심 기술
  • 암시적 데이터 병렬성과 장애 허용, 완전한 클러스터를 프로그래밍하기 위한 인터페이스 제공

  • 유연성과 MapReduce에 대한 확장성을 훨씬 빠른 속도로 제공

  • 데이터를 읽고, 변형하고, 합계를 낼 수 있으며 복잡한 통계 모델들을 쉽게 학습하고 배포할 수 있음

데이터가 메모리에 저장되어 있을 때는 Apache Hadoop보다 100배 빠르며, 디스크에 저장되어 있을 때는 10배 빠름



2. Apache Spark 환경

  • Apache Spark는 다양한 컴포넌트와 라이브러리 지원

    • 코어 프로그래밍에서부터 SQL을 지원하는 Spark SQL
    • 실시간 데이터 처리를 지원하는 Spark Streaming
    • 여러 머신러닝 기법을 지원하는 Spark MLlib
  • Apache Spark는 데이터 연결에 대해서도 다양하게 사용

    • 빅데이터 기술의 시발점이 되었던 Hadoop
    • NoSQL DB인 HBase&Cassandra
    • 클라우드 환경과 클러스터 관리를 위한 Mesos
  • Apache Spark는 Scala 기반으로 개발

    • Spark 언어 API를 이용해 데이터 분석에 가장 많이 사용되고 있는 언어인 R, Python, SQL을 사용해 Spark를 실행할 수 있음
      • Spark가 데이터 분석가, 데이터 엔지니어, 데이터 사이언티스트, 프로그래밍 개발자 등 모두에게 확장 가능하고 유연한 환경을 제공함을 알 수 있음
    • 언어별 성능은 Spark 버전이 상향되면서 상당 부분 개선되어 사용함에 용이


3. Apache Spark 아키텍처

spark-architecture

  • 마스터/작업자 아키텍처를 사용하는 Apache Spark에는 드라이버, 실행기 및 클러스터 관리자의 세 가지 주요 구성 요소가 있음

    • 드라이버

      • 드라이버는 C# 콘솔 앱과 같은 프로그램과 Spark 세션으로 구성.
      • Spark 세션은 프로그램을 가져와서 실행기에서 처리하는 더 작은 작업으로 분할
    • 실행자

      • 각 실행기 또는 작업자 노드는 드라이버로부터 작업을 받고 해당 작업을 실행
      • 실행기는 클러스터라고 하는 엔터티에 상주
    • 클러스터 관리자

      • 클러스터 관리자는 드라이버 및 실행기 모두와 통신
        • 리소스 할당 관리
        • 프로그램 분할 관리
        • 프로그램 실행 관리


4. Apache Spark RDD

  • Apache Spark의 기본 데이터 구조는 탄력적 분산 데이터셋이라는 RDD(Resilient Distributed Dataset)로 구성
    • Spark의 핵심 개념인 분산, 내고장성, 인메모리 등을 완벽하게 지원
  • 불변성의 병렬 처리가 가능한 파티션 레코드


5. Spark API

  • Scala
  • Python
  • Java
  • SQL
  • R
  • .NET 언어(C#/F#)


참조_1

참조_2

728x90
반응형

'개발이야기 > AI' 카테고리의 다른 글

Map Reduce  (0) 2020.12.17

댓글