Apache Spark는 SQL, 스트리밍, 머신러닝 및 그래프 처리를 위한 기본 제공 모듈이 있는 대규모 데이터 처리용 통합 분석 엔진이다. Spark는 클라우드의 Apache Hadoop, Kubernetes 등에서 자체적으로 수행될 수 있다.
구성요소
Spark Core
범용 분산 데이터 처리 엔진이다. 그 위에 SQL, 스트림 처리, 머신러닝, 그래프 계산을 위한 라이브러리 등이 있다. 이 모든 라이브러리를 애플리케이션과 함께 사용할 수 있다.
Spark SQL
구조화된 데이터를 사용하는 작업을 위한 스파크 모듈이며 다양한 데이터 소스에 액세스하는 일반적인 방법을 지원한다. SQL이나 친숙한 DataFrame API를 사용하여 Spark 프로그램 내의 구조화된 데이터를 쿼리할 수 있다. Spark SQL은 HiveQL 구문을 지원하며 기존 Apache Hive 웨어하우스에 대한 액세스를 허용한다. 서버 모드에서는 자바 데이터베이스 연결 또는 개방형 데이터 베이스 연결을 통해 표준 연결을 제공한다.
Spark Streaming
확장 가능하고 내결함성 있는 스트리밍 솔루션을 쉽게 빌드할 수 있게 해준다. 스트림 처리에 Spark 언어 통합 API를 활용하므로 일괄 작업과 동일한 방식으로 스트리밍을 작성할 수 있다. Spark Streaming은 자바, Scala, Python을 지원하며 즉시 사용 가능한 스테이트풀(Stateful), Exactly-Once(정확히 1회만 실행) 시맨틱스를 갖추고 있다.
MLlib
실용적인 ML을 확장 가능하고 쉽게 만드는 도구를 갖춘 Spark 확장형 머신러닝 라이브러리다. 분류, 회귀분석, 추천 및 클러스터링 등 일반적인 학습 알고리즘이 많이 포함되어 있다. 또한 기능 변환, ML 파이프라인 구성, 모델 평가, 분산 선형 대수, 통계를 포함한 워크플로와 기타 유틸리티도 포함되 어 있다.
GraphX
그래프와 그래프 병렬 계산을 위한 Spark API로서 유연성이 뛰어나며 그래프와 컬렉션 모두에서 원활하게 작동한다. 추출/변환/로드와 탐색 분석, 그리고 반복적 그래프 계산이 한 시스템 내에 통합되어 있다. GraphX에는 매우 유연한 API 외에도 다양한 그래프 알고리즘이 포함되어 있다. 성능 면에서는 가장 빠른 그래프 시스템과 필적하는 동시에 Spark의 유연성, 내결함성, 사용 편의성도 유지한다.
Spark 이점
속도
Hadoop 맵 리듀스보다 100배 빠른 속도로 워크로드를 실행할 수 있다. Spark는 최첨단 DAG(Directed Acyclic Graph) 스케줄러, 쿼리 최적화 도구, 물리적 실행 엔진을 사용하여 일괄 처리 데이터와 스트리밍 데이터 모두에 대해 고성능을 달성한다.
사용 편의성
병렬 앱을 쉽게 빌드할 수 있게 해주는 80개가 넘는 상위 수준 연산자를 제공한다. Scala, Python, R, SQL shell에서 대화형으로 Spark를 사용하여 애플리케이션을 빠르게 작성할 수 있다.
보편성
Spark는 SQL, DataFrame, 머신러닝용 MLlib, GraphX, Spark Streaming을 비롯한 다양한 라이브러리를 지원한다. 이러한 라이브러리를 동일한 애플리케이션에서 원활하게 결합할 수 있다.
오픈소스 프레임워크 혁신
독점적 솔루션을 사용하여 작업하는 내부 팀보다 더욱 빠르고 효과적으로 새로운 개념과 기능을 도입하기 위해 통합된 글로벌 커뮤니티의 지원을 받는다. 오픈소스 커뮤니티의 집단적 힘은 더 많은 아이디어와 더 빠른 개발은 물론, 문제 발생시 문제 해결도 지원하므로 TTM(time to market)이 단축된다.
출처
| [Apache Spark란? | Google Cloud](https://cloud.google.com/learn/what-is-apache-spark?hl=ko) |