topics Apache Spark Apache Spark란 무엇인가요?
IBM의 Apache Spark 솔루션 살펴보기 AI 업데이트 구독
구름 픽토그램, 파이 차트, 그래프 픽토그램이 콜라주된 일러스트
Apache Spark란 무엇인가요?

Apache Spark는 머신 러닝 및 AI 애플리케이션을 위한 초고속 오픈 소스 데이터 처리 엔진으로, 빅데이터 분야에서 가장 큰 오픈 소스 커뮤니티의 지원을 받고 있습니다.

Apache Spark(Spark)는 대규모 데이터 세트를 쉽게 처리할 수 있으며, 빠르고 범용적인 클러스터링 시스템으로 PySpark에 매우 적합합니다. 빅 데이터, 특히 스트리밍 데이터, 그래프 데이터, 분석, 머신 러닝, 대규모 데이터 처리 및 인공 지능(AI) 애플리케이션에 필요한 계산 속도, 확장성 및 프로그래밍 기능을 제공하도록 설계되었습니다.

Spark의 분석 엔진은 소규모 워크로드를 위한 Hadoop(ibm.com 외부 링크)과 같은 일부 대안보다 10~100배 빠르게 데이터를 처리합니다. 내장된 병렬성과 내결함성을 통해 대규모 컴퓨터 클러스터에 처리 워크플로를 분산하여 확장됩니다. 여기에는 Scala, Java, Python 및 R을 포함하여 데이터 분석가와 데이터 과학자 사이에서 인기 있는 프로그래밍 언어용 API도 포함되어 있습니다.

Spark는 Apache Hadoop, 특히 Hadoop의 기본 데이터 처리 구성 요소인 Hadoop MapReduce와 비교되는 경우가 많습니다. Spark와 MapReduce의 가장 큰 차이점은 Spark는 디스크에 쓰거나 디스크에서 읽는 대신, 후속 단계를 위해 데이터를 메모리에서 처리하고 보관하므로 처리 속도가 훨씬 빠르다는 점입니다. (Spark가 Hadoop과 어떻게 다르고 어떤 점을 보완하는지에 대한 자세한 내용은 이 문서의 다른 부분에서 확인할 수 있습니다.)

Spark는 2009년 UC Berkeley의 AMPLab에서 개발되었습니다. 현재 Apache Software Foundation에서 관리하고 있으며 1,000명 이상의 기여자가 있는 빅데이터 분야에서 가장 큰 오픈 소스 커뮤니티를 자랑합니다. 또한 여러 상용 빅데이터 제품의 핵심 구성 요소로 포함되어 있습니다.

엔터프라이즈용 생성형 AI 및 ML

생성형 AI의 주요 이점과 조직이 생성형 AI와 머신 러닝을 비즈니스에 통합할 수 있는 방법을 알아보세요.

eBook

AI 데이터 저장소에 관한 eBook 등록하기

Apache Spark 작동 방식

Apache Spark에는 계층적 기본/보조 아키텍처가 있습니다. Spark Driver는 보조 노드를 관리하고 애플리케이션 클라이언트에 데이터 결과를 전달하는 클러스터 관리자를 제어하는 기본 노드입니다.

Spark Driver는 애플리케이션 코드를 기반으로 SparkContext를 생성합니다. Spark는 클러스터 관리자(Spark의 독립형 클러스터 관리자 또는 Hadoop YARN, Kubernetes 또는 MesOS와 같은 기타 클러스터 관리자)와 함께 작동하여 노드 전체에 실행을 분산하고 모니터링합니다. 또한 Spark의 놀라운 처리 속도의 핵심인 탄력적인 분산 데이터 세트(RDD)를 생성합니다.

탄력적인 분산 데이터 세트(RDD)


탄력적인 분산 데이터 세트(RDD)는 클러스터의 여러 노드에 분산되어 병렬로 작업할 수 있는 내결함성 요소 모음입니다. RDD는 Apache Spark의 기본 구조입니다.

Spark는 데이터 소스를 참조하거나 처리를 위해 데이터를 RDD에 캐싱하는 SparkContext 병렬화 방법을 사용하여 기존 컬렉션을 병렬화하여 데이터를 로드합니다. 데이터가 RDD에 로드되면 Spark는 메모리에서 RDD에 대한 변환 및 작업을 수행하는데, 이것이 바로 Spark의 속도 핵심입니다. 또한 시스템의 메모리가 부족하거나 사용자가 지속성을 위해 디스크에 데이터를 쓰기로 결정하지 않는 한 Spark는 데이터를 메모리에 저장합니다.

