728x90

Spark is still one of the most popular tools for analyzing large data sets.

 

spark는 빅데이터 분산처리 엔진이다

 - 대량 의 정형 또는 비정형의 데이터 집합조차 포함한 데이터로부터 가치를 추출하고 결과를 분석하는 기술

 

기존에 빅데이터 처리는 대부분 하둡으로 이루어지고 있었는데, 문제는 하둡의 HDFS가 DISK I/O를 기반으로 동작한다는 것에 있었다.

실시간성 데이터에 대한 니즈(NEEDS)가 급격하게 증가하면서, 하둡으로 처리하기에는 속도 측면에서 부적합한 시나리오들이 등장하기 시작하였다.

더 나아가, 컴퓨터 H/W들의 가격이 빠른 속도로 다운되면서, 기존에 고가로 취급되던 메모리를 고용량으로 사용할 수 있게 되었다.

이 때 등장한 것이 아파치 스파크 이다. 스파크는 기본적으로 인메모리 작업이다.

아래에서도 언급하겠지만 속도적인 면에서 스파크는 데이터 실시간 스트리밍 처리라는 니즈를 충족한다.

 

최근에는 하둡과 스파크를 결합한 활용이 큰 흐름이다.

하둡의 Yarn(작업 스케줄링 및 클러스터 리소스 관리를 위한 프레임 워크)위에서 스파크를 얹어서 활용하고 있다.

 

스파크는 sql뿐아니라 spark streaming, MLlib 등을 지원한다.

spark streaming은 kafka와 같은 메시징 큐와 결합하여 확장가능한 스트리밍 서비스를 제공한다.

메시징 큐를 통해 받은 데이터를 spark streaming 내에서 데이터를 분석하여 파일시스템 및 데이터베이스에 적재한다.

사용자 프로그램을 수행하기 위하여, Spark Driver내의 Spark Context가 Job을 task단위로 쪼갠다. Cluste Manager로부터 할당받은 Executor로 task를 넘긴다.

 

스파크가 하둡과 또 다른 점 하나는 “고속"범용 분산 플랫폼이라는 것이다.

하둡은 기본적으로 디스크로부터 맵리듀스할 데이터를 불러오고 처리결과도 디스크에 쓴다. 그래서 속도가 느리지만 디스크 용량만큼 데이터를 한번에 처리할 수 있다.

반면에 스파크는 메모리로부터 맵리듀스할 데이터를 불러오고 처리결과도 메모리에 쓴다. 그래서 속도가 빠르지만 하둡에 비해 처리할 수 있는 데이터양이 많지 않다.(메모리 용량만큼만 데이터 처리) → 반복작업 , 실시간데이터 처리(속도)에서 니즈가 등장하며 스파크 선호

 

위에서 언급한 대로 스파크에서는 sql 같은 쿼리 언어 뿐 아니라 스트림, ML까지 지원하고 있으므로 스파크의 핵심은 “통합"이다.

간단한 데이터 읽기에서부터 SQL 처리, 머신러닝 그리고 스트림 처리에 이르기까지 다양한 데이터 분석 작업을 같은 연산 엔진과 일관성 있는 API로 수행할 수 있도록 설계되어 있다.

 

스파크는 저장소 시스템의 데이터를 연산하는 역할만 수행할 뿐 영구 저장소 역할은 수행하지 않는다. 이는 인메모리 기반이므로 결국 데이터를 영구적으로 저장하기에는 한계가 있기 때문이다.

그 대신 클라우드 기반의 Azure Storage, Amazon S3, Apache Hadoop(분산 파일 시스템), Apache Cassandra(키-벨류 저장소), Apache Kafka(메시지 전달 시스템) 등의 저장소를 지원한다. 스파크는 내부에 데이터를 오랜 시간 저장하지 않으며 특정 저장소 시스템을 선호하지도 않는다.

연구 결과 대부분의 데이터는 여러 저장소 시스템에 혼재되어 저장되고 있다. 데이터 이동은 높은 비용을 유발하므로 스파크는 데이터 저장 위치에 상관없이 처리에 집중하도록 만들어졌다.

 

스파크는 연산 기능에 초점을 맞추면서 아파치 하둡과 같은 기존 빅데이터 플랫폼과 차별화하고 있다.  

하둡은 범용 서버 클러스터 환경에서 저비용 저장 장치를 사용하도록 설계된 하둡 파일 시스템과 컴퓨팅 시스템(MapReduce)을 가지고 있으며 두 시스템은 매우 밀접하게 연관되어 있다. 하둡과 같은 구조에서는 둘 중 하나의 시스템만 단독으로 사용하기 어렵다. 특히 다른 저장소의 데이터에 접근하는 애플리케이션을 개발하기 어렵다.

그러나 스파크는 하둡 저장소와 잘 호환된다. 그리고 연산 노드와 저장소를 별도로 구매할 수 있는 공개형 클라우드 환경이나 스트리밍 애플리케이션이 필요한 환경 등 하둡 아키택처를 사용할 수 없는 환경에서도 스파크가 많이 사용된다.

 

 


참고자료

728x90

+ Recent posts