바로 이동

Apache Spark란?

Apache Spark는 SQL, 스트리밍, 머신러닝 및 그래프 처리를 위한 기본 제공 모듈이 있는 대규모 데이터 처리용 통합 분석 엔진입니다. Spark는 클라우드의 Apache Hadoop, Apache Mesos, Kubernetes에서 자체적으로 실행될 수 있으며 다양한 데이터 소스에 대해 실행될 수 있습니다.

한 가지 일반적인 질문은 Apache Spark와 Apache Hadoop을 언제 사용하느냐는 것입니다. 이 둘은 모두 오늘날 시장에서 가장 눈에 띄는 분산 시스템에 속하며, 유사성 높은 Apache 최상위 프로젝트로서 함께 사용되는 경우가 많습니다. Hadoop은 주로 디스크 사용량이 많고 맵리듀스 패러다임을 사용하는 작업에 사용됩니다. Spark는 더 유연하지만 대체로 더 많은 비용이 드는 인메모리 처리 아키텍처입니다. 각 기능을 이해하고 있으면 언제 어떤 것을 구현할지 결정하는 데 도움이 됩니다. 

Google Cloud에서 Dataproc을 사용하여 Apache Spark 클러스터를 보다 단순하고, 통합되고, 비용 효율적인 방식으로 실행하는 방법을 알아보세요. 

Apache Spark 개요

Spark 생태계에는 다음과 같은 5가지 주요 구성요소가 포함됩니다.

1. Spark Core는 범용 분산 데이터 처리 엔진이며 그 위에 SQL, 스트림 처리, 머신러닝, 그래프 계산을 위한 라이브러리가 있습니다. 이 모든 라이브러리를 애플리케이션에서 함께 사용할 수 있습니다. Spark Core는 전체 프로젝트의 기반으로서 분산된 작업 디스패치, 예약, 기본 I/O 기능을 제공합니다.

2. Spark SQL은 구조화된 데이터를 사용하는 작업을 위한 Spark 모듈이며 다양한 데이터 소스에 액세스하는 일반적인 방법을 지원합니다. Spark SQL에서는 SQL이나 친숙한 DataFrame API를 사용하여 Spark 프로그램 내의 구조화된 데이터를 쿼리할 수 있습니다. Spark SQL은 HiveQL 구문을 지원하며 기존 Apache Hive 웨어하우스에 대한 액세스를 허용합니다. 서버 모드에서는 자바 데이터베이스 연결 또는 개방형 데이터베이스 연결을 통해 표준 연결을 제공합니다.

3. Spark Streaming은 확장 가능하고 내결함성 있는 스트리밍 솔루션을 쉽게 빌드할 수 있게 해줍니다. 또한 스트림 처리에 Spark 언어 통합 API를 활용하므로 일괄 작업과 동일한 방식으로 스트리밍 작업을 작성할 수 있습니다. Spark Streaming은 자바, Scala, Python을 지원하며 즉시 사용 가능한 스테이트풀(Stateful), Exactly-Once(정확히 1회만 실행) 시맨틱스를 갖추고 있습니다. 

4. MLlib는 실용적인 ML을 확장 가능하고 쉽게 만드는 도구를 갖춘 Spark 확장형 머신러닝 라이브러리입니다. MLlib에는 분류, 회귀분석, 추천 및 클러스터링 등 일반적인 학습 알고리즘이 많이 포함되어 있습니다. 또한 기능 변환, ML 파이프라인 구성, 모델 평가, 분산 선형 대수, 통계를 포함한 워크플로와 기타 유틸리티도 포함되어 있습니다. 

5. GraphX는 그래프와 그래프 병렬 계산을 위한 Spark API로서 유연성이 뛰어나며 그래프와 컬렉션 모두에서 원활하게 작동합니다. 또한 추출/변환/로드와 탐색 분석, 그리고 반복적 그래프 계산이 한 시스템 내에 통합되어 있습니다. GraphX에는 매우 유연한 API 외에도 다양한 그래프 알고리즘이 포함되어 있습니다. 성능 면에서는 가장 빠른 그래프 시스템과 필적하는 동시에 Spark의 유연성, 내결함성, 사용 편의성도 유지합니다.

Apache Spark의 이점

속도

