Spark

Apache Spark란?

Apache Spark는 데이터 분석 작업의 개발을 단순화하여 효율성을 높이는 오픈 소스 프레임워크로, 복잡한 클러스터 컴퓨팅을 간단히 만드는 80여 개의 데이터 변환 및 동작 연산자와 함께 광범위한 API와 다양한 언어를 지원합니다. 

Spark는 누가 만들고 관리합니까?

300여 곳의 회사에서 온 수많은 개발자가 Spark를 만들었고, 광범위한 사용자 커뮤니티가 지속적으로 개선되는 데 기여했습니다. 다양한 산업의 기업에서 광범위하게 사용되며 빅 데이터에서 가장 큰 개발자 커뮤니티를 형성하고 있습니다.

관련 HPE 솔루션, 제품 또는 서비스

Spark가 인기 있는 이유

Spark는 유사한 분석 엔진보다 100배 빠른 속도로 가변 데이터 소스에 액세스할 수 있으며 Hadoop, Apache Mesos, Kubernetes, 독립형 또는 클라우드를 비롯한 여러 플랫폼에서 실행할 수 있습니다. 데이터를 일괄 처리하든 데이터를 스트리밍하든 최신 Spark DAG 스케줄러, 쿼리 옵티마이저, 물리적 실행 엔진을 통해 최고 수준의 성능을 확인할 수 있습니다.

왜 Spark가 강력할까요?

Spark는 인메모리 처리 덕분에 독특한 역량을 발휘합니다. 메모리 사용량이 많은 노드의 분산 풀과 콤팩트 데이터 인코딩을 최적화 쿼리 플래너와 함께 사용하여 실행 시간과 메모리 요구를 최소화합니다.

Spark는 메모리 내에서 계산하기 때문에 디스크에서 처리하는 프레임워크보다 100배 이상 빠르게 데이터를 처리할 수 있습니다. 기계 학습AI 운용 시 분석 모델과 훈련 모델에 필요한 대량의 데이터를 처리하는 툴로 널리 선호되고 있습니다.

또한 전문 기계 학습과 SQL과 유사한 데이터 구조를 모두 제공하는 네이티브 라이브러리 스택을 실행하기 때문에 대용량 데이터 세트에서도 탁월한 성능을 얻을 수 있습니다. 또한 80여 개의 고급 연산자가 있어 병렬 앱을 쉽게 만들 수 있습니다.

Spark의 기원

2009년 캘리포니아 대학교 버클리의 AMPLab에서 발표한 대학원 연구 논문 몇 편을 통해 지금의 Spark가 꽃을 피우게 되었습니다. 2010년 AMPLab은 Spark를 오픈 소스로 발표했고 더 많은 협업이 시작되었습니다. 2013년까지 Spark 커뮤니티는 Apache Software Foundation 산하에 들어갈 정도로 커졌습니다.

이후로 수백 개의 조직에서 1,200명 이상의 개발자가 Spark를 지속적으로 발전시켜 오늘날과 같은 강력한 인터페이스가 되었습니다. 실제로 2016년 조사에 따르면 1,000개 이상의 조직이 Spark를 실행 중이라고 합니다.

Spark와 Hadoop은 어떻게 다릅니까?

Spark와 Hadoop은 몇 가지 비슷한 점이 있습니다. 둘 다 분석 데이터 처리에 사용되는 오픈 소스 프레임워크이며 둘 다 Apache Software Foundation에 속해 있습니다. 또한 기계 학습 라이브러리를 포함하고 있고 Java, Python, R, 또는 Scala와 같은 여러 다른 언어로 프로그래밍할 수 있습니다.

그러나 Spark는 Hadoop으로 가능한 컴퓨팅 수를 확장하기 위해 작성되었습니다. 따라서 비교하려면 Spark가 Hadoop의 네이티브 데이터 처리 구성 요소인 MapReduce를 어떻게 개선하는지 살펴봐야 합니다.

