오픈 소스 클러스터 컴퓨팅 프레임워크인 아파치 스파크에 대해 알아보고자 합니다.
아파치 스파크 : 대규모 데이터 처리 프레임워크
아파치 스파크는 대규모 데이터 처리를 위한 오픈 소스 클러스터 컴퓨팅 프레임워크입니다.
주요 특징 중 하나는 메모리 기반의 빠른 데이터 처리입니다. 이를 통해 대용량 데이터를 효율적으로 처리할 수 있습니다. 또한 다양한 작업을 지원하며, 배치 처리뿐만 아니라 스트리밍 처리, 머신 러닝, 그래프 처리 등 다양한 영역에서 활용됩니다.
등장배경과 혁신 그리고 맵리듀스와 관계
아파치 스파크의 등장배경을 이해하기 위해서는 기존의 데이터 처리 시스템에서의 한계를 살펴볼 필요가 있습니다.
기존의 데이터 처리 시스템에는 MapReduce 같은 배치 기반의 프레임워크가 주로 사용되었습니다.
하지만 MapReduce는 디스크 기반의 입출력이 많아 속도가 느리고, 반복적인 계산이 필요한 작업들에서 비효율적이었습니다.
이에 대응하기 위해서 등장한 것이 스파크입니다. 스파크는 메모리 기반의 데이터 처리를 통해 빠른 속도와 효율성을 제공합니다. 기존의 MapReduce보다 더 빠른 처리 속도를 가지며 데이터를 메모리에 유지하므로 반복적인 작업에 있어서도 훨씬 빠르게 처리할 수 있습니다. 또한 스파크는 다양한 작업을 지원하는데, 배치 처리뿐만 아니라 스트리밍 처리, 머신러닝, 그래프 처리 등 다양한 분야에서 활용됩니다.
이런 기술적인 특징과 성능상의 장점으로 인해 스파크는 대규모 데이터를 다루는데 필수적인 도구로 자리매김하게 되었습니다.
맵리듀스
위에서 언급되는 MapReduce(맵리듀스)는 대규모 데이터셋을 병렬 및 분산 처리하기 위한 프로그래밍 모델입니다.
구글에서 개발된 이 모델은 대용량 데이터셋을 여러 컴퓨터에 분산시키고, 각 컴퓨터에서 동시에 작업을 수행하여 처리 속도와 효율성을 높이는 방식을 채택하였습니다.
이 맵리듀스 프레임워크는 함수형 프로그래밍에서 일반적으로 사용되는 Map과 Reduce라는 함수 기반으로 주로 구성되었습니다. 현재 맵리듀스는 자바와 C++ 그리고 기타 언어에서 적용이 가능하도록 작성되어 있습니다. 대표적으로는 아파치 하둡에서 오픈 소스 소프트웨어로 적용되고 있습니다.
스파크의 특징과 이점
다시 돌아와서 아파치 스파크는 인메모리상에서 동작하기 때문에 반복적인 처리가 필요한 작업에서 속도가 하둡보다 최소 1000배 이상 빠릅니다. 이를 통해 데이터 실시간 스트리밍 처리라는 니즈를 충족하게 되었고 빅데이터 프레임워크 시장에서 빠르게 영향력을 갖추어나가고 있습니다.
- 메모리 기반 처리
데이터를 메모리에 유지하여 빠른 속도와 성능을 제공 - 다양한 작업 지원
배치 처리, 스트리밍 처리, 머신 러닝, 그래프 처리 등 다양한 영역에서 활용 - 유연한 언어 및 라이브러리 지원
다양한 언어를 지원하며, SQL, 스트리밍, 머신 러닝 등 다양한 라이브러리를 제공
하둡과의 연계
최근에는 경쟁 관계를 넘어서 '하둡 + 스파크' 둘의 연계가 하나의 큰 흐름으로 자리 잡고 있습니다.
하둡의 YARN 위에 스파크를 더해서 실시간성이 필요한 데이터는 스파크로 처리하는 구성형태가 나타나고 있고,
여러 기업들과 연구단체에서 이와 같은 아키텍처를 구성하고 있습니다.
다양성
이미 위에서 언급하였듯 스파크는 Scala, JAVA, Pyhon 등의 다양한 언어 기반들에 고수준 API를 사용 가능합니다.
여기에 더해서 SQL의 기능을 담당하는 Spark SQL, 실시간 데이터 처리를 지원하는 Spark Streaming, 여러 머신러닝 기법을 지원하는 MLlib 등 다양하고 넓은 범위의 라이브러리가 있으며 지속적으로 확장하고 있습니다.
MLlib의 활용
최근에는 MLlib가 크게 각광받고 있어, 금융권 등 국내의 데이터 실시간 분석에서 스파크 비율이 압도적으로 높은 추세입니다.
다음장부터는 조금씩 더 디테일한 부분들을 다루어보겠습니다.
'빅데이터 > Apache Spark' 카테고리의 다른 글
Spark RDD ? (0) | 2024.02.08 |
---|