하둡 에코시스템이란?
Hadoop EcoSystem
빅데이터는 수집, 정제, 적재, 분석, 시각화의 여러 단계를 거친다.
이 단계를 거치는 동안 여러가지 기술을 이용하여 처리되고,
이 기술들을 통틀어 빅데이터 에코 시스템(Bigdata Eco System)이라고 한다.
하둡의 코어 프로젝트가 HDFS와 MapReduce인 것이고 이 외에도 다양한 서브 프로젝트가 많이 존재한다.
이러한 서브 프로젝트들의 모임을 하둡 에코시스템(Hadoop EcoSystem)이라고 한다.
- Hadoop의 코어 프로젝트 : HDFS(분산데이터저장), MapReduce(분산처리)
- Hadoop의 서브 프로젝트 : Workflow관리, 데이터 마이닝, 분석, 수집, 직렬화 등
수집기술
수집기술은 빅데이터 분석을 위한 원천 데이터를 수집하는 기술입니다. 원천 데이터는 실시간 데이터 수집 기술, 배치 데이터 수집기술이 있습니다. 원천 데이터의 종류에도 로그 데이터, DB 데이터, API 호출 데이터 등 여러가지 종류가 있습니다.
Flume
플룸
Chukwa 처럼 분산된 서버에 에이전트가 설치되고, 에이전트로부터 데이터를 전달받는 콜랙터로 구성
차이점은 전체 데이터의 흐름을 관리하는 마스터 서버가 있어서, 데이터를 어디서 수집하고, 어떤 방식으로 전송하고, 어디에 저장할 지를 동적으로 변경할 수 있다.
Kafka
카프카
링크드인에서 개발한 데이터 스트림을 실시간으로 관리하기 위한 분산 메시징 시스템
대용량 이벤트 처리에 특화되었다. 발행(publish) - 구독(subscribe) 모델로 구성된다.
NiFi
나이파이
미국 국가안보국(NSA)에서 개발한 시스템 간 데이터 전달을 효율적으로 처리, 관리, 모니터링하기 위한 최적의 시스템
Scribe
페이스북에서 개발한 데이터 수집 플랫폼
Chukwa와는 다르게 데이터를 중앙 집중 서버로 전송하는 방식.
최종 데이터는 HDFS외에 다양한 저장소를 활용할 수 있다.
설치와 구성이 쉽게 다양한 프로그램 언어를 지원.
HDFS에 저장하기 위해서는 JNI(Java Native Interface)를 이용해야 한다.
Chukwa
분산 환경에서 생성되는 데이터를 HDFS에 안정적으로 저장시키는 플랫폼
분산된 각 서버에서 에이전트(agent)를 실행하고, 콜랙터(collector)가 에이전트로부터 데이터를 받아 HDFS에 저장한다.
콜렉터는 100개의 에이전트당 하나씩 구동되며, 데이터 중복 제거 등의 작업은 MapReduce로 처리.
데이터 전송
Sqoop
대용량 데이터 전송 솔루션.
HDFS, RDBMS, DW, NoSQL등 다양한 저장소에 대용량 데이터를 신속하게 전송할 수 있는 방법을 제공.
Oracle, MS-SQL, DB2 등과 같은 상용 RDBMS와 MySQL, PostgresSQL과 같은 오픈소스 RDBMS등을 지원.
Hiho
Sqoop과 같은 대용량 데이터 전송 솔루션
현재 github에서 공개되어 있다.
하둡에서 데이터를 가져오기 위한 SQL을 지정할 수 있으며, JDBC 인터페이스를 지원.
작업관리기술
워크플로우 및 코디네이터 시스템
작업 관리 기술은 빅데이터를 분석하는 여러가지 단계를 효율적으로 생성, 관리하고 모니터링 할 수 있게 도와주는 기술 입니다.
Airflow
에어플로우
에어비앤비에서 개발한 데이터 흐름의 시각화, 스케쥴링, 모니터링이 가능한 워크플로우 플랫폼
하이브, 프레스토, DBMS 엔진과 결합하여 사용 할 수 있다.
Azkaban
아즈카반
링크드인에서 개발한 워크플로우 관리 도구
워크플로우 스케쥴러, 시각화된 절차, 인증 및 권한 관리, 작업 모니터링 및 알람 등
Oozie
하둡의 작업을 관리하는 워크플로우 및 코디네이터 시스템
- 자바(Java) 서블릿 컨테이너에서 실행되는 자바 웹 애플리케이션 서버
- 맵리듀스 작업이나 Pig 작업 같은 특화된 액션들로 구성된 워크플로우를 제어
데이터 직렬화
빅데이터 에코 시스템이 다양한 기술과 언어로 구현되기 때문에 각 언어간에 내부 객체를 공유해야 하는 경우가 있습니다. 이를 효율적으로 처리하기 위해서 데이터 직렬화기술을 이용합니다.
Avro
에이브로
아파치의 하둡 프로젝트에서 개발된 원격 프로시저 호출(RPC) 및 데이터 직렬화 프레임워크
자료형과 프로토콜 정의를 위해 JSON을 사용하며 콤팩트 바이너리 포맷으로 데이터를 직렬화합니다.
Thrift
스리프트
페이스북에서 개발한 서로 다른 언어로 개발된 모듈의 통합을 지원하는 RPC 프레임워크
데이터 타입과 서비스 인터페이스를 선언하면, RPC 형태의 클라이언트와 서버 코드를 자동으로 생성해 줍니다.
자바, C++, C#, Perl, PHP, 파이썬, 델파이, Erlang, Go, Node.js 등과 같이 다양한 언어를 지원합니다.
Protocol Buffers
프로토콜 버퍼
구글에서 개발한 RPC 프레임워크이며 구조화된 데이터를 직렬화하는 방식을 제공
다양한 언어를 지원하며 특히 직렬화 속도가 빠르고 직렬화된 파일의 크기도 작아서 Apache Avro 파일 포맷과 함께 많이 사용됩니다.
데이터 저장
빅데이터는 대용량의 데이터를 저장하기 때문에 데이터의 저장의 안정성과 속도가 중요합니다. HDFS외에도 아마존 AWS의 S3, MS Azure의 Data Lake, Blob Storage, Google의 Cloud Storage가 있습니다.
HDFS
하둡 분산 파일 시스템
분산 환경에서 생성되는 데이터를 HDFS에 안정적으로 저장시키는 플랫폼
분산된 각 서버에서 에이전트(agent)를 실행하고, 콜랙터(collector)가 에이전트로부터 데이터를 받아 HDFS에 저장한다.
콜렉터는 100개의 에이전트당 하나씩 구동되며, 데이터 중복 제거 등의 작업은 MapReduce로 처리.
S3
아마존에서 제공하는 인터넷용 저장소
Tajo
고려대학교 정보통신대학 컴퓨터학과 DB연구실 박사 과정학생들이 주도해서 개발한 하둡 기반의 DW 시스템.
데이터 저장소는 HDFS를 사용하되, 표준DB언어인 SQL을 통해 실시간으로 데이터를 조회할 수 있습니다.
Hive보다 2 ~ 3배 빠르며, 클라우드데라의 임팔라(Impala)와는 비슷한 속도를 보여줍니다.
임팔라가 클라우드데라의 하둡을 써야 하는 제약에 비해, 특정 업체 솔루션에 종속되지 않는 장점이 있습니다.
NoSQL
HBase
구글 Bigtable을 기반으로 개발된 비관계형 데이터베이스로 HDFS의 컬럼(Column) 기반 데이터베이스
- 실시간 랜덤 조회 및 업데이트가 가능
- 각각의 프로세스들은 개인의 데이터를 비동기적으로 업데이트 할 수 있다.
- 단, MapReduce는 일괄처리 방식으로 수행된다.
데이터 처리
데이터 처리는 빅데이터를 분석하는 기술입니다. 하둡의 맵리듀스를 기반으로, 스파크, 하이브, HBase, 임팔라등 여러가지 기술이 있습니다.
MapReduce
HDFS상에서 동작하는 가장 기본적인 분석 기술
간단한 단위작업을 반복할 때 효율적인 맵리듀스 모델을 이용하여 데이터를 분석
Spark
인메모리 기반의 범용 데이터 처리 플랫폼
- 맵리듀스와 비슷한 목적의 업무를 수행하지만 하드디스크가 아닌 메모리를 활용하여 매우 빠른 속도로 데이터를 처리
- 인 메모리(In-Memory) 캐싱, 일반 배치 프로세싱(Batch Processing), 스트리밍 분석, 머신러닝, 그래프 데이터 베이스 및 임시 쿼리 등을 지원
- 현재 가장 빠르게 성장하고 있는 오픈소스 프로젝트 중의 하나.
Impala
클라우드데라에서 개발한 하둡 기반의 실시간 SQL 질의 시스템
맵리듀스를 사용하지 않고, 자체 개발한 엔진을 사용해 빠른 성능을 보여줍니다.
임팔라(Impala)는 데이터 조회를 위한 인터페이스로, HiveQL을 사용합니다.
수초 내에 SQL 질의 결과를 확인할 수 있으며, HBase와도 연동이 가능합니다.
Presto
프레스토
페이스북이 개발한 대화형 질의를 처리하기 위한 분산 쿼리 엔진
메모리 기반으로 데이터를 처리하며, 다양한 데이터 저장소에 저장된 데이터를 SQL로 처리할 수 있습니다.
특정 질의 경우 하이브 대비 10배 정도 빠른 성능을 보여주며, 현재 오픈소스로 개발이 진행되고 있습니다.
Hive
페이스북에서 만든 오픈소스로 데이터 웨어하우징 솔루션
- SQL과 매우 유사한 HiveQL이라는 쿼리를 제공하여 자바를 잘 모르는 유저도 쉽게 하둡 데이터를 분석할 수 있다.
- HiveQL은 내부적으로 MapReduce 잡으로 변환되어 실행된다.
Hcatalog
Pig, MapReduce, Spark에서 Hive 메타스토어 테이블에 액세스할 수 있는 도구
테이블을 생성하거나 기타 작업을 수행할 수 있는 REST 인터페이스 및 명령줄 클라이언트를 제공합니다.
Pig
복잡한 MapReduce 프로그래밍을 대체할 Pig Latin이라는 자체 언어를 제공.
하둡에 저장된 데이터를 맵리듀스 프로그램을 만들지 않고 SQL과 유사한 스크립트를 이용하여 데이터를 처리.
MapReduce API를 매우 단순화시키고 SQL과 유사한 형태로 설계되었다.
클러스터 관리
분산 리소스 관리
빅데이터는 단일 시스템이 보다는 보통 클러스터로 처리 되기 때문에 자원의 효율적인 사용이 필요합니다. 클러스터의 관리를 위한 여러가지 기술이 있습니다.
YARN
얀
작업 스케줄링 및 클러스터 리소스 관리를 위한 프레임워크
기존 하둡의 데이터 처리 프레임워크인 맵리듀스의 단점을 극복하기 위해서 시작된 프로젝트
하둡2.0부터 이용 가능.
맵리듀스, 하이브, 임팔라, 타조, 스파크 등 다양한 애플리케이션들은 얀에서 리소스를 할당받아 작업을 실행.
Mesos
메소스
Cloud환경에 대한 리소스 관리
클라우드 인프라스트럭처 및 컴퓨팅 엔진의 다양한 자원(CPU, 메모리, 디스크)을 통합적으로 관리할 수 있도록 만든 자원 관리 프로젝트
다양한 글로벌 기업들이 메소스로 클러스터 자원을 관리
메소스는 클러스터링 환경에서 동적으로 자원을 할당하고 격리해주는 매커니즘을 제공
이를 통해 분산 환경에서 작업 실행을 최적화시킬 수 있습니다.
웹 기반의 UI, 자바, C++, 파이썬 API를 제공
하둡, 스파크(Spark), 스톰(Storm), 엘라스틱 서치(Elastic Search), 카산드라(Cassandra), 젠킨스(Jenkins) 등 다양한 애플리케이션을 메소스에서 실행할 수 있습니다.
분산서버관리
클러스터에서 여러가지 기술이 이용될 때 하나의 서버에서 모든 작업이 진행되면 이 서버가 단일실패지점(SPOF)가 됩니다. 이로 인한 리스크를 줄이기 위해 분산 서버 관리 기술을 이용합니다.
Zookeeper
분산 환경에서 서버들간 상호 조정이 필요한 다양한 서비스를 제공하는 시스템. 모니터링 및 관리.
- 하나의 서버에만 서비스가 집중되지 않도록 서비스를 알맞게 분산하여 동시에 처리하게 해줌
- 하나의 서버에서 처리한 결과를 다른 서버들과도 동기화 -> 데이터 안정성 보장
- 운영(active) 서버에서 문제가 발생해 서비스를 제공할 수 없는 경우,
다른 대기중인 서버를 운영 서버로 바꿔 서비스가 중지없이 제공되게 해줌 - 분산 환경을 구성하는 서버들의 환경설정을 통합적으로 관리
시각화
Zeppelin
제플린
한국의 NFLab이라는 회사에서 개발하여 Apache top level 프로젝트로 최근 승인 받은 오픈소스 솔루션
Notebook 이라고 하는 웹 기반 Workspace에 Spark, Tajo, Hive, ElasticSearch 등 다양한 솔루션의 API, Query 등을 실행하고 결과를 웹에 나타내는 솔루션
Hue
Hadoop User Experience; 하둡 휴
하둡과 하둡 에코시스템의 지원을 위한 웹 인터페이스를 제공하는 오픈 소스
Hive 쿼리를 실행하는 인터페이스를 제공하고, 시각화를 위한 도구를 제공합니다.
잡의 스케줄링을 위한 인터페이스와 잡, HDFS, 등 하둡을 모니터링하기 위한 인터페이스도 제공합니다.
그외
Mahout
하둡 기반 데이터 마이닝 알고리즘을 구현한 오픈소스
지원하는 알고리즘
- 현재 분류(classification)
- 클러스터링(clustering)
- 추천 및 협업 필터링(Recommenders/Collavorative filtering)
- 패턴 마이닝(Pattern Mining)
- 회귀 분석(Regression)
- 차원 리덕션(Dimension Reduction)
- 진화 알고리즘(Evolutionary Algorithms) 등
엑셈 플라밍고 (EXEM Flamingo) - 빅데이터 통합 관리 플랫폼
(1) 개요
- 하둡 에코 시스템을 기반으로 빅데이터 플랫폼을 구축한 고객들의 경우, 다양한 오픈소스 소프트웨어를 운영하면서 발생하는 각각의 이슈를 해결하는데 상당한 어려움을 겪고 있음
- Spark, Hive, MapReduce, Kafka, HBase, HDFS, R 등 다양한 빅데이터 분석 환경에서 시스템 운영자 및 데이터 분석가는 수십 내지 수백 대의 노드(Node)를 관리해야 하기 때문에 시스템 성능 관리가 쉽지 않음. 따라서 빅데이터 분석 환경을 보다 쉽게 관리할 수 있는 통합 솔루션에 대한 니즈가 발생하기 시작
- 엑셈의 플라밍고는 빅데이터 수집부터 저장, 분석에 필요한 데이터 가공까지 손쉽게 활용할 수 있도록 돕는 플랫폼. 즉 하둡 에코 시스템에 대한 통합 관리 솔루션. 플랫폼 모니터링, 보유 데이터의 브라우징, 데이터 정제 및 처리를 위한 워크플로우 등 안정적인 운영과 활용이 가능하도록 다양한 기능을 제공
(2) 주요 기능
1) 실시간 모니터링: 하둡 성능 관리에 최적화된 모니터링 패턴 제공
2) CPU 코어 모니터링: 하나의 클러스터 공유를 통한 분석 작업 별 CPU 코어 사용량 모니터링
3) 알람/메일 연계: 주요 컴포넌트에 대한 비정상 동작 시 경보 메일 발송
4) 분석 애플리케이션 모니터링: 장애 발생 시 실행 로그를 빠르게 확인하여 문제 해결
5) 에코 시스템 관리: 서비스 상태 체크, 안정적인 운영 지원
6) Zeppelin Notebook: 단계별 쿼리 관리, 조화된 데이터의 다운로드 및 시각화 기능 제공
7) 대량 파일/디렉토리 브라우징: 수많은 디렉토리와 파일을 동시에 관리
8) 워크플로우 기능: Drag & Drop 방식으로 데이터 처리 지원
🔽 REFERENCE
'기타 > 빅데이터 - Hadoop' 카테고리의 다른 글
Linux/Ubuntu # Language Support를 install하던 중 만난 에러 (0) | 2021.09.03 |
---|---|
Linux(Ubuntu) # 파일 Windows 바탕화면에 옮기는 방법 (0) | 2021.09.02 |
Hadoop은 배치 프로그램(일괄처리)에 적합하다. (0) | 2021.08.30 |
Linux에서 Windows 바탕화면으로 파일 쉽게 옮기는 방법? WinSCP! (4) | 2021.08.27 |
Hadoop # ant실행 후 Driver파일에 cannot find symbol 에러가 떴을 경우 (0) | 2021.08.26 |