읽記 (데이터 과학, IT 분야)/빅데이터 시스템 구축 가이드

[빅데이터] 5. 빅데이터 처리와 저장의 핵심 기술, 하둡과 NoSQL (2)

Light Pillar 2019. 12. 19. 17:31

내용 파악에 점점 시간이 오래 걸리고 있다. 하지만, 꾸준히 조금씩이라도...


2. 하둡의 구성 요소와 적용 방안

하둡 에코 시스템은 하둡의 기본적인 HDFS와 MapReduce에 프로젝트를 추가하여 하둡 기반의 폭넓은 플랫폼을 제공한다. 이는 하둡의 HDFS와 MapReduce로 하기 어려운 작업을 더 쉽게 할 수 있게 한다.

 

 

하둡 에코 시스템

하둡 관련 필요 기술들로 관련 프로젝트들을 구성하고 이들을 모아 하나의 생태계를 구성한것을 말한다.

하나의 하둡 에코 시스템이 모든 비즈니스의 빅데이터 처리에 알맞은 것은 아니므로, 해당 분야별로 필요한 기술 요소를 선택하여 거기에 맞는 하둡 아키텍처를 구성해야 한다.

기본적인 하둡 에코시스템

 

Hcatalog

하둡은 HDFS에 대용량 파일을 저장할 수 있지만, 저장 파일은 비구조적 데이터이기에 쉽게 정보를 얻기가 어렵다.

일반적인 파일 시스템을 이용하여 데이터에 대한 접근과 관리를 하고자 한다면, 파일 형태로 저장된 데이터가 어느 위치에, 어떤 포맷으로, 어떤 구조로 저장되어 있는지 먼저 파악되어야 한다. 

Hcatalog는 메타데이터와 테이블 관리를 지원함으로써 이러한 어려움을 덜어준다. 저장 구조는 HDFS를 사용하고, Hive, Pig 등의 접근성을 위해 테이블 기반의 Hcatalog를 사용한다. Hcatalog는 메타데이터 추상화 계층을 제공함으로써 테이블 형태의 접근을 보장한다.

Hcatalog 데이터 저장 공간의 추상화

추상화는 파일 저장 구조나 저장 포맷, 저장 위치, 읽기 위치 등을 알 필요 없이 데이터 정보를 보여준다.

 

Hcatalog의 역할

구분 설명
일관된 공유 다양한 하둡 툴(Pig, Hive, MapReduce)을 위해 공유된 스키마와 데이터 형식 제공
  → 데이터 처리 툴 간의 상호 운용성 제공
  → 사용자는 환경에 맞는 최상의 툴 선택 가능
추상화 사용자는 저장 위치나 저장 방법에 대해 알 필요가 없음
  →관계형 데이터 뷰를 제공

각 하둡 데이터 계층의 특징

계층 설명
Batch Layer 원시 데이터를 다루는 계층으로 영구적 성격의 데이터 소스
주 이요자는 데이터 과학자나 분석가가 되며 디스크 기반의 접근을 통해 작업 수행
Serving Layer 비정형 혹은 반정형 데이터를 전통적인 웨어하우스의 관계형 뷰로 제공함으로써 분석의 편리함을 제공
메타 데이터가 필요하며 Hcatalog를 통해 테이블 추상화 정의로 HDFS 파일에 접근함
Speed Layer 뷰에 대한 데이터 접근의 최적화와 성능을 고려한 계층
HBASE가 주로 쓰임

 

 

Pig

Pig는 하둡 대용량 데이터 처리를 위한 고급 언어(사람이 알기 쉽도록 만들어진 프로그래밍 언어)이자 처리 엔진이다.

Pig의 구조

구분 설명
Pig 라틴(Latin) 데이터 흐름 언어로서 상위 레벨의 명령어 기반 언어
생산성을 높일 수 있음
 →100라인 Java를 5라인 Pig Latin으로 구현
 →Java로 4시간 걸리는 작성을 Pig Latin으로 15분 만에 끝냄
비 Java 프로그래머도 작성 가능
일반적인 join, group, filter, sort 등의 기능을 지원
Pig 엔진(Engine) 하둡의 상위 단에서 Pig Latin 실행을 위한 엔진
 →하둡에 대한 튜닝이 필요 없음
 →하둡 인터페이스 변화에 영향을 받지 않음
Pig 컴파일러(Compiler) Pig Latin을 MapReduce로 변환
 →실행에 대한 최적화 수행

Pig Latin이 Map-Reduce로 변환되는 과정

주의해야할 점은 Pig는 대량 데이터 처리를 지원하지만, 성능 문제로 소량 데이터 처리에는 적합하지 않다.

Pig는 작동 모드에 따라 로컬 모드와 하둡 모드로 나뉜다.

  • 로컬 모드 : 단일 JVM 상에서 동작, 로컬 파일시스템에서 작동. 개발 및 프로토타이핑에 효과적
  • 하둡 모드 : Pig Latin을 MapReduce Job으로 변경하여 실행. 기본적인 하둡과 HDFS가 반드시 설치 필요

Pig는 MapReduce의 복잡하고 많은 코드를 단순화하여 대량의 데이터를 다룬다. Hive와 더불어 하둡 데이터를 간단하게 다룸으로써 생산성과 접근성이 좋다.

 

 

Hive

