CODEDRAGON ㆍDevelopment/Big Data, R, ...
하둡 에코시스템(Ecosystem)
하둡은 특정 모듈 보다는 데이터처리 플랫폼 전체를 뜻합니다.
에코 시스템은 하둡 핵심 기능을 보완하는 서브 오픈 소스 소프트웨어들이다. 하둡이란 플랫폼상에 다양한 에코시스템(Eco-system)인 피그(Pig), 주키퍼(Zookeeper), 하이브(Hive), 플럼(Flume), 스쿱(Sqoop), 스파크(Spark) 등 수 많은 오픈소스 기술이 하둡 플랫폼과 함께 사용되며 주로 동물들의 이름을 딴 경우가 많습니다.
Hadoop 에코 시스템 도식도
· 주키퍼(ZooKeeper)
· 피그(Pig)
· 에이치베이스(Hbase)
· 하이브(Hive)
· 스파크(Spark)
· 플럼(Flume)과 스쿱(Sqoop)
· 우지(Oozie)
· 에이브로(Avro)
주키퍼(ZooKeeper)
· 분산 시스템 간의 정보 공유 및 상태 체크, 동기화를 처리하는 프레임워크, 분산 환경에서 노드(시스템) 간에 조정자(코디네이터) 역할을 수행하는 서비스입니다.
· 노드 간 정보 공유, 산 큐, 분산 락, 피어 그룹 대표 산출, 이벤트 등의 다양한 기능을 수행합니다.
· 기능에 비해 시스템이 단순하여 많이 사용되어 집니다.
· 주키퍼는 하나의 서버만 서비스를 수행하지 않고 분산해 각각의 클라이언트들이 동시에 작업을 할 수 있도록 하는 부하 분산 기능과 하나의 서버에서 처리된 결과가 다른 서버들과 동기화하는 과정의 락 처리 기능 등을 수행합니다. 또 현재 실행 중인 활성 서버가 장애가 발생할 때 대기 서버가 기존 활성 서버를 대신해서 처리하는 장애 상황 판단 및 복구 기능 등을 수행하는 것으로 전체적인 분산 처리 환경을 유지 할 수 있는 서비스를 수행합니다.
피그(Pig)
· 분산 처리 환경에서 맵 리듀스 상위에 있는 하이레벨 데이터 플로워 인터페이스 서비스입니다.(하둡의 워크플로우를 관리)
· 일정한 시간이 경과하거나 또는 주기적으로 반복해서 실행될 수 있는 잡들에 대하여 관리하며 맵리듀스 잡, 피그 잡 등의 시작과 완료 그리고 실행 중 에러등의 이벤트를 콜백할 수 있습니다.
· 피그는 스크립트 언어인 피그 라틴(Pig Latin) 언어를 사용해서 맵리듀스 기능을 수행하는 서비스를 제공합니다. 이는 프로그래밍에 익숙하지 않은 사용자들이 쉽게 분산 처리와 대규모 데이터 세트에 대한 분석을 지원하기 위해서 야후에서 개발된 서비스입니다.
에이치베이스(Hbase)
· HDFS를 지원하기 위한 칼럼 기반 데이터베이스인 에이치베이스는 대량의 데이터를 처리할 수 있는 NoSQL 데이터베이스 서비스입니다.
· NoSQL은 Not-only SQL 또는 No SQL의 약자이면 기존 관계형 데이터베이스와 다르게 설계된 비 관계형 데이터베이스입니다.
· 대표적인 NoSQL 데이터베이스에는 Hbase 이외에도 카산드라(Cassandra), 몽고디비(MongoDB)등 데이터 방식에 따라 다양한 서비스들이 존재합니다.
하이브(Hive)
· 피그와 유사한 대규모 데이터 세트에 대한 분석을 위해 페이스북(facebook)에서 개발된 데이터 분석용 서비스입니다.
· 하이브는 하이브 큐엘(Hive QL)이라는 명령어를 사용해서 질의를 수행하고 데이터를 분석하는 서비스입니다.
· 하이브도 맵리듀스 프로그램으로 전환이 되어서 데이터 처리를 진행하지만, 기존 RDBMS의 SQL에 익숙한 사용자들에게 거의 동일한 명령어를 제공하므로 맵 리듀스 프로그램에 익숙하지 않은 사용자에게 원하는 정보를 쉽게 이용할 수 있도록 해줍니다.
스파크(Spark)
· 스파크(Spark)는 2009년 UC버클리대학교 AMP 랩에서 만들어진 인-메모리 기반 오픈소스 데이터 처리 엔진으로 하둡에 비하여 빠른 데이터 처리 속도를 가지고 있습니다.
· 스파크는 하둡에 의지하지 않고 독자적으로 발전한 기술입니다.
· 머신 러닝이나 스트리밍 프로세싱, 그래프 컴퓨팅, SQL 같은 영역에서 활용되기 쉽도록 설계되었습니다.
· 스파크는 데이터처리 영역인 맵리듀스를 대신해 HDFS의 데이터를 연산합니다. 이는 처리할 데이터를 메모리에 상주시켜 읽고 쓰는 속도를 높여줍니다. 일부 하둡에서도 인-메모리 처리를 지원하고 있으나 구조적으로 인-메모리상에서 처리하는 스파크와는 차이가 있습니다.
· 현재 스파크는 동시성과 보안성 측면에서 보완이 필요하지만, 빠른 처리 속도 때문에 영역이 확장되고 있습니다.
플럼(Flume)과 스쿱(Sqoop)
· 플럼(Flume)은 외부 데이터 소스들로부터 데이터를 통합할 수 있는 툴로써 데이터를 받아오는 에이전트가 설치되는 소스(source)와 데이터를 어디에 보낼 노드에 설치되는 에이전트 싱크(Sink), 이들 간에 데이터를 받는 통로인 채널(channel)로 구성되어 있습니다. 데이터 수집이 필요한 곳에 소스 에이전트를 통해서 데이터를 받아서 HDFS에 통합 관리 할 수 있습니다.
· 스쿱(Sqoop)은 RDBMS와 HDFS 사이에 데이터를 주고받을 수 있는 데이터 통합 툴입니다. 하이브테이블, Avro 파일 등 하둡의 다양한 파일 형태를 HDFS로 가져오거나 내보낼 수 있습니다.
· RDBMS를 연결할 때는 JDBC(Java Database Connectivity)나 해당 데이터베이스의 커넥터를 사용할 수 있습니다. 스쿱은 하나의 테이블 또는 데이터베이스에 있는 전체 테이블들을 가져올 수 있고, SQL과 같이 WHERE 절을 통해서 원하는 행의 값들만 가져올 수 있습니다.
플롬(Flume) 구조
우지(Oozie)
· 빅데이터 처리를 위해서는 하나의 맵리듀스 처리 단계로는 대부분 문제를 해결할 수가 없습니다. 그래서 여러 개의 처리 단계를 거쳐서 결과에 만들어 내게 됩니다.
· 우지는 여러 처리 단계에 대한 워크플로우를 정의하고 수행합니다. 여러 처리 단계(작업, jobs) 사이에 의존 관계를 표시하고 수행 순서를 결정할 수 있습니다.
· 우지가 관리하는 워크플로우에는 맵리듀스 뿐만 아니라 하이브, 피그, 스쿱 등이 사용될 수 있습니다.
에이브로(Avro)
· 데이터 직렬화 프레임워크로 하둡의 시퀀스 파일과 유사한 연속적 객체를 위한 객체 컨테이너 포멧(Object container format)을 제공합니다.
· C와 유사한 언어로 스키마를 작성할 수 dT는 에이브로 IDL이라는 고수준 언어를 제공하며 가장 큰 특징은 특정 언어에 종속되지 않습니다. 그래서 다양한 언어(C, 자바, 펄, 파이썬, 루비 등)로 데이터를 쉽게 공유할 수 있습니다. 따라서 어떤 언어가 사라진다 하더라도 에이브로를 통한 데이터 직렬화가 가능합니다.
· 풍부한 스키마 해석 (schema resolution)기능을 제공하며 스키마를 보통 JSON으로 작성하며 바이너리 형태로 인코딩할 수 있습니다.
'Development > Big Data, R, ...' 카테고리의 다른 글
2.Summary - 워크숍, 워크숍 사전준비 사항 (0) | 2019.11.27 |
---|---|
SQOOP(스쿱) (0) | 2019.11.27 |
평균 제곱근 오차(RMSE; Root Mean Squared Error) (0) | 2019.11.25 |
모형 평가 (0) | 2019.11.23 |
요구사항 분석 절차, 요구사항 분석 절차 도식도(다이어그램) (0) | 2019.11.22 |