Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

빅데이터 쪽은 드문드문 했다. AWS를 기반으로 개발활동을 하고 있으니, AWS 환경에서 빅데이터를 제대로 시작해보기로 한다. 하여 AWS training 문서들을 정주행하기로 했다. 이 문서는 스터디노트 정도로 보면 되겠다. 가장 기본이 되는 빅 데이터 개요 문서 부터 시작한다. 빅 데이터 개요는 4개의 모듈로 구성된다.
  1. 빅 데이터 개요
2. 데이터베이스 아키텍처 3. Hadoop 및 MapReduce 4. Hive 및 Pig 5. AWS 및 빅 데이터

빅 데이터 개요

빅데이터에 대한 소개, 아키텍처 구성요소, 사용사례를 살핀다. 기본중의 기본이라 할 있겠다.

빅 데이터란

빅 데이터는 너무 방대하고 복잡해서 기존의 데이터베이스 소프트웨어로는 처리에 부적합한 데이터를 의미한다. 빅데이터는 데이터의 수집, 공유, 전송, 시각화, 질의, 업데이트와 같은 데이터의 일반적인 작업들 조차도 버거워지는 종류의 데이터를 의미한다 . 이라는 단어가 들어가 있기 때문에, 데이터 세트의 크기가 중요한 요소라고 생각하기 쉽지만, 크기가 가장 중요한 요소는 아니라고 보는게 일반적인 시각이다.

빅 데이터는 Volume, Variety, Velocity의 3가지 차원으로 구성이 되며, 최근에는 Veracity, Value가 추가된 5차원으로 표현하기도 한다.
  1. Volume : 크기가 가장 중요한 요소는 아니라고 했지만, 중요한 요소임에는 분명하다. 데이터의 양자체가 늘어난게 명백한 현실이기 때문이다. 빅 데이터에서는 데이터의 크기로 부터 통찰력과 가치를 얻을 수 있을 것으로 기대한다. 테라바이트 이상은 되야 빅데이터로 쳐주는 분위기이다.
  2. Velocity : 빅 데이터는 속도가 중요하다. 보통 리얼타임을 의미한다. Volume과 결합하면, 대량의 데이터를 빠른시간안에 처리 할 수 있어야 하는 것이 중요특징으로 강조 된다. 속도는 시장의 변화에 얼마나 빨리 반응 할 수 있느냐를 가늠하는 척도이기도 하다.
  3. Variety : 텍스트, 이미지, 동영상, 오디오 등 다양한 데이터들이 통합된다. 데이터를 통합하므로써, 데이터에 대한 통찰력을 얻을 수 있을 것으로 기대한다.
  4. Variability : 데이터의 불일치로 획일적인 데이터 처리 프로세스를 사용하기가 어렵다.
 The 3 V's of Big Data

요는 다양한 종류의 데이터가 계속 쌓여서, 기존의 데이터베이스 시스템으로의 처리가 어려워지는 수준이 되면 빅데이터라고 부를 수 있게 된다. 이때 부터, 분석, 검색, 전송, 캡쳐, 공유, 시각화, 정보보호, 저장을 위한 빅데이터 솔류션이 필요해진다.

빅 데이터가 빅인 이유

 Big Data growth

데이터의 양은 기하급수적으로 증가하고 있다. 증가하는 데이터의 속성을 보면 "정형화 할 수 있는 엔터프라이즈 데이터"대신 "정형화 하기 힘든 인터넷 서비스 데이터"가 다수를 차지하고 있음을 알 수 있다. 데이터원본이 소셜 미디어 서비스, (자동으로 만들어지는)IoT 센서 데이터, 오디오/이미지 등으로 다양해지고 그 규모가 급격하게 커지기 때문이다. 전체 증가분의 약 80%를 차지하고 있다.

업종별 빅 데이터 사용 사례

  • 광고 : 클릭스트림 로그, 타깃 광고 처리 및 분석
  • 스트리밍 미디어 : 추천, 패턴매칭, 미디어 인코딩, 파일 프로세싱
  • 오일 및 가스 : 가스 계량기, 파이프라인 센서
  • 소매 : 사기 행위 탐지, 감성 분석, 트랜잭션 분석, 트랜드 분석
  • 소비자 상태 : 의료 기록 분석, 임상 분석, 바이오 센서
  • 보안 : 위협 분석 및 탐지, 보안 분석, 바이러스 백신, 이미지 인식
  • 소셜 미디어 : 사용자 인구 통계, 브랜드 인식
  • 게임 : 인게임 분석, 사용량 분석
  • 여행 : 추천, 요금 책정
  • 정부 기관 : 퍼블릭 데이터 세트, 연구 분석
  • 비지니스 인텔리전스 : 데이터 웨어하우징, 데이터 시각화

아키텍처 구성요소

빅 데이터 솔류션은 "대량의 데이터를 저장하고 빠르게 분석 할 수 있어야"할 것이다. 이러한 빅데이터 솔류션은 아래와 같은 구성요소를 가진다.
  • 병렬성
  • Hadoop
  • HDFS
  • YARN

핵심 전제

빅 데이터 솔류션이 필요하게된 핵심 전제는 "기존 환경을 추월하는 데이터세트의 저장과 처리"에 있다.

 부하분산

빅 데이터 솔류션은 부하를 분산하는 방법으로 이 문제를 해결하고 있다. 즉
  1. 대용량의 데이터를 분산해서 저장하고
  2. 여러 대의 컴퓨터가 분산된 데이터를 동시에 처리
