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

Apache Hadoop과 Apache Spark는 분석을 위해 대량의 데이터를 관리 및 처리하는 데 사용할 수 있는 두 가지 오픈 소스 프레임워크입니다. 조직은 대규모 데이터를 빠른 속도로 처리하여 비즈니스 인텔리전스를 위한 실시간 인사이트를 얻어야 합니다. Apache Hadoop을 사용하면 여러 컴퓨터를 클러스터링하여 대규모 데이터 세트를 병렬로 더 빠르게 분석할 수 있습니다. Apache Spark는 인 메모리 캐시 및 최적화된 쿼리 실행을 활용하여 모든 크기의 데이터에 대해 빠른 분석 쿼리를 실행합니다. Spark는 데이터 처리에 인공 지능 및 기계 학습(AI/ML)을 사용하는 만큼, Hadoop보다 더 발전된 기술입니다. 그러나 많은 회사에서 데이터 분석 목표를 달성하기 위해 Spark와 Hadoop을 함께 사용합니다.

Apache Hadoop에 대해 읽어보기 »

Apache Spark에 대해 읽어보기 »

Hadoop과 Spark의 유사점은 무엇인가요?

Hadoop과 Spark는 모두 대규모 데이터를 처리할 수 있는 분산 시스템입니다. 어떤 이유로든 데이터 처리가 중단되더라도 장애를 복구할 수 있습니다.

분산 빅 데이터 처리

빅 데이터는 다양한 형식으로 자주, 지속적으로, 대규모로 수집됩니다.

Apache Hadoop은 빅 데이터를 저장, 관리 및 처리하기 위해 데이터 세트를 더 작은 하위 집합 또는 파티션으로 나눕니다. 그런 다음 분산된 서버 네트워크를 통해 파티션을 저장합니다. 마찬가지로, Apache Spark는 분산 노드를 통해 빅 데이터를 처리하고 분석하여 비즈니스 인사이트를 제공합니다.

사용 사례에 따라 최적의 기능을 제공하기 위해 Hadoop과 Spark를 모두 서로 다른 소프트웨어와 통합해야 할 수도 있습니다. 

내결함성

Apache Hadoop은 하나 이상의 데이터 처리 노드에 장애가 발생하더라도 계속 실행됩니다. 동일한 데이터 블록의 복사본을 여러 개 만들어 여러 노드에 저장합니다. 한 노드에 장애가 발생하면 Hadoop은 다른 노드에서 정보를 검색하여 데이터 처리를 준비합니다.

반면, Apache Spark는 Resilient Distributed Dataset(RDD)라는 특수한 데이터 처리 기술을 사용합니다. Apache Spark는 RDD를 사용하여 스토리지에서 특정 정보를 검색하는 방법을 기억하고 기반 스토리지에 장애가 발생할 경우 데이터를 재구성할 수 있습니다. 

주요 구성 요소: Hadoop vs. Spark 프레임워크

Hadoop과 Spark는 모두, 서로 상호 작용하고 연동하여 시스템이 작동하도록 하는 여러 소프트웨어 모듈로 구성됩니다.

Hadoop 구성 요소

Apache Hadoop에는 네 가지 주요 구성 요소가 있습니다.

  • Hadoop 분산 파일 시스템(HDFS)은 여러 컴퓨터에 대용량 데이터 세트를 저장하는 특수 파일 시스템입니다. 이러한 컴퓨터를 Hadoop 클러스터라고 합니다. 
  • Yet Another Resource Negotiator(YARN)는 작업을 예약하고 Hadoop에서 실행되는 애플리케이션에 리소스를 할당합니다.
  • Hadoop MapReduce는 프로그램에서 대용량 데이터 처리 작업을 작은 작업으로 나누어 여러 서버에서 병렬로 실행할 수 있게 합니다.
  • Hadoop Common 또는 Hadoop Core는 다른 Hadoop 구성 요소에 필요한 소프트웨어 라이브러리를 제공합니다. 

Spark 구성 요소

