빅데이터 처리로 하둡이 대표적입니다.
그렇다면 오늘 빅데이터 프레임워크인 Hadoop, Spark, Hive 하지만 추구하는목적과 용도가 다른 세 프레임에 대해서 알아봅시다.
최근 기업에서 데이터 분석에 관심을 갖고 데이터 분석 기반의 의사결정을 내리고 있습니다.
이런 빅데이터를 다룰 때 가장 일반적으로 쓰이는 기술은 하둡의 MapReduce의 연관기술인 Hive입니다. MapReduce는 슈퍼 컴퓨터 없이 서버를 여러대 연결해 빅데이터 분석을 가능하게 했습니다. 하지만 기술이 나오고 시간이 한참 지난 뒤부터 여러 단점이 보이기 시작했습니다.
그래서 대안으로 나온 것이 스파크입니다. MapReduce와 비슷한 목적의 업무를 수행하는 데 메모리 활용이 굉장히 빠른 데이터 처리 특징을 가지고 있습니다.
이제 각각의 프레임워크에 대해서 알아봅시다.
하둡은 대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈소스 프레임워크이다. HDFS(Hadoop Distributed File System) 분산형 파일 시스템을 기반으로 만들어졌다. 데이터 처리 시 HDFS와 분산처리 기술인 MapReduce 데이터셋 병렬 처리 방식에 의해 동작한다.
즉, 분산 저장 기술인 HDFS와 분산처리 기술인 MapReduce가 굉장한 장점입니다.
- HDFS
- 대규모 데이터를 분산, 저장, 관리하기 위한 분산 파일 시스템으로서, 저장하고자 하는 파일을 블록 단위로 나누어 분산된 서버에 저장된다.
- 배치작업에 적합하도록 설계되어 있고, 빠른 처리보다 높은 데이터 처리량에 중점을 둔다.- MapReduce
- 대용량 데이터를 분산 처리하기 위한 목적으로 개발된 프로그래밍 모델이자 소프트웨어 프레임워크이다.
- 맵리듀스 프로그래밍 모델은 사용자가 Map과 Reduce 두 함수를 이용하여 데이터를 처리하도록 한다.
여러 디스크로부터 데이터를 한번에 읽는 것을 말합니다.
하드디스크 드라이브 저장 용량이 엄청나게 증가한데 반해 액세스 속도는 그에 훨씬 미치지 못하여 드라이브를 읽는데 시간이 굉장히 오래 걸립니다.
그래서 이 시간을 줄이기 위해 하둡을 사용하게 되었습니다.
가령 100개의 드라이브가 있고, 각 드라이브에서 1/100 만큼 데이터를 저장한다고 가정했을 때, 이것을 병렬로 동작한다면 2분 내에 데이터 읽기가 가능합니다.
하둡에서 분산처리를 위해 사용하는 기술인 MapReduce는 단계별로 데이터를 처리합니다.
클러스터에서 데이터 읽기 -> 동작 실행 -> 클러스터에 결과 기록 -> 데이터 업데이트 된 내용 읽기 -> 다음 동작 실행 -> 클러스터에 결과 기록
이런 식으로 5단계에 걸친 데이터 처리를 진행합니다.
기존 관계형 데이터베이스 관리 시스템(RDBMS)는 비용이 비쌉니다..
하지만 하둡은 오픈소스로 비용이 거의 들지 않죠. 특히 빅데이터를 감당하려면 그에 비례하는 비용이 들 수 밖에 없는데요.
하둡은 분산 컴퓨팅 방식으로 구축 비용이 저렴하며 그 비용 대비 데이터 처리가 굉장히 빠릅니다. 또 장애를 대비하려 매번 운영한 이후 결과들을 디스크에 기록하기 때문에 문제가 발생했을 때 기록된 결과들을 활용하여, 그 문제를 파악하고 해결하기 쉽습니다.
실시간성 데이터에 대한 니즈가 증가하며 하둡으로 처리하기에는 속도 측면에서 부적합한 시나리오들이 등장하기 시작하였다.
Spark는 분산 시스템을 사용한 프로그래밍 환경으로 대량의 메모리를 활용하여 고속화를 실현하는 것이다. 인메모리상에서 동작하기 때문에, 반복적인 처리가 필요한 작업에서 속도가 하둡보다 최소 1000배 이상 빠르다.
즉, 빠른 성능을 위해 인 메모리 캐싱과 최적화된 실행을 사용하고 일반 배치처리, 스트리밍 분석, 머신러닝, 그래프 데이터 베이스 및 임시 쿼리를 지원합니다.
스파크는 하둡의 HDFS외에도 다른 클라우드 기반 데이터 플랫폼(s3 등)과 융합될 수 있어 하둡이 반드시 필요한 것은 아닙니다. 다만 스파크 개발당시 원래 파둡용으로 설계된 솔루션이기 때문에 하둡과 스파크를 함께 사용할 때 최상의 효과를 낼 수 있습니다.
최근에는 Hadoop + Spark의 연계가 하나의 공식이 되었다. 하둡의 YARN 위에 스파크를 얹고, 실시간성이 필요한 데이터는 스파크로 처리하는 방식으로 아키텍처를 구성하여 동작한다.
Spark는 Hadoop이 아니라 MapReduce를 대체한다. Spark 상의 데이터 처리는 스크립트 언어를 사용할 수 있다 (자바, 스칼라, 파이썬, R 등)
스파크는 전체의 데이터셋을 한꺼번에 처리합니다.
클러스터에서 데이터 읽기 -> 애널리틱스 운영 수행 및 결과값 클러스터 입력 동작과 같은 전 과정이 동시 진행
앞선 하둡과 달리 2단계로 처리되므로, 일반적 상황에서 스파크의 데이터 처리속도는 하둡에 비해 월등히 빠릅니다. 배치 프로세싱의 경우 하둡의 맵리듀스에 비해 스파크가 10배 더 빠르고, 인 메모리 애널리틱스의 경우 100배 더 빠른 수행 속도를 냅니다.
Hive는 하둡 에코시스템 중에서 데이터를 모델링하고 프로세싱하는 경우 가장 많이 사용하는 데이터 웨어하우징용 솔루션이다
MapReduce는 코드가 복잡해서 짜기가 어렵다. Query로 MapReduce 대부분의 기능을 표현할 수 있다. SQL과 유사한 HiveQL로 데이터를 조회하는 등 MapReduce와 같이 처리할 수 있도록 하는 것이 Hive이다.
Hive는 HDFS등에 있는 파일을 읽어들여 쿼리로 분석을 수행한다. HiveQL을 작성하면 MapReduce로 변환되어 실행되게 된다.
Hive에서 만든 각 테이블의 정보는 Hive 메타 스토어라 불리는 특별한 DB에 저장된다.
Hive는 데이터베이스가 아닌 데이터 처리를 위한 배치 처리 구조이다.