하둡 프로그래밍(2) – 빅데이터 – 하둡 에코시스템

Last Updated on 5월 10, 2021 by 태랑(정현호)

1. 하둡 에코시스템

하둡은 비지니스에 효율적으로 적용할 수 있게 다양한 서브 프로젝트를 제공합니다 이러한 서브 프로젝트가 상용화되면서 하둡 에코시스템(Hadoop Ecosystem)이 구성됐습니다. 이러한 하둡 에코시스템은 하둡 생태계라고 표현 하기도 합니다.

분산 데이터를 저장하는 HDFS와 분석 데이터를 처리하는 맵리듀스가 하둡 코어 프로젝트에 해당하고 나머지 프로젝트는 모두 하둡의 서브 프로젝트 입니다.

출처 : 1004jonghee.tistory.com

각 서브 프로젝트의 특징은 다음과 같습니다


2.코디네이터

  • Zookeeper
    분산 환경에서 서버간의 상호 조정이 필요한 다양한 서비스를 제공하는 시스템으로 크게 다음과 같은 네가지 역할을 수행합니다


    1) 하나의 서비스에만 집중 되지 않게 서비스를 알맞게 분산해 동시에 처리할 수 있도록 지원 합니다.
    2) 하나의 서버에서 처리한 결과를 다른 서버와도 동기화해서 데이터의 안정성을 보장 합니다.
    3) 운영(Active) 서버에 문제가 발생해서 서비스를 제공할 수 없을 경우, 다른 대기 중인 서버를 운영 서버로 바꿔서 서비스가 중지 없이 제공되게 합니다.

    4) 분산 환경을 구성하는 서버의 환경설정을 통합적으로 관리 합니다.


3. 리소스 관리

  • YARN
    얀(YARN)은 데이터 처리 작업을 실행하기 위한 클러스터 자원(CPU, 메모리, 디스크 등) 과 스케줄링을 위한 프레임워크이며 맵리듀스의 단점을 극복하기 위해 시작된 프로젝트로 하둡 2.0 에서 부터 사용할 수 있습니다. 맵리듀스, 하이브, 임팔라, 타조, 스파크 등 다양한 애플리케이션들은 얀에서 리소스를 할당받아서 작업을 실행하게 됩니다. 


  • Mesos
    메소스는 클라우드 인프라스트럭처 및 컴퓨팅 엔진의 다양한 자원을 통합적으로 관리 할 수 있도록 만든 자원 관리 프로젝트 입니다. 2011년에 메소스라는 이름으로 변경됐으며 현재는 아파치 최상위 프로젝트로 진행 중 입니다. 메소스는 클러스터링 환경에서 동적으로 자원을 할당하고 격리하는 메커니즘을 제공 합니다. 1만 대 이상의 노드에서도 대응이 가능하며 웹 기반의 UI,자바, C++ , 파이썬 API를 제공하고 하둡, 스파크, 스톰, 엘라스틱 서치, 카산드라, 젠킨스 등의 다양한 애플리케이션을 메소스에서 실행할 수 있습니다.



4. 데이터 저장

  • HBase
    H베이스(HBase) 는 HDFS 기반의 컬럼 기반 데이터베이스 입니다. 구글의 빅테이블 논문을 기반으로 개발되었습니다. 실시간 랜덤 조회 및 업데이트가 가능하며, 각 프로세스는 개인의 데이터를 비동기적으로 업데이트 할 수 있으며, 단 맵리듀스는 일괄 처리 방식으로 수행됩니다. 


  • Kudu
    Kudu 는 컬럼 기반 스토리지로 특정 컬럼에 대한 데이터 읽기를 고속화 할 수 있습니다. 기존의 HDFS에서도 Parquest, RC, ORC 와 같은 파일 포멧을 사용하면 컬럼 기반으로 데이터를 저장 할 수 있지만 HDFS 기반의 온라인 처리가 가능한 H베이스의 경우 데이터 분석 처리가 느리다는 단점이 있어서 이를 보완해서 개발된 컬럼 기반 스토리지이고 2015년 말 아파치 재단의 인큐베이션 프로젝트로 선정되었습니다.


