반응형

 

데이터를 다루는 입장에서는 데이터 처리 속도를 신경 쓰지 않을 수 없다. 최근 운영 중인 시스템의 처리 속도를 개선하기 위해 다양한 방법을 고민하던 중,  Spark에 대한 관심이 생겨서, 공부한 내용을 정리해 보기로 한다. 


Introduction

Apache Spark란?

  • Apache Spark는 빅데이터 처리를 위한 오픈소스 분산, 통합 컴퓨팅 시스템이다. 

[통합]

  • Apache Spark 전에는 각기 다른 시스템으로 구성된 데이터의 흐름(SQL 처리, 데이터 스트리밍, 데이터 분석)을  개발자가 직접 조합하여 Application을 만들었다.
  •  Apache Spark 내에서는 다양한 데이터 흐름을 처리하는 시스템 및 API들을 일관성있는 API로 통합하여, 개발자들이 더 쉽고 효율적인 코드를 개발할 수 있도록 하였다. 

[분산]

  • 많은 데이터 분석가 & 데이터 엔지니어들이 Apache Spark에 집중하는 이유는 분산 처리를 이용한 빠른 데이터 처리 때문이다. Apache Spark는 같은 데이터 분산 처리 플랫폼인 Hadoop을 개선한 플랫폼인데, Hadoop과의 차이를 통해서 Spark의 특징을 살펴보자. 
  Hadoop Spark
목적 데이터 분산 처리 & 저장 데이터 분산 처리 & 분석
데이터 처리 모델 HDFS를 사용한 데이터 저장
MapReduce 기반 분산 처리 모델
인메모리 기반 분산 처리 모델
저장소 HDFS HDFS, S3, Elastic Search 등
속도 작은 규모의 데이터셋의 경우 Hadoop이 더 빠를 수 있음
(Spark 메모리 Load 시간 때문)
반복적인 처리가 필요한 작업에서는 Hadoop의 최대 100배 빠름
호환성 별도의 Package와 연계해야함 언어 : Python, R, Java, Scala, SQL 등 지원
분석 : MLlib, GraphX API 등 지원
  • 대체적으로 Spark가 더 좋은 플랫폼이구나라는 생각을 할 수 있지만, Hadoop이 Spark에 비해 갖는 장점이 있는데, 바로 데이터 보존에 대한 안정성이다. Spark는 인메모리 기반의 데이터 처리를 진행하기 때문에, 서버 다운 등의 장애에 취약하다. 따라서, 최근(?)에는 Hadoop과 Spark를 같이 사용하는 경우가 많다.

 

+ Recent posts