Hive는 데이터 요약, 쿼리, 분석을 제공하며 하둡에서 동작하는 데이터 웨어하우스 인프라 구조다. Pig의 등장  배경이 집계 함수나 필터링 등의 MapReduce 구현이 어려운 데서 나왔다면, Hive는 여기에 데이터 웨어하우스 환경을 제공하는데 있다.

Hive Architecture

Hive는 RDB SQL과 유사한 HiveQL 언어를 제공한다. Hive는 RDB처럼 실시간 쿼리나 빠른 쿼리를 처리하지 못한다. Hive는 실시간을 목적으로 설계되지 않았으며, 확장과 사용 편의성에 중점을 두었다. 내부적으로 보면 하둡은 MapReduce 처리가 기본이므로 Hive는 내부 쿼리를 MapReduce 태스크로 변환하여 실행할 뿐이다.

 

전체 Hive 구성 요소와 역할

구성 설명
MetaStore 시스템 카탈로그, 테이블, 컬럼 및 파티션 등의 정보를 메타 데이터에 저장
Driver HiveQL 문장의 라이프 사이클 관리
Compiler HiveQL을 MapReduce 태스크로 컴파일 실행
실행 엔진 적당한 순서에 따라 컴파일러에 의해 생성된 태스크를 실행
HiveServer Thrift와 JDBC/ODBC 인터페이스 제공

Hive의 명령어는 RDF 명령어와 비슷하기에 기존 SQL 개발자들도 Hive에 쉽게 접근할 수 있다. Hive는 비록 데이터 웨어하우스의 실시간성과 빠른 처리를 보장하진 않지만 쉬운 접근을 제공한다.

 

 

ZooKeeper

ZooKeeper는 아파치 재단의 분산 시스템 환경 프로젝트다. 분산 환경에서는 예기치 못한 네트워크나 일부 서비스 등의 장애로 전체 시스템에 문제가 생길 수 있다. 이를 해결하기 위해 분산 환경에서는 동기화, 모니터링, 신뢰성 확보의 다양한 관점이 중요하다. ZooKeeper는 바로 이런 문제를 해결할 수 있는 시스템이다.

ZooKeeper의 주요 특징 설명

구분 내용
Configure Information 환경 설정 관리
각 서버들을 통합적으로 관리하여 환경 설정을 따로 분산하지 않고 주키퍼 자체적으로 관리
Group Service 장애 판단 및 복구
액티브 서버(일반 서버)에서 문제가 발생하여 서비스를 지속적으로 처리하지 못 할 경우 스탠바이 서버(일반 서버)가 액티브 서버로 바뀌어 기존 액티브 서버가 서비스하던 일을 처리
Synchronization 하나의 서버에서 처리된 결과를 또 다른 서버들과 동기화하여 데이터 안정성을 보장
Naming 네이밍 서비스를 통한 부하 분산
하나의 클라이언트(하나의 서버)만 서비스를 수행하지 않고 알맞게 분산하여 각각의 클라이언트들이 동시 작업할 수 있도록 지원

ZooKeeper의 주요 장점

구분 내용
In-Memory 빠른 실행과 고가용성ㅇ르 위해 메모리에서 작업하며 실패에 대비해 스토리지에 백업
분산 처리 신뢰성과 Fault-tolerance 유지를 위해 서버들 간의 자동 동기화 수행
NoSQL 파일 시스템과 유사한 트리 구조로 Key-Value로 구성
/myapp/config/var1, /myapp/username의 구조에 간단한 명령어로 읽기와 쓰기 수행

 

 

Ambari

암바리(Ambari)는 하둡 클러스터의 프로비저닝, 관리 그리고 모니터링 등 하둡 관리의 편리성을 위해 개발된 소프트웨어다. 암바리는 RESTful API 기반의 웹 UI를 통해 쉽게 하둡을 관리한다.

 

암바리의 주요 기능

구분 내용
Provison 어러 호스트에 스텝-바이-스텝의 하둡 서비스 설치 마법사 제공
하둡 클러스터를 위한 하둡 서비스의 환경 변수 관리
Manage 전체 하둡 클러스터에 대한 서비스의 시작, 종료, 재설정의 중앙 관리
Monitor 하둡 클러스터에 대한 상태 대시보드 제공
Ganglia와 Nagios를 통한 메트릭 수집 및 시스템 경고 설정

Ambari System Architecture

 

 

Mahaout, Sqoop, Avro

새로운 하둡 에코 시스템의 하부 프로젝트

Mahaout은 확장 가능한 기계학습 라이브러리이자 수집된 데이터 처리를 위한 기계학습 툴이다.

  • Recommander Engine  취향을 추측하여 관심 있는 분야의 새롭거나 관련 있는 아이템 추천
  • Clustring  유사한 그룹을 묶어 그곳에서 새로운 지식과 가치를 발견
  • Classification  일정한 집단에 대한 특정 정의를 통해 분류화 및 그룹화함

 

Sqoop은 대용량 벌크 데이터의 전송을 위해 쓰이는데, 주로 외부 DB에서 하둡으로 데이터를 옮기거나, 배치 작업을 통해 일정 간격으로 외부 DB에서 데이터를 긁어 오는 데 사용된다.

 

Avro는 데이터 직렬화 시스템으로 JSON을 이용해 데이터 형식과 프로토콜을 정의하며, 작고 빠른 바이너리 포맷으로 데이터를 직렬화한다.


2015년 6월에 초판발행된 책이어서인지 기술들의 소개는 현재의 버전들에 비해 조금씩 차이가 있는 듯 하다.

 

 

[빅데이터] 0. 목차