Apache Spark는 다음 구성 요소를 사용하여 실행됩니다.

  • Spark Core는 Apache Spark의 기본 기능을 조정합니다. 이러한 기능으로는 메모리 관리, 데이터 스토리지, 작업 스케줄링, 데이터 처리 등이 있습니다. 
  • Spark SQL을 사용하면 Spark의 분산 스토리지에서 데이터를 처리할 수 있습니다. 
  • Spark Streaming 및 Structured Streaming은 Spark가 데이터를 작고 연속적인 블록으로 나누어 데이터를 효율적으로 실시간 스트리밍할 수 있게 합니다.
  • 기계 학습 라이브러리(MLlib)는 빅 데이터에 적용할 수 있는 여러 기계 학습 알고리즘을 제공합니다.
  • GraphX를 사용하면 그래프를 사용하여 데이터를 시각화하고 분석할 수 있습니다. 

주요 차이점: Hadoop과 Spark

Hadoop과 Spark를 사용하면 빅 데이터를 서로 다른 방식으로 처리할 수 있습니다.

Apache Hadoop은 단일 시스템에서 워크로드를 실행하는 대신 여러 서버에 데이터 처리를 위임하도록 만들어졌습니다.

반면, Apache Spark는 Hadoop의 주요 한계를 극복한 최신 데이터 처리 시스템입니다. Hadoop은 대규모 데이터 세트를 처리할 수 있지만 배치 단위로 처리하며 상당한 지연이 발생합니다.

아키텍처

Hadoop에는 Hadoop 분산 파일 시스템(HDFS)이라는 네이티브 파일 시스템이 있습니다. Hadoop은 HDFS를 기반으로 대용량 데이터 블록을 여러 개의 작고 균일한 블록으로 나눌 수 있습니다. 그런 다음 작은 데이터 블록을 서버 그룹에 저장합니다.

반면, Apache Spark에는 자체 네이티브 파일 시스템이 없습니다. Hadoop의 파일 시스템에서 Spark를 실행하여 데이터를 저장, 관리 및 검색하는 조직이 많습니다.

또는 Amazon Redshift 또는 Amazon Simple Storage Service(S3)를 Spark의 데이터 스토리지 옵션으로 사용할 수도 있습니다. 

성능

Hadoop은 대량의 데이터 세트를 배치 단위로 처리할 수 있지만 속도가 더 느릴 수 있습니다. Hadoop은 데이터를 처리하기 위해 외부 스토리지에서 정보를 읽은 다음 데이터를 분석하여 소프트웨어 알고리즘에 입력합니다.

Hadoop은 각 데이터 처리 단계에서 외부 스토리지에 데이터를 다시 쓰므로 지연 시간이 늘어납니다. 따라서 실시간 처리 작업에는 적합하지 않지만 시간 지연이 허용되는 워크로드에는 이상적입니다. 예를 들어 Hadoop은 월간 판매 기록을 분석하는 데 적합합니다. 하지만 소셜 미디어 피드에서 실시간 브랜드에 대한 감정을 파악하는 데는 적합하지 않을 수 있습니다. 

반면, Apache Spark는 엄청난 양의 데이터를 실시간으로 처리하도록 설계되었습니다.

Spark는 외부 스토리지에서 데이터에 액세스하지 않고, 데이터를 처리하기 전에 RAM에 복사합니다. 특정 작업을 완료한 후에만 데이터를 외부 스토리지에 다시 씁니다. RAM에서의 쓰기 및 읽기는 외장 드라이브로 동일한 작업을 수행하는 것보다 획기적으로 빠릅니다. 또한 Spark는 검색된 데이터를 다양한 작업에 재사용합니다.

따라서 Spark는 단순한 데이터 처리 또는 복잡한 데이터 처리 모두에서 다양한 수준으로 Hadoop보다 더 나은 성능을 발휘합니다.

기계 학습

Apache Spark는 MLlib라는 기계 학습 라이브러리를 제공합니다. 데이터 사이언티스트는 MLlib를 사용하여 회귀 분석, 분류 및 기타 기계 학습 작업을 실행합니다. 또한 비정형 및 정형 데이터로 기계 학습 모델을 훈련하고 비즈니스 애플리케이션에 배포할 수 있습니다.