RDD의 각 데이터 세트는 논리적 파티션으로 나뉘며, 클러스터의 다른 노드에서 계산될 수 있습니다. 그리고 사용자는 변환과 작업이라는 두 가지 유형의 RDD 작업을 수행할 수 있습니다변환은 새로운 RDD를 생성하기 위해 적용되는 작업입니다작업은 Apache Spark에 계산을 적용하고 결과를 드라이버로 다시 전달하도록 지시하는 데 사용됩니다.

Spark는 RDD에서 다양한 작업과 변환을 지원합니다. 이 배포는 Spark에서 수행되므로 사용자는 올바른 배포를 계산하는 것에 대해 걱정할 필요가 없습니다.

방향성 비순환 그래프(DAG)


MapReduce의 2단계 실행 프로세스와 달리 Spark는 방향성 비순환 그래프(DAG)를 만들어 클러스터 전체에서 작업자 노드의 작업 및 오케스트레이션을 예약합니다. Spark가 작업 실행 프로세스에서 데이터를 작동하고 변환할 때 DAG 스케줄러는 클러스터 전체에서 작업자 노드를 오케스트레이션하여 효율성을 촉진합니다. 이러한 작업 추적은 기록된 작업을 이전 상태의 데이터에 다시 적용하므로 내결함성을 가능하게 합니다.

DataFrames 및 Datasets


RDD 외에도 Spark는 DataFrames 및 Datasets라는 두 가지 다른 데이터 형식을 처리합니다.

DataFrames는 가장 일반적인 구조화된 애플리케이션 프로그래밍 인터페이스(API)이며 행과 열이 있는 데이터 테이블을 나타냅니다. RDD는 Spark의 중요한 기능이었지만 현재는 유지 관리 모드에 있습니다. Spark의 머신러닝 라이브러리(MLlib)의 인기로 인해 DataFrames는 MLlib(확장성을 위한 머신 러닝 알고리즘 세트와 기능 선택 및 ML 파이프라인 구축을 위한 도구 세트)의 기본 API로 주도적인 역할을 맡게 되었습니다. DataFrames는 Scala, Java, Python 및 R과 같은 다양한 언어에서 균일성을 제공하므로 MLlib API를 사용할 때 이 점에 유의해야 합니다.

Datasets는 형식이 안전한 객체 지향 프로그래밍 인터페이스를 제공하는 DataFrames의 확장입니다. Datasets는 기본적으로 DataFrames와 달리 강력한 형식의 JVM 개체 모음입니다.

Spark SQL을 사용하면 DataFrames 및 Apache Hive와 같은 SQL 데이터 저장소에서 데이터를 쿼리할 수 있습니다. Spark SQL Query는 다른 언어 내에서 실행될 때 DataFrame 또는 Dataset를 반환합니다.

Spark Core


Spark Core는 모든 병렬 데이터 처리의 기반이며 스케줄링, 최적화, RDD 및 데이터 추상화를 처리합니다. Spark Core는 Spark 라이브러리, Spark SQL, Spark Streaming, MLlib 머신 러닝 라이브러리 및 GraphX 그래프 데이터 처리를 위한 기능적 기반을 제공합니다. Spark Core 및 클러스터 관리자는 Spark 클러스터에 데이터를 배포하고 추상화합니다. 이러한 배포 및 추상화는 빅 데이터를 매우 빠르고 사용자 친화적으로 처리합니다.

Spark API


Spark에는 가장 광범위한 사용자에게 Spark의 강력한 기능을 제공하기 위한 다양한 애플리케이션 프로그래밍 인터페이스(API)가 포함되어 있습니다. Spark SQL을 사용하면 관계형 방식으로 RDD 데이터와 상호 작용할 수 있습니다. Spark에는 Scala, Java, Python 및 R에 대해 잘 문서화된 API도 있습니다. Spark의 각 언어 API에는 데이터를 처리하는 방법에 대한 특정 뉘앙스가 있습니다. RDD, DataFrames 및 Datasets는 각 언어 API에서 사용할 수 있습니다. Spark는 다양한 언어에 대한 API를 통해 개발, 데이터 과학, 데이터 엔지니어링 및 통계 분야의 배경을 가진 다양한 그룹의 사람들이 빅 데이터 처리에 액세스할 수 있도록 합니다.

