[DE] Hadoop Eco-system

garam·2021년 9월 1일
0

Hadoop Eco-system

하둡의 코어 프로젝트는 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

이름과 같이 생태계를 관리해주는 시스템 입니다. 하둡은 여러대의 서버를 사용해서 분산환경을 조성합니다. Zookeeper는 분산 환경에서 서버들 간 상호 조정을 제공하는 시스템입니다.

  • 하나의 서버에만 서비스가 집중되지 않도록 서비스를 알맞게 분산하여 동시에 처리하게 해줍니다.
  • 하나의 서버에서 처리한 결과를 다른 서버들과 동기화해줍니다. (데이터 안전성 보장)
  • 운영(active) 서버에서 문제가 발생해 서비스를 제공할 수 없는 경우, 다른 대기중인 서버를 운영 서버로 바꿔 서비스가 중지없이 제공되게 해줌
  • 분산 환경을 구성하는 서버들의 환경설정을 통합적으로 관리

Oozie

하둡의 작업을 관리하는 워크플로우 및 코디네이터 시스템입니다. Java servlet 컨테이너에서 실행되는 자바 웹어플리케이션 서버로, MapReduce 작업이나 Pig 작업같은 특화된 액션들로 구성된 워크플로우를 제어합니다.

Avro

RPC(Remote Procedure Call)과 데이터 직렬화를 지원하는 프레임워크입니다. JSON을 이용해 데이터 형식과 프로토콜을 정의하며, 작고 빠른 바이너리 포맷으로 데이터를 직렬화합니다.


분산 리소스 관리

YARN

작업 스케줄링, 클러스터 리소스 관리를 위한 프레임워크 입니다. MapReduce, Hive, Impala, Spark 등 다양한 애플리케이션들을 YARN에서 실행합니다.

MESOS

Cloud 환경에 대한 리소스를 관리합니다. Linux 커널과 동일한 원칙을 사용합니다. 컴퓨터에 API(Hadoop, Spark Kafka, Elasticsearch)를 제공합니다. Facebook, Twitter, Ebay등 다양한 기업들이 Mesos클러스터 자원을 관리하고 있습니다.

HCatalog

Hadoop으로 생성한 데이터를 위한 테이블 및 스토리지 관리 서비스입니다. 가장 큰 장점으로는 Hadoop Eco-system 간의 상호 운용성의 향상이 있습니다. ( ex. Hive에서 생성한 테이블이나 데이터 모델을 Pig나 MapReduce에서 손쉽게 이용할 수 있습니다. )


데이터 수집

Kafka

분산 스트리밍 플랫폼으로 데이터 파이프 라인을 구축할 때 주로 사용하는 오픈소스 솔루션입니다. 데이터 Stream을 실시간으로 관리하기 위한 분산 시스템입니다. 대용량 실시간 로그처리에 특화되어 있는 솔루션입니다. 고장방지(Fault-Tolerant), 안정적인 아키텍쳐 그리고 빠른 퍼포먼스로 데이터를 처리할 수 있습니다.

Chukwa

분산 환경에서 생성되는 데이터를 안정적으로 HDFS에 저장하는 플랫폼입니다. 대규모 분산 시스템을 Monitoring하기 위한 시스템입니다. HDFS와 MapReduce에 구축되어 수집된 데이터를 최대한 활용하기 위한 Monitoring 및 유연한 툴킷을 포함합니다.

  • 분산된 각 서버에서 agent를 실행합니다.
  • collector가 agent로부터 데이터를 받아 HDFS에 저장합니다.
  • collector는 100개의 agent당 하나씩 구동되며, 데이터 중복 제거 등의 작업은 MapReduce로 처리합니다.

Flume

많은 양의 데이터를 수집, 집계 및 이동하기 위한 분산형 서비스입니다. Chukwa 처럼 분산된 서버에 agent가 설치되며 agent로부터 데이터를 전달받는 collector로 구성됩니다.

  • vs Chukwa : 전체 데이터의 흐름을 관리하는 Master Server가 있어서 데이터를 어디서 수집하고, 어떤 방식으로 수집하고, 어디에 저장할지를 동적으로 변경가능합니다.

Scribe

Facebook에서 개발한 데이터 수집 플랫폼으로 설치와 구성이 쉽고, 다양한 프로그래밍 언어를 지원합니다.

  • vs Chukwa : 데이터를 중앙서버로 전송하는 방식입니다. 최종 데이터는 HDFS외에 다양한 저장소를 활용 가능합니다.

데이터 전송

Sqoop

대용량 데이터 전송 솔루션입니다. HDFS, RDBMS, DW, NoSQL 등 다양한 저장소에 대용량 데이터를 신속하게 전송할 수 있는 방법을 제공합니다. Oracle, MS-SQL, DB2 등과 같은 상용 RDBMS와 MySQL, PostgresSQL과 같은 오픈소스 RDBMS등을 지원합니다.

Hiho

Sqoop과 같은 대용량 데이터 전송 솔루션입니다. 현재 Github에 공개되어 있습니다. 하둡에서 데이터를 가져오기 위한 SQL을 지정할 수 있으며, JDBC 인터페이스를 지원합니다.


데이터 저장

HBase

HDFS의 Column기반 데이터베이스 입니다. 구글의 BigTable 논문을 기반으로 개발된 것으로, 실시간 랜덤 조회 및 업데이트가 가능합니다 (HDFS는 스트리밍 접근방식으로 랜덤엑세스가 안됩니다.). 각각의 프로세스들은 개인의 데이터를 비동기적으로 업데이트 할 수 있습니다. MapReduce는 일괄처리 방식으로 수행됩니다.

Kudu

속성 기반 스토리지로 빠르게 변화하는 데이터에 대한 빠른 분석을 위해 설계되었습니다.

Tajo

고려대에서 만든 DW시스템으로 데이터 저장소는 HDFS를 사용하되, SQL을 통해 실시간으로 데이터 조회가 가능합니다. Hive보다 2-3배 빠르며 Impala와는 비슷한 속도를 보여줍니다. (Impala는 같은 회사의 제품을 써야한다는 제약이 있습니다.)


데이터 처리

Spark

대규모 데이터 처리를 빠른 속도로 실행시켜주는 엔진입니다. 병렬 애플리케이션을 쉽게 만들 수 있는 80개 이상의 고급 연산자를 제공하며, Python / R 등에서 인터프리터로 사용 가능합니다.

Impala

Cloudera에서 개발한 Hadoop 기반의 실시간 SQL 질의 시스템입니다. MapReduce를 사용하지 않고 In-memory 엔진을 사용하여 빠른 성능을 보여줍니다. 데이터 조회를 위한 인터페이스로 HiveQL을 사용하며 HBase와도 연동 가능합니다.

Hive

Facebook에서 개발한 Hadoop 기반의 DW 솔루션입니다. SQL과 유사한 HiveQL를 이용하여 데이터 분석을 쉽게 할 수 있도록 도와줍니다.

Pig

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

profile
hello world :)

0개의 댓글