Apache Spark를 알아보자

[Spark] Apache Spark를 알아보자 (feat, Bigdata Flow)

아파치 스파크를 한마디로 표현하자면 빅데이터 분산처리 엔진 or 빅데이터를 위한 통합 컴퓨팅엔진과 라이브러리 집합이다.
위 문장을 기준으로 스파크의 핵심요소를 파헤쳐보자.


BigData

기존의 데이터베이스, 데이터베이스관리형시스템을 넘어 정형,비정형 데이터를 포함한 다양한 데이터로부터 의미있는 가치를 추출하고 원하는 결과를 분석하는 기술이다.
즉, 큰데이터로부터 유의미한 지표를 분석해내는 것으로 정의한다.

데이터의 양이 점점 증가하고 새로운 형식의 데이터들이 생겨나고, 데이터베이스관리시스텝(RDBMS)가 저장하고 관리하는 데에 한계가 있어 빅데이터의 패러다임이 점점 바뀌고 있다.
빅데이터 특징을 7V로 부르고 있다.

  • Volume (규모) : 데이터의 크기(저장되는 물리적 데이터양)
  • Variety (다양성) : 다양한 종류의 데이터를 수용하는 특성
  • Velocity (속도) : 데이터가 얼마나 빠르게 처리/분석되는지에 대한 특성
  • Veracity (진실성) : 데이터의 신뢰성과 타당성에 관한 특성
  • Value (가치) : 빅데이터는 결국 비즈니스나 연구에서 유용한 가치를 이끌어낼 수 있는지
  • Validity (정확성) : 데이터의 정확성을 의미
  • Volatility (휘발성) : 데이터가 얼마나 오래 저장될 수 있고 사용될 수 있을지에 관한 것

빅데이터의 특징은 필요에 따라 계속 추가되고있다. 다만 가치창출이 중점이란건 변함이 없다. 가치창출을 위해 위 특징을 데이터가 가지고 있는지 눈여겨 보아야한다.


빅데이터 처리

빅데이터의 처리는 5단계로 이루어진다.

  • 수집
    • 데이터를 수집하는 단계
    • 정형, 비정형, 반정형 데이터 수집
      *ETL을 활용해 수집(Kafka, Flume, Sqoop, Logstash)
  • 저장
    • 정제된 데이터를 분석하기 위해 저장하는 단계
    • RDB, NoSQL 데이터베이스, Redshift, Druid 등의 도구에 저장
  • 처리
    • 수집한 데이터를 저장하기 위해 필요 없는 데이터, 깨진 데이터를 정리하는 단계
    • 반정형, 비정형 데이터는 분석에 필요한 데이터 외에 필요 없는 부분을 제거하는 단계가 필요함
      *맵리듀싱, 프로세싱 활용 (일괄처리, 실시간처리, 분산병렬처리)
  • 분석
    • 저장한 데이터를 의미 있는 지표로 분석하는 단계
    • 의사결정권자나 이용자가 사용할 수 있는 데이터로 분석하는 단계
  • 시각화
    • 분석한 데이터를 도표로 보여주는 단계
    • 데이터를 이해하기 쉬운 차트로 분석하는 단계

Apache Spark

고속 범용 분산플랫폼이다.
Hadoop처럼 맵리듀스방식으로 데이터를 분산처리하는 것은 같다.
둘의 차이는 데이터를 메모리에 놓냐 or 디스크에 놓고 하냐는 차이다.

하둡은 기본적으로 디스크로부터 map/reduce할 데이터를 불러오고 처리결과도 디스크를 쓴다. 그렇기에 데이터를 읽고 쓰는 속도가 느리다. 하지만 디스트 용량만큼 한번에 처리할 수 있다.

스파크는 메모리로부터 map/reduce 할 데이터를 불러오고 처리결과도 메모리를 쓴다. 그래서 읽고쓰는 속도는 빠르지만 메모리 용량만큼만 데이터를 처리할 수 있다. 죽, 메모리용량보다 큰 데이터를 처리할때는 과부하가 걸릴 수 있다.
인메모리상에서 동작하기에 반복적인 처리가 필요한 작업에서는 하둡보다 빠르다.
인메모리 기반으로 빠르게 처리할 수 있다는 것이 대표적인 스파크의 장점이다.

스파크는 저장소가 아니므로 s3, HDFS 등의 파일시스템과 HBase 분산데이터 베이스와 연동도 가능하다.


Reference