Hadoop 맵리듀스보다 100배 빠른 속도로 워크로드를 실행할 수 있습니다. Spark는 최첨단 DAG(Directed Acyclic Graph) 스케줄러, 쿼리 최적화 도구, 물리적 실행 엔진을 사용하여 일괄 처리 데이터와 스트리밍 데이터 모두에 대해 고성능을 달성합니다.

사용 편의성

Spark는 병렬 앱을 쉽게 빌드할 수 있게 해주는 80개가 넘는 상위 수준 연산자를 제공합니다. Scala, Python, R, SQL 셸에서 대화형으로 Spark를 사용하여 애플리케이션을 빠르게 작성할 수 있습니다.

보편성

Spark는 SQL, DataFrame, 머신러닝용 MLlib, GraphX, Spark Streaming을 비롯한 다양한 라이브러리를 지원합니다. 이러한 라이브러리를 동일한 애플리케이션에서 원활하게 결합할 수 있습니다.

오픈소스 프레임워크 혁신

Spark는 독점적 솔루션을 사용하여 작업하는 내부 팀보다 더욱 빠르고 효과적으로 새로운 개념과 기능을 도입하기 위해 통합된 글로벌 커뮤니티의 지원을 받습니다. 오픈소스 커뮤니티의 집단적 힘은 더 많은 아이디어와 더 빠른 개발은 물론이고, 문제 발생시 문제 해결도 지원하므로 TTM(time to market)이 단축됩니다. 

SQL 전용 엔진 대신 Spark를 선택해야 하는 이유

Apache Spark는 Hadoop 클러스터 또는 독립 실행형 모드로 배포할 수 있는 빠른 범용 클러스터 컴퓨팅 엔진입니다. Spark를 사용하면 프로그래머는 개발자, 데이터 과학자, 통계 경험이 있는 고급 비즈니스 담당자가 액세스할 수 있도록 자바, Scala, Python, R, SQL로 애플리케이션을 빠르게 작성할 수 있습니다. Spark SQL을 사용하면 사용자가 모든 데이터 소스에 연결하고 이를 SQL 클라이언트에서 사용할 수 있는 테이블로 표현할 수 있습니다. 또한 Spark에서는 대화형 머신러닝 알고리즘이 쉽게 구현됩니다.

Apache Impala, Apache Hive, Apache Drill 같은 SQL 전용 엔진을 사용하는 사용자는 여러 데이터베이스에 저장된 데이터를 쿼리할 때 SQL 또는 SQL 유사 언어만 사용할 수 있습니다. 이는 Spark에 비해 프레임워크가 작다는 것을 의미합니다.

기업에서 Spark를 사용하는 방식

많은 기업이 Spark를 사용하여 구조화 또는 구조화되지 않은 대량의 실시간 또는 아카이브 데이터를 처리 및 분석하는 까다롭고 계산 집약적인 작업을 간소화하고 있습니다. 또한 사용자는 Spark를 사용하여 머신러닝 및 그래프 알고리즘 등의 복잡한 관련 기능을 원활하게 통합할 수 있습니다.

데이터 엔지니어

데이터 엔지니어는 더 많은 언어로 프로그래밍할 수 있는 옵션을 갖춘 Spark를 사용하여 데이터 처리 작업을 코딩하고 빌드합니다.

데이터 과학자

데이터 과학자는 GPU와 함께 Spark를 사용하여 보다 뛰어난 분석 및 ML 환경을 이용할 수 있습니다. 익숙한 언어로 더 많은 양의 데이터를 더 빠르게 처리할 수 있으므로 혁신을 앞당길 수 있습니다.

Dataproc은 빠르고 사용하기 쉬운 완전 관리형 클라우드 서비스로서 Apache Spark 및 Apache Hadoop 클러스터를 더욱 간단하고 통합되었으며 더 비용 효율적인 방식으로 실행합니다. Dataproc은 중요한 보안, 거버넌스, 지원 요구사항을 충족하는 다른 Google Cloud 서비스와 완전히 통합되므로 데이터 처리, 분석, 머신러닝을 위한 완벽하고 강력한 플랫폼을 얻을 수 있습니다.

BigQuery, Notebooks, Dataflow와 같은 Google Cloud의 빅데이터 분석 도구도 상황에 맞는 다양한 애플리케이션과 새로운 분석 솔루션을 빌드하고 데이터를 활용 가능한 분석 정보로 전환하는 데 도움이 될 수 있습니다.