5.데이터 수집

  • Chukwa
    Chukwa 는 분산환견에서 생성되는 데이터를 HDFS에 안정적으로 저장하는 플랫폼입니다. 분산된 각 서버에서 에이전트를 실행하고 콜렉터(Collector)가 에이전트로 부터 데이터를 받아서 HDFS에 저장을 하게 됩니다. 콜렉터(Collector)는 100개의 에이전트당 하나씩 구동되어 데이터 중복 제거 등의 작업은 맵리듀스로 처리 합니다. 야후에서 개발되었으며 아파치 오픈소스 프로젝트로 공개 되었습니다

  • Flume
    플럼(Flume)은 척와(Chukwa) 처럼 분산된 서버에서 에이전트가 설치되고, 에이전트로 부터 데이터를 전달받은 콜렉터로 구성됩니다 차이점은 전체 데이터의 흐름을 관리하는 마스터 서버가 있어서 데이터를 어디서 수집하고 어떤 방식으로 전송하고 어디에 저장할지를 동적으로 변경 할 수 있습니다 클라우데라에서 개발되었으며 아파치 오픈소스 프로젝트로 공개돼 있습니다.

  • Kafka
    카프카(Kafka)는 데이터 스트림을 실시간으로 관리하기 위한 분산 메세징 시스템 입니다. 2011년 링크드인에서 자사의 대용량 이벤트처리를 위해 개발됐으며, 2012년 아파치 탑레벨 프로젝트가 되었습니다. 데이터 손실을 막기 위하여 디스크에 데이터를 저장 합니다. 파티셔닝을 지원하기 때문에 다수의 카프카 서버에서 메세지를 분산 처리 할 수 있으며, 시스템 안정성을 위하여 로드밸런싱과 내고장성(Fault Tolerant)를 보장합니다.


6. 데이터 처리

  • Pig
    피그(Pig)는 야후에서 개발했으나 현재 아파치 프로젝트에 속한 프로젝트로서 복잡한 맵리듀스 프로그래밍을 대체할 피그 라틴(Pig Latin) 이라는 자체 언어를 제공 하며 맵리듀스 API를 매우 단순화한 형태이고 SQL과 유사한 형태로 되어 있습니다.

  • Spark
    스파크(Spark)는 인메모리 기반의 범용 데이터 처리 플랫폼입니다. 배치 처리,머신러닝, SQL 질의 처리, 스트리밍 데이터 처리, 그래프 라이브러리 처리와 같은 다양한 작업을 수용할 수 있도록 설계돼 있습니다. 2014년에 아파치 최상위 프로젝트로 승격됐습니다.

  • Hive
    하이브(Hive) 는 하둡 기반의 데이터웨어하우징용 솔루션 입니다. 페이스북에서 개발했으며, 오픈소스로 공개되어 주목받은 기술로 SQL과 매우 유사한 HiveSQL 이라는 쿼리 언어를 제공합니다 그래서 자바를 모르더라도 하둡 데이터를 쉽게 분석할 수 있도록 도와주는 역활을 하며, HiveSQL은 내부적으로 맵리듀스 잡으로 변환되어 실행됩니다.

  • Tajo
    타조(Tajo)는 고려대학교 박사 과정 학생들이 주도 해서 개발한 하둡 기반의 데이터 웨어하우스 시스템 입니다. 2014년 아파치 최상위 프로젝트로 승격됐습니다. 맵리듀스 엔진이 아닌 자체 분산 처리 엔진을 사용하며, HiveSQL을 사용하는 다른 시스템과는 다르게 표준 SQL을 지원하는 것이 특징이며, HDFS, AWS S3, HBase, DBMS 등에 저장된 데이터 표준 SQL로 조회할 수 있고 이기종 저장소간의 데이터 조인 처리도 가능합니다.


7. 워크플로우 관리

  • Airflow
    에어플로우(Airflow)는 에어비앤비에서 개발한 워크플로우 플랫폼 이며, 데이터 흐름의 시각화, 스케줄링 , 모니터링이 가능하며 하이브 , 프레스토,DBMS 엔진과 결합하여 사용할 수 있습니다.

  • Azkaban
    아즈카반(Azkaban)은 링크드인에서 개발한 워크플로우 플랫폼 입니다. 링크드인은 자사의 복잡한 데이터 파이프라인을 관리하기 위해 아즈카반을 개발 하였으며 이를 오픈소스로 공개하였고 워크플로우 스케줄러 , 시각화된 절차 , 인증 및 권한 관리, 작업 모니터링 및 알람 등 다양한 기능을 제공 합니다.


8. 데이터 시각화

  •  Zepplin
    제플린(Zepplin)은 빅데이터 분석가를 위한 웹 기반의 분석 도구이며, 분석 결과를 즉시 표, 그래프로 표현하는 시각화까지 지원 합니다. 아이파이썬(iPython) 의 노트북(Notebook) 과 유사한 노트북 기능을 제공하며, 분석가는 이를 통해 쉽게 데이터를 추출, 정체, 분석, 공유 등을  할 수 있는 기능을 제공 하며, 스파크, 하이브, 타조, 엘라스틱 서치 등 다양한 분석 플랫폼과 연동 할 수 있습니다.


9. 데이터 직렬화

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

  • Thrift
    쓰리프트(Thrift)는 서로 다른 언어로 개발된 모듈들의 통합을 지원하는 RPC 프레임워크 입니다. 예를 들어 서비스 모듈은 자바로 개발하고, 서버 모듈은 C++로 개발됐을 때 쓰리프트로 쉽게 두 모듈이 통신하는 코드를 생성할 수 있습니다. 자바, C++, C#,펄,PHP,파이썬, 델파이, Node.js 등과 같이 다양한 언어를 지원 합니다.



※ Ref : 시작하세요! 하둡 프로그래밍(개정 2판) 책의 내용을 정리한 포스팅 입니다



답글 남기기