개요
2023.11.10 - Apache Spark 이란에서 Spark의 개념과 특징 정도만 정리했는데, 이 글에서는 Spark의 구성 요소에 대해 정리해두려고 한다.
대개 Spark의 구성 요소라고 함은 위와 같은 그림으로 표현되는 것 같다. 각 요소에 대해 적어둔다.
Spark Core
Apache Spark 프레임워크의 핵심으로, Spark Core에 구축된 구성요소가 요구하는 실행 엔진을 제공한다.
내장 메모리 컴퓨팅과 외부 스토리지 시스템에 저장된 참조 데이터셋을 제공하며, 기본 I/O 함수, 스케쥴링, 모니터링, 장애 복구, 메모리 효율 관리 등을 수행한다.
RDD라고 하는 자료 구조를 사용한다.
Spark SQL
Spark SQL은 SQL과 유사한 방식으로 데이터를 처리하기 위해 명명되었는데, 사용자는 다양한 데이터 소스에서 JSON, Parquet, Hive와 같은 여러 형식의 데이터를 추출/변환/로드한 뒤 임시 쿼리를 실행할 수 있다. 데이터를 다룰 때는 명명된 column으로 정렬된 데이터의 분산 컬렉션인 DataFrame으로 처리한다. (기존에는 SchemaRDD라고 불렸다.)
Spark Streaming
스트리밍 데이터를 처리하기 위한 라이브러리로, 연속적인 데이터 스트림을 분석하는 데 사용한다. 대표적으로 웹 사이트나 서버에서의 로그 데이터 처리가 해당되며 초당 기가바이트를 스트리밍 할 수 있다.
엄밀히 따지면 스트리밍이 아니라 일정 주기마다 데이터를 개별 청크로 분리해 작은 RDD로 처리하는 방식이기 때문에, 실시간이 아니라 거의 실시간 또는 마이크로 배치 방식이라고 할 수 있다.
Spark Streaming은 Amazon Kinesis, Kafka, Flume와 같은 다양한 데이터 소스에 연결할 수 있고, 전체 스트림 데이터를 구현하는 RDD 컬렉션인 Dstream이라는 개념을 이용해 데이터를 처리한다.
MLlib
Machine Learning Library의 약자로, 클러스터를 사용해 대규모 머신 러닝을 처리할 수 있도록 한다. MLlib은 Java, Scala, Python 등에서 호출할 수 있는 low-level의 머신 러닝 라이브러리로, 편하게 사용할 수 있고, 다른 도구나 프레임워크와 용이하게 통합할 수 있다.
GraphX
정점(vertex)과 간선(edge)으로 이루어진 그래프를 처리하는데 사용하는 라이브러리다. GraphX는 그래프 내에 존재하는 삼각형의 수를 확인하거나 PageRank 알고리즘을 적용하는데 유용하다. 이를 통해 연결성, 분포 정도, 평균 경로 길이와 같은 high-level 그래프 측정을 구할 수 있다.
참고 문서
https://www.oreilly.com/library/view/learning-spark-2nd/9781492050032/ch01.html
https://www.knowledgehut.com/tutorials/apache-spark-tutorial/apache-spark-components