반면, Apache Hadoop에는 내장된 기계 학습 라이브러리가 없습니다. 대신 Spark를 Apache Mahout 등의 다른 소프트웨어와 통합하여 기계 학습 시스템을 구축할 수 있습니다. 소프트웨어 선택은 워크로드의 특정한 요구 사항에 따라 달라집니다. 데이터의 크기 및 복잡성, 사용하려는 기계 학습 모델 유형, 애플리케이션의 성능 및 확장성 요구 사항 등을 고려할 수 있습니다.

보안

Apache Hadoop은 데이터를 보호하는 강력한 보안 기능을 사용하여 설계되었습니다. 예를 들어 Hadoop은 암호화와 액세스 제어를 사용하여 권한 없는 사람이 데이터 스토리지에 액세스하고 조작하는 것을 방지합니다.

하지만 Apache Spark는 자체적으로 제한된 보안 기능을 제공합니다. Apache Software Foundation에 따르면 Spark의 보안 기능을 활성화하고 Spark가 실행되는 환경이 안전한지 확인해야 합니다.

Spark는 여러 배포 유형을 지원하며, 일부는 다른 유형보다 더 안전합니다. 예를 들어 Hadoop에 Spark를 배포하면 Hadoop의 암호화된 분산 스토리지 덕분에 전반적인 보안이 향상됩니다. 

확장성

Hadoop은 Spark보다 더 손쉽게 확장할 수 있습니다. 더 많은 처리 능력이 필요한 경우 합리적인 비용으로 Hadoop에 노드나 컴퓨터를 추가할 수 있습니다.

반면, Spark 배포를 확장하려면 일반적으로 RAM에 더 많이 투자해야 합니다. 온프레미스 인프라의 경우 비용이 빠르게 증가할 수 있습니다. 

비용

Apache Hadoop은 데이터를 저장하고 처리하는 데 하드 디스크를 사용하므로 설치 및 실행 비용이 훨씬 저렴합니다. 표준 컴퓨터 또는 저사양 컴퓨터에 Hadoop을 설치할 수 있습니다.

반면, Spark는 인 메모리 처리에 RAM을 사용하므로 빅 데이터를 처리하는 데 비용이 더 많이 듭니다. RAM은 일반적으로 동일한 스토리지 크기의 하드 디스크보다 비쌉니다. 

사용 사례 비교: Hadoop과 Spark

Apache Spark는 Hadoop의 외부 스토리지 액세스 아키텍처의 한계를 극복하기 위해 도입되었습니다. Apache Spark는 Hadoop의 원래 데이터 분석 라이브러리인 MapReduce를 더 빠른 기계 학습 처리 기능으로 대체합니다.

하지만 Spark는 Hadoop과 상호 배타적이지 않습니다. Apache Spark는 독립적인 프레임워크로 실행할 수 있지만, 많은 조직에서 빅 데이터 분석에 Hadoop과 Spark를 모두 사용합니다. 

구체적인 비즈니스 요구 사항에 따라 Hadoop, Spark 또는 둘 다를 데이터 처리에 사용할 수 있습니다. 무엇을 사용하지 결정할 때 고려할 수 있는 몇 가지 사항은 다음과 같습니다.

비용 효율적인 확장

Apache Hadoop은 비용 효율적인 데이터 처리 파이프라인을 구축하고 확장하는 데 더 나은 옵션입니다. 기존 Hadoop 클러스터에 컴퓨터를 더 추가하면 Hadoop의 처리 용량이 증가할 수 있습니다. 이는 Apache Spark 프레임워크를 확장하기 위해 추가 RAM을 구매하는 것보다 훨씬 저렴합니다.

배치 처리

배치 처리는 규정된 일정에 국한되지 않고 대량의 데이터를 처리하는 것을 말합니다. 배치 처리를 선호하는 조직에서는 여러 노드에서 병렬 처리를 지원하는 Apache Hadoop을 사용합니다. 예를 들어 Hadoop을 사용하여 수만 개의 레코드에서 시간에 민감하지 않은 인벤토리 보고서를 생성할 수 있습니다.