예를 들어 Hadoop은 데이터를 일괄적으로만 처리할 수 있는 반면, Spark는 데이터를 일괄 처리하면서 실시간 스트리밍도 가능합니다. 또한 둘 다 기계 학습 라이브러리를 갖고 있지만 Spark만이 인메모리 데이터를 사용하여 처리 기능을 수행하기 때문에 Hadoop보다 훨씬 빠릅니다. 마지막으로 Spark와 Hadoop의 가장 큰 차이는 효율성에 있습니다. Hadoop은 2단계 실행 프로세스를 사용하는 반면, Spark는 작업을 예약하고 작업자 노드를 관리하기 위해 DAG(Directed Acyclic Graph)를 생성하여 프로세스를 동시에 효율적으로 처리합니다.

Apache Spark의 이점

Spark는 다른 프레임워크보다 장점이 많습니다. 처리 속도와 효율성을 높이는 데 필요한 유연성과 확장성을 갖춘 사용하기 쉬운 형식으로 고급 분석을 제공합니다. 이점은 다음과 같습니다.

속도

데이터가 분산 클러스터 노드 전체에 걸쳐 인메모리 처리를 확장하도록 구성되며, Spark가 디스크 스토리지에 데이터를 다시 쓰지 않고도 처리할 수 있기 때문에 메모리 내 처리 시 배치 작업을 MapReduce보다 최대 100배, 디스크보다 10배 더 빠르게 수행할 수 있습니다. 

 

다양한 언어 지원

Scala로 작성된 Spark는 Java와 Python 사용에 이용되는 API 커넥터와 데이터 과학자가 필요로 하는 대규모 데이터 세트를 처리할 수 있는 R 프로그래밍 패키지가 함께 제공됩니다. 

편리한 사용

Spark의 데이터 분산 방식은 더 효율적이기 때문에 병렬 데이터 처리와 데이터 추상화를 수행할 수 있습니다. 또한 다양한 유형의 데이터베이스를 연결하고 다양한 유형의 데이터 저장소에서 데이터를 컴퓨팅하는 역량을 갖춰 여러 사용 사례에 활용할 수 있습니다. 

성능

Spark는 사용자에 따르면 수 페타바이트에 달하는 방대한 양의 데이터를 처리할 수 있습니다. 또한 사용자는 다운 샘플링 없이 페타바이트 규모의 데이터에서 탐색적 데이터 분석을 수행할 수 있습니다.

고급 분석

Spark는 데이터 분석 애플리케이션을 실행할 수 있는 여러 코드 라이브러리와 함께 제공됩니다. 예를 들어, MLlib에는 고급 통계 작업에 사용 가능한 기계 학습 코드가 있으며 사용자는 Spark Streaming 라이브러리를 통해 실시간으로 데이터를 분석할 수 있습니다. 

빅 데이터에 대한 액세스 증가

Spark는 스토리지와 컴퓨팅을 분리하기 때문에 고객은 각각을 확장하여 분석 애플리케이션의 성능 요구 사항을 수용할 수 있습니다. 또한 배치 작업을 원활하게 수행하여 고급 분석을 위해 데이터를 데이터 레이크 또는 데이터 웨어하우스로 이동할 수 있습니다.

동적 특성

Spark에는 사용자가 변화하는 워크로드에 적응하도록 노드를 동적으로 확장할 수 있는 툴이 포함되어 있습니다. 그리고 처리 주기가 끝나면 Spark에서 노드를 자동으로 재할당하기가 쉽습니다.

Spark 개발자에 대한 수요

기업이 경쟁력을 유지하기 위해 더 빠르게 분석해야 하는 경우가 증가함에 따라 Spark 개발자에 대한 수요가 늘고 있습니다. 그리고 온디맨드 기계 학습이 시장에서 앞서가기 시작하면서 딥 러닝 가속기와 AI 기술을 구사할 수 있는 인재가 필수입니다.

Spark 프레임워크란?

Java나 Kotlin을 사용하는 개발자가 제한된 표준 문안으로 표현력이 더 좋은 웹 애플리케이션을 개발하려 할 때 종종 Spark Framework로 눈을 돌립니다. Spark는 선언적이고 표현력 좋은 구문으로 코딩을 더 좋게 만드는 보다 생산적이고 빠른 개발 프로세스를 실현할 수 있도록 설계되었습니다.

Spark는 마이크로 프레임워크로, 개발자가 번거롭지 않은 프로세스로 Java VM(가상 시스템)을 최대한 활용할 수 있도록 지원합니다. Spark의 코드 구문은 매우 간결하여 다른 Java 웹 프레임워크에 비해 더 효율적으로 코딩할 수 있습니다.

