hadoop 총정리 2편
#
Find similar titles
- 최초 작성자
- 최근 업데이트
Structured data
- Category
- Programming
Table of Contents
서론. 모듈화에 대한 이해 #
컴퓨터, 자동차, 스마트폰 등 고성능의 제품을 만들 때는 한 기업만 만드는 것이 아니다. 단적인 예로 CPU는 어느 기업에서 만들고 그래픽 카드는 또 다른 회사에서 만드는 것이다. 이러한 방식을 모듈화라고 한다. 모듈화된 부품(프로그램)은 하나로 모여 용도에 맞게 제작될 수 있고 제품의 사양을 결정할 수 있다. 하둡 에코시스템은 이러한 배경으로 명명되었다. hadoop 총정리 1편에서 설명한 맵리듀스, 분산형 파일시스템 등 핵심 프레임워크 이외에 다양한 기능의 프레임워크가 모여 하둡 서비스를 제공한다. 사용자는 모듈화된 여러 프레임워크 중에서 자신의 용도에 맞는 프레임워크를 조합하여 하둡서비스를 이용하는 것이다.
하둡 에코시스템 #
하둡과 관련된 프레임워크들을 하둡 에코시스템이라 한다. 하둡 코어 프로젝트(HDFS, MapReduce)와 하둡 서브 프로젝트(수집, 분석, 마이닝 등)로 구성된다. 서론에서 언급한 바와 같이 다did한 프레임워크가 존재하며, 사용자의 상황에 맞추어 조립하여 사용할 수 있다. 이번 편에서는 그 중에서도 가장 많이 사용되는 프레임워크에 대해서 소개하고자 한다.
그림1 하둡에코시스템 (출처: 12bme 블로그)
Zookeeper(주키퍼) #
하둡 에코시스템(생태계)에서 서브 프로젝트는 주로 동물들의 이름을 딴 경우가 많다. 타조, 하마, 돼지 등등 친숙한 동물들의 이름으로 이루어져 있다. 각 동물들은 하나의 프레임워크를 구성하는데, Zookeeper(사육사)는 이름에서 그 역할을 쉽게 짐작할 수 있다. 분산 시스템 간의 정보 공유 및 상태 체크, 동기화를 처리하는 프레임워크이다. 이러한 시스템을 코디네이션 서비스 시스템이라고 한다. Zookeeper를 많이 사용하는 이유는 기능에 비해 시스템이 단순하기 때문이다. 분산 큐, 분산 락, 피어 그룹 대표 산출 등 다양한 기능을 가진다. 몇 개의 기본 기능만으로도 사용이 가능하다.
그림2 주키퍼 (출처: AO DBA 유튜브)
Oozie(우지) #
하둡의 워크플로우를 관리한다. 일정한 시간이 경과하거나 또는 주기적으로 반복해서 실행될 수 있는 잡들에 대하여 관리하며 맵리듀스 잡, 피그 잡 등의 시작과 완료 그리고 실행 중 에러등의 이벤트를 콜 백할 수 있다.
그림3 우지 (출처: Hadoop Tutorial: Oozie 슬라이드쉐어)
Avro(에이브로) #
데이터 직렬화 프레임워크이다. 가장 큰 특징은 '특정 언어에 종속되지 않는다' 이다. 다양한 언어(C, 자바, 펄, 파이썬, 루비 등)로 데이터를 쉽게 공유할 수 있는 것이다. 따라서 어떤 언어가 사라진다 하더라도 에이브로를 통한 데이터 직렬화가 가능하다. 스키마를 보통 JSON으로 작성하며 바이너리 형태로 인코딩한다.
그림4 에이브로 (출처: Denny Lee 블로그)
Parquet(파케이) #
컬럼 기준으로 데이터를 저장하는 포맷이다. 컬럼 단위의 중첩된 데이터 저장은 효율적으로 저장공간을 절약한다. 또한, 특정 열 값을 가져오는 쿼리가 전체 행을 읽을 필요가 없기 때문에 성능이 좋은 프레임워크이다.
그림5 파케이 (출처: Taking Hadoop to Enterprise Security Standards 슬라이드쉐어)
Flume(플룸) #
플룸은 수집기능을 담당하는 프레임워크이다. 웹서버에서 로그 파일을 수집하고 로그 이벤트를 저장소로 전달한다. 플룸 에이전트는 소스, 채널, 싱크로 구성된다. 소스는 이벤트를 수집하여 채널로 전달하고, 채널은 소스와 싱크의 통로이다. USB 케이블의 입력 단자, 케이블, 출력 단자를 생각하면 이해가 쉽다.
그림6 플룸 (출처: quora 사이트)
Sqoop(스쿱) #
스쿱은 플룸과 같이 수집기능을 담당하는 프레임워크이다. 하지만 스쿱은 관계형 데이터베이스 관리시스템(RDBMS)과 같은 정형적인 데이터 저장소에서 데이터를 추출하도록 도와준다. 관계형 데이터베이스의 데이터를 HBase로 옮기는 데 사용하는 것이 대표적이다.
그림7 스쿱 (출처: onlineguwahati 사이트)
Pig(피그) #
하둡 시스템의 맵리듀스 API를 단순화시킨 프레임워크이다. 사용하는 이유는 대용량 데이터를 처리할 때 맵리듀스 함수가 처리하기 어려운 조인 기능 등으로 쉽게 처리할 수 있다. 피그 라틴언어를 사용하는데 이를 통해 데이터 흐름을 표현할 수 있다.
그림8 피그 (출처: edureka 블로그)
Crunch(크런치) #
맵리듀스 파이프라인을 작성하는 API이다. Work Flow 상 개별 맵리듀스 Job을 직접 관리할 필요가 없기 때문에 여러 단계의 파이프라인에만 개발자가 집중할 수 있도록 해준다.
그림9 크런치 (출처: Engineering Health 블로그)
HBase #
분산형 파일 시스템을 사용하는 컬럼기반 데이터베이스이다. 실시간으로 랜덤에이터 조회 및 수정이 가능하며 비동기적으로 데이터를 수정할 수 있다. RDBMS의 비확장성 비분산 등의 단점을 완벽히 커버한다. 단지 노드만 추가하면 선형으로 확장할 수 있다.
그림10 HBase (출처: thirdeyedata 사이트)
Hive(하이브) #
하이브는 자바 프로그래밍을 모르는 사용자도 빅데이터를 분석하고 처리할 수 있도록 도와주는 프레임워크이다. HiveQL이라는 자체 쿼리를 제공한다. HiveQL은 실핼 될 때 맵리듀스의 Job으로 변환되어 실행된다.
그림11 하이브 (출처: 깨죽 블로그)
Impala #
하이브와 같이 SQL 질의 시스템이다. 다만 맵리듀스를 사용하지 않고 자체 개발한 엔진을 사용한다. 쿼리는 HiveQL을 사용하고 Hbase와도 연동된다.
그림12 Impala (출처: cloudera 사이트)
Tajo #
하둡 기반의 DW시스템이다. Hive보다 2~3배 정도 빠르고 임팔라와는 비슷한 속도를 가진다. 특정한 솔루션에 종속되지 않는 장점이 있다.
그림13 Tajo (출처: gartner 블로그)
무엇을 사용하고 공부해야 하는가? #
앞서 언급한 바와 같이 하둡 에코시스템은 다양한 프레임워크로 구성되어 있다. 이번 편에서 소개하지 못한 프레임워크(Mahout, Hiho 등등)도 무수히 많다. 이런 많은 기능에 하둡 사용을 주저할 필요가 없다. 수집, 저장, 처리, 분석, 시각화 기술에 맞추어 각 프레임워크를 연결해주면 된다.
맺음 #
다음 편에서는 하둡의 설치와 간단한 활용 예제를 소개할 예정이다.
참고출처 #
ITworld.com - 빅 데이터의 열쇠 하둡 총정리
빅데이터는 넘커 Tistory 블로그 - 하둡 에코시스템이란?
RYU.FREE Tistory 블로그 - 하둡 에코 시스템
woogado Naver 블로그 - 빅데이터 요소 기술들
관련 키워드 #
하둡, HADOOP, Hadoop, hadoop, 에코 시스템, 하둡 에코 시스템