하둡의 코어 프로젝트는 HDFS와 MapReduce지만 그 외에도 다양한 서브 프로젝트들이 있습니다. 이런 하둡의 프레임워크를 이루고 있는 다양한 서브 프로젝트들의 모임을 하둡 에코시스템이라고 합니다.
하둡에 대해 검색하다보면 아래의 그림을 많이 봤을겁니다. 전반적인 그림과 각 서브 프로젝트들의 기능을 간단하게 알아보겠습니다.
출처 : https://1004jonghee.tistory.com/m/entry/1004jonghee-%ED%95%98%EB%91%A1%EC%97%90%EC%BD%94%EC%8B%9C%EC%8A%A4%ED%85%9CHadoop-Eco-System-Ver-10?category=419383 출처 : 시작하세요! 하둡 프로그래밍(위키북스)이름과 같이 생태계를 관리해주는 시스템 입니다. 하둡은 여러대의 서버를 사용해서 분산환경을 조성합니다. Zookeeper는 분산 환경에서 서버들 간 상호 조정을 제공하는 시스템입니다.
하둡의 작업을 관리하는 워크플로우 및 코디네이터 시스템입니다. Java servlet 컨테이너에서 실행되는 자바 웹어플리케이션 서버로, MapReduce 작업이나 Pig 작업같은 특화된 액션들로 구성된 워크플로우를 제어합니다.
RPC(Remote Procedure Call)과 데이터 직렬화를 지원하는 프레임워크입니다. JSON을 이용해 데이터 형식과 프로토콜을 정의하며, 작고 빠른 바이너리 포맷으로 데이터를 직렬화합니다.
작업 스케줄링, 클러스터 리소스 관리를 위한 프레임워크 입니다. MapReduce, Hive, Impala, Spark 등 다양한 애플리케이션들을 YARN에서 실행합니다.
Cloud 환경에 대한 리소스를 관리합니다. Linux 커널과 동일한 원칙을 사용합니다. 컴퓨터에 API(Hadoop, Spark Kafka, Elasticsearch)를 제공합니다. Facebook, Twitter, Ebay등 다양한 기업들이 Mesos클러스터 자원을 관리하고 있습니다.
Hadoop으로 생성한 데이터를 위한 테이블 및 스토리지 관리 서비스입니다. 가장 큰 장점으로는 Hadoop Eco-system 간의 상호 운용성의 향상이 있습니다. ( ex. Hive에서 생성한 테이블이나 데이터 모델을 Pig나 MapReduce에서 손쉽게 이용할 수 있습니다. )
분산 스트리밍 플랫폼으로 데이터 파이프 라인을 구축할 때 주로 사용하는 오픈소스 솔루션입니다. 데이터 Stream을 실시간으로 관리하기 위한 분산 시스템입니다. 대용량 실시간 로그처리에 특화되어 있는 솔루션입니다. 고장방지(Fault-Tolerant), 안정적인 아키텍쳐 그리고 빠른 퍼포먼스로 데이터를 처리할 수 있습니다.
분산 환경에서 생성되는 데이터를 안정적으로 HDFS에 저장하는 플랫폼입니다. 대규모 분산 시스템을 Monitoring하기 위한 시스템입니다. HDFS와 MapReduce에 구축되어 수집된 데이터를 최대한 활용하기 위한 Monitoring 및 유연한 툴킷을 포함합니다.
많은 양의 데이터를 수집, 집계 및 이동하기 위한 분산형 서비스입니다. Chukwa 처럼 분산된 서버에 agent가 설치되며 agent로부터 데이터를 전달받는 collector로 구성됩니다.
Facebook에서 개발한 데이터 수집 플랫폼으로 설치와 구성이 쉽고, 다양한 프로그래밍 언어를 지원합니다.
대용량 데이터 전송 솔루션입니다. HDFS, RDBMS, DW, NoSQL 등 다양한 저장소에 대용량 데이터를 신속하게 전송할 수 있는 방법을 제공합니다. Oracle, MS-SQL, DB2 등과 같은 상용 RDBMS와 MySQL, PostgresSQL과 같은 오픈소스 RDBMS등을 지원합니다.
Sqoop과 같은 대용량 데이터 전송 솔루션입니다. 현재 Github에 공개되어 있습니다. 하둡에서 데이터를 가져오기 위한 SQL을 지정할 수 있으며, JDBC 인터페이스를 지원합니다.
HDFS의 Column기반 데이터베이스 입니다. 구글의 BigTable 논문을 기반으로 개발된 것으로, 실시간 랜덤 조회 및 업데이트가 가능합니다 (HDFS는 스트리밍 접근방식으로 랜덤엑세스가 안됩니다.). 각각의 프로세스들은 개인의 데이터를 비동기적으로 업데이트 할 수 있습니다. MapReduce는 일괄처리 방식으로 수행됩니다.
속성 기반 스토리지로 빠르게 변화하는 데이터에 대한 빠른 분석을 위해 설계되었습니다.
고려대에서 만든 DW시스템으로 데이터 저장소는 HDFS를 사용하되, SQL을 통해 실시간으로 데이터 조회가 가능합니다. Hive보다 2-3배 빠르며 Impala와는 비슷한 속도를 보여줍니다. (Impala는 같은 회사의 제품을 써야한다는 제약이 있습니다.)
대규모 데이터 처리를 빠른 속도로 실행시켜주는 엔진입니다. 병렬 애플리케이션을 쉽게 만들 수 있는 80개 이상의 고급 연산자를 제공하며, Python / R 등에서 인터프리터로 사용 가능합니다.
Cloudera에서 개발한 Hadoop 기반의 실시간 SQL 질의 시스템입니다. MapReduce를 사용하지 않고 In-memory 엔진을 사용하여 빠른 성능을 보여줍니다. 데이터 조회를 위한 인터페이스로 HiveQL을 사용하며 HBase와도 연동 가능합니다.
Facebook에서 개발한 Hadoop 기반의 DW 솔루션입니다. SQL과 유사한 HiveQL를 이용하여 데이터 분석을 쉽게 할 수 있도록 도와줍니다.
Hadoop에 저장된 데이터를 MapReduce program으로 만들지 않고 SQL과 유사한 스크립트를 이용하여 데이터를 처리합니다. 복잡한 MapReduce 프로그래밍을 대체할 Pig Latin이라는 자체 언어를 제공합니다. MapReduce API를 매우 단순화한 형태로 설계되었습니다.
Hadoop Eco-system에는 수많은 서브 프로젝트들이 있습니다. 기업의 데이터 엔지니어들은 이 서브 프로젝트들을 조합하여 기업에서 사용할 데이터 파이프라인을 만듭니다. 각각의 서브 프로젝트들의 장단점을 분명히 알고 서비스에 적합한 프로젝트들이 무엇인지 고민하는 시간이 필요할 것입니다.
참고사이트
https://velog.io/@kimdukbae/Hadoop-Eco-System-%ED%95%98%EB%91%A1-%EC%97%90%EC%BD%94-%EC%8B%9C%EC%8A%A4%ED%85%9C
https://butter-shower.tistory.com/73