또한 Spark Framework 언어는 이미 내장된 유형의 서버 측에서 실행됩니다. 이는 TypeScript와 같은 JavaScript로 컴파일되는 정적 타입 언어를 사용하는 NodeJS 개발자에게 도움이 되는 것은 물론 점점 더 많은 서버 측 웹 개발을 가능하게 합니다.

Spark는 다른 프레임워크보다 더 강력한 프레임워크를 만드는 여러 데이터 구조를 운영합니다. 여기에는 아래에 설명된 RDD, DataFrames, Datasets, Tungsten, GraphFrames가 포함됩니다.

 

  • RDD(Resilient Distributed Datasets): RDD는 클러스터 간에 데이터를 분산하여 다양한 작업을 동시에 처리할 수 있습니다. 클러스터의 노드에 장애가 발생한 경우 작업을 다시 컴퓨팅하기 때문에 사용자가 조작하지 않아도 작업을 계속할 수 있습니다.
  • DataFrames: DataFrames는 SQL 운영을 위해 데이터를 열로 정리합니다. 데이터 세트 자체에서 다루기는 하지만 데이터 유형 안전성은 제공하지 않습니다.
  • Datasets: Datasets도 SQL 쿼리를 위한 열로 데이터를 정리합니다. 데이터 유형 안전 대책을 제공합니다.
  • Tungsten: Tungsten 데이터 구조는 Spark의 성능을 베어 메탈 성능 수준으로 끌어올리기 위해 도입된 최신 추가 기능입니다. 더 빠른 처리를 위한 메모리 관리, 이진 처리, 코드 생성, 알고리즘 개발을 목표로 합니다.
  • GraphFrames: GraphFrames 데이터 구조를 사용하면 최고의 성능 속도를 얻기 위해 인메모리에서 실행되는 그래프 쿼리를 실행할 수 있습니다.

Spark는 이 다섯 가지 데이터 구조를 결합하여 데이터를 준비하고 다른 프레임워크와 마찬가지로 서술적 분석과 검색을 제공할 수 있습니다. 또한 예측 분석, 기계 학습, 그래프 처리를 통해 기업이 더 빠르게 정보에 입각한 의사 결정을 내릴 수 있도록 지원합니다.

Spark 성능을 극대화하기 위해 HPE가 제공하는 기능에는 어떤 것이 있습니까?

데이터 우선 전략을 추구하는 기업은 다양한 HPE 솔루션을 사용하여 온프레미스, 멀티 클라우드 또는 엣지 배포에서 데이터의 새로운 가치를 발굴할 수 있습니다. 디지털 트랜스포메이션을 선도하는 HPE는 Spark를 노트북에 통합하여 기계 학습과 AI 워크로드를 가속화하는 획기적인 서비스를 제공하여 비즈니스에 가치를 더하는 인사이트 획득 시간을 단축합니다.

예를 들어, HPE Ezmeral은 멀티 테넌트 컨트롤 플레인, GPU 가속, 완전한 격리 및 제어, 사전 구축된 데이터 분석 툴을 사용하여 Apache Spark 워크로드를 조정하는 탄력적인 플랫폼입니다. HPE Ezmeral은 온프레미스 분석, 기계 학습 및 AI에 클라우드 네이티브 기능을 제공하는 최초의 데이터 레이크하우스입니다. 최근 이루어진 테스트 결과에 따르면 HPE Ezmeral, NVIDIA RAPIDS, Tensor Core A100 GPU는 Spark AI와 ETL 워크로드의 속도를 29배 향상합니다. [i]

또한 HPE는 최근에 HPE Ezmeral Unified Analytics를 발표했습니다. 이는 Spark를 다른 업계 최고의 오픈 소스 툴과 함께 독자적인 스택의 일부로 통합하는 업계 최초의 클라우드 데이터 레이크하우스 플랫폼입니다. HPE Ezmeral Unified Analytics는 HPE GreenLake에서도 사용할 수 있습니다.  

 

[1] HPE는 HPE Ezmeral, NVIDIA A100 40GB GPU, HPE ProLiant DL385 Gen10 Plus v2에서 관리하는 Kubernetes Pod를 활용한 빅 데이터 벤치마크를 기반으로 테스트 모델을 표준화했습니다.