Spark의 탄생 이전에는 대용량 데이터 처리 = Hadoop의 MapReduce 였습니다. 하지만 디스크 기반의 수행으로 느린 성능을 개선하기 위해 지속적인 노력끝에 지쳐서 다른 대안을 찾게된 MR 단점 개선 프로젝트의 결과물이 Spark
입니다. Spark은 메모리 기반으로 수행됩니다. Apache Spark 공식문서에 따르면 기존의 MapReduce 기반 Hadoop보다 Spark은 100배 이상 빠른 속도가 지원된다고 말합니다. 빠른 성능과 쉬운 사용법 등으로 인해 현재 데이터 처리의 모든 영역은 Spark이 점령했다고 해도 과언이 아닙니다.
Spark은 대용량 데이터처리를 위한 오픈소스 병렬분산처리 플랫폼입니다.
Spark의 공식적인 정의는 다음과 같습니다.
Apache Spark is a unified analytics engine for large-scale data processing
여기서 조금 더 사용성에 있어 의역을 해보면 for large scale은 대용량보다 데이터의 크기에 상관 없이, unified analytics engine 은 종합 선물세트 같은 느낌으로 봐도 됩니다.
쉽게 말하자면 Spark은 데이터를 처리할 일이 있을때 사용하면 매우 빠르고 편리하고 안정적인 도구입니다.
Spark에는 크게 다음과 같은 기능들이 있습니다.
Spark이 동작하기 위한 전반적인 스택 구조는 다음과 같습니다.
Spark이 기동되기 위한 인프라로 자원 분배를 위한 Cluster Manager의 자리입니다.
Spark은 독립적으로 기동할수 있도록 Spark 패키지에 Standalone이라는 클러스터 매니저가 포함되어 있습니다.
이 자리는 Docker 가상화 플랫폼인 Mesos 혹은 Hadoop 종합 플랫폼인 YARN이 올 수도 있습니다.
메모리 기반의 분산 클러스터 컴퓨팅 환경인 Spark 코어가 그 위에 올라갑니다.
Spark 코어를 이용하여 특정 기능에 목적이 맞춰진 다양한 라이브러리가 돌아갑니다. 라이브러리는 위의 Spark의 기능에서 설명한 SparkSQL, Spark Streaming, MLib, GraphX 등이 있습니다.
일반적으로 무언가 처음보는 기술을 접할때 Hello World 출력부터 시작합니다.
이런 첫 예제의 특징은 가장 간단하고, 가장 기본적이고 자주 활용되는 문법이며, 프로그램 및 관련 개발 런타임 환경 테스트가 목적입니다.
Spark에서의 Hello World!가 바로 word count 예제입니다.
단어를 세는 이유는 다음과 같습니다.
여기서 해당 예제는 직접 진행하지 않습니다. 공식문서를 기반으로 간단하게 따라해보는 것으로 충분합니다. 해당 부분에 대해서는 공식문서의 내용을 딱히 내용을 자세히 읽을 필요도 없습니다. 복붙만 해보고 이런거다 느끼면 해당 튜토리얼의 의의는 충분하다고 생각합니다.
Reference