Apache Spark의 장점 

Spark는 다양한 방식으로 개발 및 운영 속도를 높입니다. Spark는 팀에 다음과 같은 이점을 제공합니다.  

  • 앱 개발 가속화: MLlib와 GraphX가 지원하는 Apache Spark의 스트리밍 및 SQL 프로그래밍 모델을 사용하면 머닝 러신 및 그래프 분석을 활용하는 앱을 더 쉽게 구축할 수 있습니다.

  • 더 빠른 혁신API는 반정형 데이터를 조작하고 데이터를 변환할 때 사용 편의성을 제공합니다.  

  • 개방형 기술로 최적화: OpenPOWER Foundation은 GPU, CAPI 플래시, RDMA, FPGA 가속화 및 머신 러닝 혁신을 통해 Apache Spark 워크로드의 성능을 최적화합니다.

  • 더 빠른 처리: Spark는 고급 인메모리 컴퓨팅 엔진과 디스크 데이터 스토리지 덕분에 소규모 워크로드를 Hadoop보다 100배 빠르게 처리합니다(ibm.com 외부 링크).

  • 메모리 액세스 속도 향상: Spark를 사용하여 데이터 처리를 위한 하나의 대용량 메모리 공간을 만들 수 있어 고급 사용자가 Python, R 및 Spark SQL을 사용하는 인터페이스를 통해 데이터에 액세스할 수 있습니다.

Apache Spark 및 머신 러닝

Spark에는 머신 러닝, 인공 지능(AI) 및 스트림 처리 기능을 확장하는 다양한 라이브러리가 있습니다.

Apache Spark MLlib

 

Apache Spark의 중요한 기능 중 하나는 Spark MLlib에서 사용할 수 있는 머신 러닝 기능입니다. Apache Spark MLlib는 분류 및 회귀, 협업 필터링, 클러스터링, 분산 선형 대수, 결정 트리, 랜덤 포레스트, 그래디언트 부스티드 트리, 빈발 패턴 마이닝, 평가 메트릭 및 통계에 즉시 사용 가능한 솔루션을 제공합니다. Spark가 처리할 수 있는 다양한 데이터 유형과 결합된 MLlib의 기능 덕분에 Apache Spark는 빅데이터에 필수적인 도구가 되었습니다.

Spark GraphX

 

API 기능 외에도 Spark에는 그래프 문제를 해결하도록 설계되어 새롭게 추가된 Spark GraphX가 있습니다. GraphX는 그래프 및 그래프 병렬 컴퓨팅을 위해 RDD를 확장하는 그래프 추상화입니다. Spark GraphX는 상호 연결 정보 또는 소셜 네트워크와 같이 얽혀 있는 연결 정보를 저장하는 그래프 데이터베이스와 통합됩니다.

Spark Streaming

 

Spark Streaming은 라이브 데이터 스트림의 확장 가능한 내결함성 처리를 지원하는 핵심 Spark API를 확장한 것입니다. Spark Streaming은 데이터를 처리할 때 Spark의 머신 러닝 및 그래프 처리 알고리즘을 사용하여 실시간 스트리밍 분석을 위한 파일 시스템, 데이터베이스 및 라이브 대시보드에 데이터를 제공합니다. Spark SQL 엔진을 기반으로 구축된 Spark Streaming은 스트리밍 데이터를 더 빠르게 처리하는 증분 배치 처리도 허용합니다.

관련 링크

Hadoop

빅데이터 분석

Spark와 Apache Hadoop 및 MapReduce의 비교

"Spark 대 Hadoop"은 웹에서 자주 검색되는 용어이지만, 위에서 언급했듯이 Spark는 Hadoop, 특히 Hadoop의 기본 데이터 처리 구성 요소인 MapReduce를 개선한 것입니다. 실제로 Spark는 MapReduce 프레임워크를 기반으로 구축되었으며 오늘날 대부분의 Hadoop 배포판에는 Spark가 포함되어 있습니다.