한다.

Apache Hadoop

아파치 하둡은 빅데이터 표준 플랫폼이다. 하둡은 데이터베이스가 아닌 "확장 가능한 데이터 스토리지 및 배치 프로세싱을 제공하는 프레임워크"다. 이 하둡 프레임워크를 이용해서 데이터를 수집하고, 저장하고 분삭하기 위한 소프트웨어들이 만들어지며, 이들 소프트웨어들이 모여서 하둡 생태계(Hadoop ecosystem)을 구성한다.

 하둡 생태계

하둡 프레임워크의 기본 구성요소는 아래와 같다.
  1. Hadoop common : 다른 하둡 모듈을 지원하는 공통 유틸리티 및 라이브러리 모듈을 의미한다.
  2. Haddp HDFS : 하둡의 분산파일 시스템(Hadoop Distributed File System)이다. 테라 혹은 페타바이트 이상의 대용량 파일을 분산된 컴퓨터에 저장하고 빠르게 접근 할 수 있도록 한다.
  3. Hadoop YARN : 분산된 자원을 관리하며 작업을 스케쥴링고 모니터링 한다.
  4. Hadoop MapReduce : 맵리듀스는 병렬 분산 알고리즘을 이용해서 빅 데이터 세트를 처리하고 생성하기 위한 프로그래밍 모델및 관련 구현체다.

HDFS

대량의 데이터를 저장하고 꺼내기 위한 분산파일 시스템이다. HDFS는 대량의 데이터노드(슬레이브)로 상대적으로 소수인 네임노드(마스터)로 구성된다. 네임노드는 아래의 기능을 수행한다.
  • 메타데이터 관리 : 파일시스템을 유지하기 위한 데이터들을 관리한다.
  • 데이터 노드 모니터링 : 데이터노드들을 모니터링한다. 주기적으로 데이터노드의 상태를 확인해서, 실패한 노드를 클러스터에서 제외한다.
  • 블럭관리 : 데이터블럭을 관리한다. 장애가 발생한 노드의 블럭을 새로운 블럭으로 복사하며, 디스크 용량이 부족할 경우 다른 노드로 블럭을 옮긴다.
  • 클라이언트 요청 처리 : 클라이언트는 네임노드를 통해서 HDFS에 접근 할 수 있다.
데이터노드는 클라이언트가 요청한 파일을 로컬 디스크에 저장한다.

 HDFS

YARN

하둡 클러스터는 수십에서 수백개로 이루어진 컴퓨터 노드들의 집합이다. 이 노드들 위에서 데이터를 처리할 프로세스를 병렬로 실행해야 한다. 이 노드들은 실패 할 수도 있고, 다른 프로세스들이 실행되면서 자원을 소비하고 있을 수도 있다. 따라서 전체 노드의 자원을 관리하면서, 작업 실행을 관리할 기능이 필요하다.

YARN(Yet Another Resource Negotiator)는 하둡 클러스터를 구성하는 노드들의 자원을 관리한다. 만약 클라이언트가 작업을 요청하면, 자원이 남는 노드를 선택해서 클라이언트 작업을 수행하는 일을 한다. 자원관리를 위한 ResurceManager는 네임노드에 설치된다.

 YARN

데이터 노드에는 노드관리자가 설치된다. 노드관리자의 핵심기능은 컨테이너 관리로 노드에서 실행중인 컨테이너를 관리하기 위한 여러 기능들을 제공한다.
  • RPC 서버 : 컨테이너관리자(ContainerManager는 AM(Application Masters)의 요청을 받아서 컨테이너를 시작하거나 종료한다.
  • ResourceLocalizationServer: 컨테이너가 필요로 하는 다양한 파일을 다운로드하고 구성하는 작업을 한다.
  • ContainerLauncher : 컨테이너를 준비하고 스레드 풀을 관리한다.
  • ContainerMonitor : 컨테이너가 실행되는 동안 자원의 사용율을 모니터링한다. 만약 컨테이너가 할당한 자원량을 초과하면 컨테이너를 종료해서 다른 컨테이너에 영향을 미치지 않도록 한다.
  • LogHandler : 컨테이너의 로그를 로컬디스크에 보관하거나 압축해서 파일시스템에 올리는 작업을 한다.

빅 데이터 작업 유형

맵리듀스(MapReduce)는 대용량의 데이터 세트를 병렬로 처리한다. 크게 맵(Map)과 리듀스(Redude)의 두 단계로 이루어진다. 프레임워크는 맵을 이용해서 출력을 정렬한 다음 리듀스 작업에 이 데이터를 넘긴다.

하이브(Hive)는 데이터 웨어하우징 인프라로 데이터 요약, 잘의 및 분석 기능을 제공한다. HiveQL이라는 SQL과 유사한 언어를 제공하며, 맵리듀스를 이용 비정형 데이터에 대한 쿼리를 수행 할 수 있다.

피그(Pig)는 대용량의 데이터 집합을 분석하기 위한 플랫폼으로 스크렙트언어를 이용한 프로그래밍 환경을 제공한다. 피그는 PigLatin이라는 텍스트 기반의 언어를 제공한다. MR 프로그램 작성은 반복되는 짜증나는 일일 수도 있다. pig를 이용하면 MR 과정이 어떻게 진행되는지, 맵과 리듀스 작업을 언제 일으켜야 하는지 등을 신경쓰지 않고 데이터를 조장 할 수 있게 도와준다.