상세 컨텐츠

본문 제목

Spark Intro

Hadoop/Spark

by yellowmarine 2020. 5. 8. 22:48

본문

Spark Intro

Before spark

img

Hadoop

  • Spark는 Hadoop ecosystem의 일부이다.

  • 보통적으로 Hadoop은 연산속도가 Spark에 비해 느리다고 알려져있다.

    *하지만 이부분에 대해서는 Hadoop과 Spark의 연산기법의 차이와 구조의 차이를 다뤄야 함으로 추후에 설명하도록 하겠습니다.

  • 기본적으로 고용량의 데이터를 저장하고 이를 분석하기 위한 툴로 널리 알려져있다.

NoSQL

  • Non (relationship) 혹은 Not only SQL의 약자 불린다
  • RDBMS와 달리 Schema가 존재하지 않는다 -> 데이터 간의 관계가 불분명하다.
  • Schema가 존재하지 않기 때문에 각 NoSQL 주체마다 다른 저장 방식이 존재.
    • Key/Value store
      • 하나의 Key 값에 모든 data를 Value에 복속 시킨다.
    • Wide Column store
      • 기본적인 발상은 Key/Value store와 비슷하다.
      • 하지만 테이블을 사용하여 값들을 저장하고 동일한 Column에 있는 data가 동일한 포맷을 지니지 않는다.
      • Cassandra 혹은 HBase에서 주로 쓰인다.
    • Document store
      • 특별한 구조를 가지지 않고 Json 형태의 문서로 존재.
      • 모든 데이터를 하나의 row에 다 저장하는 방식이다.
      • Spark 같은 인메모리 시스템에서 쓰인다.

Spark

What is Spark?

  • 단순한 입장에서 본다면 In-Memory 기반의 연산 수행을 하는 고속 연산 프로그램.
  • 하지만 메모리가 아닌 디스크에서 수행하여도 우리가 흔히 아는 Hadoop의 MapReduce 연산보다 빠르게 설계되었다.
  • 무엇보다도 매우 쉽게 설계 되었으며, 흔히 데이터 분석을 위해 사용하는 Python, Java, Scala와의 연동이 쉽다.

Why so fast?

  • 기본적으로 In-Memory에 data를 적재하여 데이터를 분석하기 때문에 disk에서 data를 읽어 수행하는 연산에 비해 빠를 수 밖에 없다.
  • 기존 Hadoop의 MapReduce 모델을 Interactive Query 및 Streaming 형태로 확장 하였다.
    • Batch Processing
      • 특정한 시간 제한에 따라 일괄적으로 대량의 작업을 수행
    • Real-Time Processing(Streaming)
      • 데이터 혹은 신호의 발생과 동시에 즉시 처리하는 시스템
    • Interactive processing
      • 콘솔상에서 별도의 컴파일 없이 코드를 입력하고 출력의 결과물을 확인 가능한 시스템
  • Transformation, Action, Lazy-evaluation 을 통해 연산의 최적화를 찾기 때문에 빠른 결과값을 기대 할 수 있다.
  • 하지만 항상!!! Hadoop 보다 빠른것은 아니며 그 예시에 대해서는 추후 Core와 Executor를 소개하며 설명 하겠습니다.