Spark와 마찬가지로 MapReduce를 사용하면 프로그래머가 대규모 컴퓨터 클러스터에서 데이터 집합의 일부를 병렬로 처리하여 대규모 데이터 집합을 더 빠르게 처리하는 애플리케이션을 작성할 수 있습니다. 하지만 MapReduce는 디스크에서 데이터를 처리하기 때문에 읽기 및 쓰기 시간이 추가되어 처리 속도가 느려지는 반면, Spark는 메모리에서 계산을 수행하므로 훨씬 빠릅니다. 그 결과 Spark는 MapReduce보다 최대 100배 빠르게 데이터를 처리할 수 있습니다. 

Spark는 여러 언어에 대한 기본 제공 API를 갖추고 있어 프로그래밍하기 어렵기로 유명한 MapReduce보다 개발자가 더 실용적이고 쉽게 접근할 수 있습니다. MapReduce와 달리 Spark는 Hadoop의 리소스 관리 및 작업 스케줄링 프레임워크인 YARN을 사용하여 Hadoop 클러스터에서 스트림 처리 애플리케이션을 실행할 수 있습니다. 위에서 언급했듯이 Spark는 MLlib, GraphX 및 SparkSQL의 기능을 추가합니다. 그리고 Spark는 Apache Kafka를 포함하여 Hadoop 애플리케이션 외부의 다른 데이터 소스에서 가져온 데이터를 처리할 수 있습니다.

그렇지 않으면 Spark는 Hadoop과 호환되며 Hadoop을 보완합니다. 이는 HDFS(Hadoop 분산 파일 시스템), HBase(HDFS에서 실행되는 비관계형 데이터베이스), Apache Cassandra(HDFS의 대안인 NoSQL), Hive(Hadoop 기반 데이터 웨어하우스)의 데이터를 포함한 Hadoop 데이터를 처리할 수 있습니다.

관련 솔루션
IBM Analytics Engine

Analytics Engine은 분석 애플리케이션을 생성하기 위해 Apache Spark와 Apache Hadoop을 결합한 서비스입니다.

IBM Analytics Engine 살펴보기
IBM Watson Studio

클라우드 환경 전반에서 신뢰를 구축하고 AI를 확장하세요. 데이터 과학자, 개발자 및 분석가가 AI 모델을 구축, 실행 및 관리하고 의사 결정을 최적화할 수 있도록 지원합니다.

IBM Watson Studio 알아보기
IBM Power의 Apache Spark

매우 빠른 대규모 데이터 처리에 최적화된 오픈 소스 클러스터 컴퓨팅 프레임워크를 활용하세요.

IBM Power의 Apache Spark 살펴보기
IBM Spectrum Conductor

온프레미스와 클라우드 모두에서 멀티테넌트 엔터프라이즈 환경을 위한 IBM Spectrum Conductor 및 기타 서비스를 자신 있게 배포하세요.

IBM Spectrum Conductor 살펴보기
리소스 Apache Spark를 사용한 빅 데이터 분석 살펴보기

Spark가 대량의 실시간 데이터를 처리하는 까다롭고 계산 집약적인 작업을 간소화하는 데 어떻게 도움이 되는지 알아보세요.

Hadoop과 Spark의 차이점은 무엇인가요?

Hadoop과 Spark의 각 아키텍처에 대해 알아보고 이러한 빅 데이터 프레임워크가 다양한 시나리오에서 어떻게 비교되는지 알아보세요.

엔터프라이즈용 생성형 AI 및 ML

생성형 AI의 주요 이점과 조직이 생성형 AI와 머신 러닝을 비즈니스에 통합할 수 있는 방법을 알아보세요.

개발자가 하나 이상의 작업을 완료하기 위해 따를 수 있는 자세한 단계 확인하기

각 튜토리얼은 개발자가 프로젝트에서 기술을 사용하는 방법을 배우는 데 도움이 되는 실습 지침을 제공합니다.

레거시 애플리케이션을 Apache Spark로 마이그레이션하기

Apache Spark로 핵심 시스템을 혁신하는 방법을 알아보세요. 민첩성, 성능 및 더 광범위한 에코시스템에 대한 액세스를 확보하세요.

다음 단계 안내

오픈 데이터 레이크하우스 아키텍처를 기반으로 특별 제작된 데이터 저장소인 IBM watsonx.data를 통해 어디서나 모든 데이터에 대한 AI 워크로드를 확장할 수 있습니다.

watsonx.data 살펴보기 라이브 데모 예약하기