[Spark] Hadoop vs Spark?
하둡 vs 스파크
1. 하둡과 아파치 스파크의 역할
둘은 다르다. 하둡과 스파크 모두 빅데이터 처리 플랫폼, 프레임워크라는 공통점이 있지만, 용도에는 상당한 차이가 있다. 하둡은 분산 데이터 인프라스트럭처로서, 대량의 데이터를 서버 클러스터 내 복수의 노드들에 분산시키는 역할을 한다. 이를 통해 하드웨어를 구매하고 유지하는데 들어가는 사용자의 비용 부담을 줄여준다는 장점이 있다. 이와 달리 스파크는 이러한 분산형 데이터 컬렉션 상부에서 동작하는 데이터 프로세싱 툴이며, 분산형 스토리지로서 역할은 수행하지 않는다.
2. 하둡과 아파치는 상호 독립적, 상호 보완적이다.
하둡은 분산형 파일 시스템인 HDFS와 분산형 파일 처리 시스템인 맵리듀스를 핵심 구성 요소로 제공한다. 따라서 스파크를 필수적으로 필요로 하지 않는다. 반대로 스파크도 하둡을 필수적으로 필요로 하지 않는다. 물론 스파크에 자체 파일 관리 시스템이 포함되진 않지만, 굳이 HDFS가 아니더라도 여타 클라우드 기반의 데이터 플랫폼(대표적으로 AWS)들과 융합될 수 있기 때문이다. 그러나 둘은 함께 할 때 가장 좋은 궁합을 보인다.
3. 속도
일반적인 상황에서, 스파크의 속도는 맵리듀스의 속도보다 월등히 빠르다. 그 이유는 무엇일까? 이는 데이터 프로세싱 절차의 차이점에 있다. 맵리듀스의 경우 단계졀 데이터 처리 절차를 따르는데 반해, 스파크는 전체 데이터셋을 한번에 다룬다. 스파크는 인메모리 기반으로 모든 데이터 운영을 메모리 내에서 실시간에 가깝게 처리할 수 있다. 데이터를 읽고, 처리 분석을 거친 결과물을 클러스터에 입력하는 전 과정이 동시에 진행되는 것이다. 배치 프로세싱 경우에 스파크가 10배 빠르고, 인 메모리 애널리틱스의 경우, 속도 차이가 100배에 이른다고 알려져있다.
4. 그렇다면 스파크만 쓰면 되지 왜 하둡?
데이터 운영 및 리포팅 요구 대부분이 정적인 것이고, 배치 모드의 프로세싱을 기다릴 수 있다면, 굳이 스파크를 쓰지 않고 맵리듀스 프로세싱 방식을 채택해도 무방하다. 스파크가 필수적인 비즈니스는 공장과 같이 센서에서 실시간으로 수집되는 스티리밍 데이터를 처리하거나, 머신러닝 알고리즘과 같이 애플리케이션이 복합적인 운영을 필요로 하는 경우이다. 구체적은 사례로, 마케팅 캠페인, 상품 추천, 사이버 보안 분석, 기계 로그 모니터링 등의 애플리케이션 작업에 스파크가 탁월한 성능을 발휘할 수 있다.
5. 고장 감내성 측면에서는?
하둡의 경우 프로세싱 절차마다의 기록을 디스크에 기록하여 failover를 하는 방식이다. 스파크의 경우에는 탄력적 분산형 데이터넷(RDD, Resilient Distributed Dataset)이라는 형태로 데이터 오브젝트들을 데이터 클러스터 전반에 분산시킴으로서 탄력성을 보장한다. RDD 오브젝트들은 매모리 내 또는 디스크에 저장할 수 있으며 사고나 고장이 나더라도 완벽하게 복구할수 있는 기술이다.
댓글남기기