실시간 분석

빠르게 이동하는 데이터를 처리하려면 Apache Spark를 사용합니다. 데이터 스트림은 소프트웨어에 의해 지속적으로 전송되는 정보 또는 데이터입니다. Apache Spark는 실시간 데이터 스트림을 처리하고 실시간으로 유용한 분석을 제공할 수 있습니다. 예를 들어 금융 기관은 Apache Spark를 사용하여 진행 중인 거래에서 사기 행위를 탐지하고 은행 담당자에게 알립니다.

스트리밍 데이터에 대해 읽어보기 »

기계 학습 기능

기계 학습에는 많은 수의 데이터 세트로 소프트웨어 함수 또는 모델을 훈련하는 작업이 포함됩니다. Apache Spark는 기계 학습 라이브러리가 내장되어 있으므로 이러한 작업에 더 적합합니다. 즉, Spark는 추가 통합 없이 기계 학습 모델을 실시간으로 훈련할 수 있습니다.

보안, 속도 및 대화형 분석

Hadoop과 Spark를 사용하여 두 프레임워크의 강점을 활용할 수 있습니다. Hadoop은 안전하고 경제적인 분산 처리 기능을 제공합니다. Hadoop에서 Spark를 실행하는 경우 그래프 분석 작업과 같이 시간에 민감한 워크로드를 Spark의 인 메모리 데이터 프로세서로 이전할 수 있습니다. 분석을 위한 성능과 안전한 외부 스토리지 처리 기능을 얻을 수 있습니다.

차이점 요약: Hadoop과 Spark

 

Hadoop

Spark

아키텍처

Hadoop은 외부 스토리지에 데이터를 저장하고 처리합니다.

Spark는 내부 메모리에 데이터를 저장하고 처리합니다.

성능

Hadoop은 데이터를 배치 단위로 처리합니다.

Spark는 데이터를 실시간으로 처리합니다.

비용

Hadoop은 경제적입니다.

Spark는 상대적으로 비용이 높습니다. 

확장성

Hadoop은 노드를 추가하여 손쉽게 확장할 수 있습니다.

Spark는 확장하기가 상대적으로 더 어렵습니다.

기계 학습

Hadoop은 외부 라이브러리와 통합되어 기계 학습 기능을 제공합니다. 

Spark에는 기계 학습 라이브러리가 내장되어 있습니다.

보안

Hadoop은 강력한 보안 기능, 스토리지 암호화 및 액세스 제어 기능을 제공합니다.

Spark는 기본 보안 기능을 갖추고 있습니다. IT 팀이 Spark를 배포하려면 안전한 운영 환경이 설정되어 있어야 의존합니다. 

AWS는 빅 데이터 워크로드를 어떻게 지원하나요?

Amazon EMR은 빅 데이터 솔루션을 경제적으로 구축, 배포 및 확장하는 데 도움이 되는 온라인 플랫폼입니다. Apache Hadoop과 Spark를 비롯하여 다양한 오픈 소스 빅 데이터 프레임워크를 지원합니다. 조직에서는 페타바이트(PB) 규모의 데이터 처리, 대화형 분석 및 기계 학습 애플리케이션에 Amazon EMR을 사용합니다.

Amazon EMR을 사용하여 얻을 수 있는 다른 이점은 다음과 같습니다.

  • Amazon EMR은 빅 데이터 애플리케이션에 필요한 컴퓨팅 리소스를 자동으로 확장합니다.
  • Amazon EMR에서 빅 데이터 애플리케이션을 실행하는 데 드는 비용은 온프레미스 인프라의 절반 미만입니다.
  • Amazon EMR을 사용하면 Hadoop 분산 파일 시스템(HDFS) 이외의 데이터 스토어에도 빅 데이터 세트를 저장할 수 있습니다. 예를 들어 Amazon Simple Storage Service(S3)Amazon DynamoDB에 저장할 수 있습니다.

지금 바로 계정을 만들어 Amazon Web Services(AWS)에서 Hadoop 및 Spark를 시작하세요.