빅데이터를 지탱하는 기술 1


빅데이터를 지탱하는 기술 (책을 통한 스터디 1)

들어가며

글또 운영자이신 변성윤님의 블로그에서 본 책을 추천하시는 것을 발견하여 바로 구입 후 스터디해보게 되었다. 평소 데싸 롤을 하지만 유독 데이터 엔지니어링 기술에 관심이하도 많아서 이런 책 저런 책 누가좀 추천좀 해줬으면 했는데.. 역시나 이런 멋진책이 있을줄이야.. .ㄷ ㄷ 빨리빨리 선배들을 따라가야겠다. 정말 업계에는 엄청난 숨은고수 부터 유명하신분들이 우리나라에 많으신 것 같다.

여튼 이 책은 요렇게 생겼다. 저자는 일본사람. 확실히 AI쪽 그리고 DB쪽은 일본에 인재들이 많은 것 같다. 책들은 정말 다들 쵝오로 잘쓴다 인정한다.

http://image.kyobobook.co.kr/images/book/xlarge/439/x9791188621439.jpg

분산 시스템에 의한 데이터 처리의 고속화

하둡과 NoSQL의 출현이 가장 주를 이룬다고 한다. 여전히 기존 RDB는 공기처럼 쓰여지고 있지만. RDB에 담을 수 없는 데이터 형태들을 NoSQL에 기록하고 하둡을 통해 분산처리해나가는 것으로 진화했다고 볼 수 있을듯

용어를 살짝 정리해보자

  • 하둡: 다수의 PC 또는 서버에서 대량의 데이터를 처리한다.

    • java를 이용하여 MapReduce가 동작한다.
    • SQL언어로 하둡을 사용하기 위해 ‘Hive’라는게 등장했다.
  • NoSQL: 자주자주 읽기/쓰기를 수행해도 무리가 없고 분산처리가 가능하다.

    • document store: JSON과 같이 복잡한 데이터 구조를 저장한다.
    • key-value store: 다수의 키와 값을 관련지어 저장한다.

빅데이터 기술 개요

  • 데이터 파이프라인: 차례대로 데이터가 A라는 장소에서 B라는 다른 장소로 전달해나갈 수 있도록 돕는 시스템 정도로 볼 수 있다.
  • 기본적 흐름
    • 데이터 축적 -> 데이터 마트 구성 ->시각화 도구로 리포팅
  • 데이터 수집방식:
    • 배치 프로세싱, 즉 벌크로 정기적으로 퍼다가 데이터를 정리
    • 스트리밍: 시계열 형태로 실시간 으로 들어오는 데이터를 DB에 정리 저장
  • 분산 스토리지란?
    • 객체 스토리지
    • NoSQL DB 등이 있다.
  • 분산 데이터 처리
    • Query Engine
    • ETL Process
  • 워크플로우 관리툴
    • 전체 파이프라인의 동작을 모니터링하고 어디가 문제가 생기는지 봐줌.
    • 에어플로우 같은게 대표적 오픈소스 웍플로우 툴

데이터 웨어하우스와 데이터 마트

  • 기본형
    • 소스 ->DW -> 데이터 마트
  • 변형한다면?
    • 소스->데이터 레이크->데이터 마트
  • 데이터 웨어하우스란 대량의 데이터를 장기 보존하는 것에 최적화 되어있는 DB
  • 데이터 마트란 데이터 분석과 같은 목적에 사용하는 경우에 DW에서 필요한 데이터만 추출한 DB
  • ETL이란 : 데이터의 Etract Transform 후 Load를 의미
  • 데이터 레이크란? 모든 데이터를 원래형태로 축적해두고 나중에 그것을 필요에 따라가공하는 구조로 데이터의 축적 장소이고 데이터 형식은 자유이지만 대부분의 경우 CSV나 JSON등 범용적인 텍스트 형식으로 사용됨

빅데이터 수집단계

  • Flume:
    • 빅데이터를 수집할 때 다양한 수집 요구사항들을 해결하기 위한 기능으로 구성된 SW
    • 데이터를 원천으로부터 수집할 때 통신 프로토콜, 메시지 포맷, 발생주기, 데이터 크기 등으로 많은 고민이 있는데 이 고민을 쉽게 해결할 수 있는 기능과 아키텍쳐를 제공
  • 카프카
    • 대규모로 발생하는 메시지성 데이터를 비동기 방식으로 중계하는 역할을 수행
    • 원천 시스템으로부터 대규모 트랜잭션 데이터가 발생했을 때 중간에 데이터를 버퍼링하면서 타깃 시스템에 안정적으로 전송해주는 중간 시스템이 필요하며 카프카가 그와 관련된 강력한 기능 및 아키텍쳐를 제공

빅데이터 적재단계(대용량 로그)

  • 하둡
    • 빅데이터 핵심 소프트웨어로 첫 번째는 대용량 데이터를 분산 저장하는 것이고, 두 번째는 분산 저장된 대용량 데이터를 분석하는 기능
    • 대용량 데이터 처리를 위해 분산 병렬처리 기술을 사용하며
    • 하둡은 수집 적재 처리 분석의 전 영역에 걸쳐 모든 컴포넌트와 연결 가능
  • 주키퍼
    • 서버간이ㅡ 중요한 이벤트 (부하분산, 네임서비스 등)를 관리하면서 상호작용을 조율해 주는 코디네이터 시스템
    • 주키퍼는 하둡 HBase, 카프카, 스톰 등의 분산 노드 관리에 사용된다.

빅데이터 적재단계(실시간 로그/분석 적재)

  • HBase
    • 하둡 기반의 컬럼지향 NoSQL DB이다.
    • NoSQL 데이터베이스는 데이터를 Key Value 형식으로 단순하게 구조화하는 대신 고성능의 쓰기/읽기가 가능하도록 만든 DB다.
    • HBase의 경우 특히 쓰기 성능에 최적화되어 있음
  • 레디스
    • 분산 캐시 시스템이면서 NoSQL DB처럼 대규모 데이터 관리 능력도 갖춘 In-Memory Data Grid 소프트 웨어다.
    • Key-Value 형식의 데이터 구조를 분산 서버상의 메모리에 저장하면서 고성능의 응답 속도를 보장
    • 단순 Key-Value 이상이ㅡ 데이터 복잡성도 처리 가능하며 인메모리 데이터를 영구적으로 저장 할 수 있는 스냅샷 기능을 제공
    • 데이터 유실에 대비해 Appen d Only File (AOF) 기능으로 정합까지 보장함
    • NoSQL 데이터베이스에서 주로 샤용되는 샤딩과 레플리케이션도 지원하고 있어 높은 성능이 필요한 서비스에서 자주 사용됨
  • 스톰
    • 빅데이터 프로젝트에서 실시간 데이터를 병렬 프로세스로 처리하기 위한 소프트웨어이다.
    • 스피드 데이터는 원천 시스템으로부터 데이터가 끊이지 않고 매우 빠른 속도로 유입되는데,
    • 워낙 양이 많고 빠르게 발생하다 보니 대규모 병렬 처리를 이용해 실시간 데이터를 프로세싱 할 수 있다.
  • 에스퍼

    • 실시간 스트리밍 데이터의 복잡한 이벤트 처리가 필요할 때 사용하는 룰 엔진
    • 실시간으로 발생하는 데이터 간의 관계를 복합적으로 판단 및 처리하는 것을 CEP(Complex Event Processing)이라고 하는데, 에스퍼가 CEP엔진 중 하나임

    빅데이터 탐색단계

  • Hive
    • 하둡 초창기 적재된 데이터를 탐색 분석 하기 위한 맵리듀스는 높은 프로그래밍 기법을 요했는데 분석가 및 관리자들은 접근하기 어려운 문제가 존재
    • 이를 해결하기위해 SQL처럼 만들어서 하둡 데이터에 접근성을 높였다
  • 스파크
    • 반복적 대화형 연산작업에서는 하이브가 적합하지 않아 나온 스파크다
    • 고성능 인메모리 분석 소프트웨어다.
    • 스파크SQL, 스파크 스트리밍, 머신러닝 등의 대용량 데이터 작업에도 빠른 성능을 보장
    • 파이썬,자바,스칼라,SQL등의 클라이언트 라이브러리를 제공해서 접근성을 높임
  • Oozie
    • 하이브, 피그, 스파크 등을 이용해 빅데이터이ㅡ 처리, 탐색, 분석하는 과정은 복잡한 선후행 관계를 맺고 반복적으로 진행된다.
    • 실제 프로젝트에서는 수집 및 적재된 수백개 이상의 데이터 셋을 대상으로 다양한 후처리 잡을 처리하기위해 방햐성 있는 비순환 그래프로 정의해서 잡에 시작, 처리, 분기, 종료 등의 액션으로 구성하는 워크플로우가 바로 우지

빅데이터 분석단계

  • 임팔라

    • 실시간 빅데이터 분석 질의가 가능한 SW로 하둡의 분산 노드에서 대규모 실시간 분석을 위해 임팔라, stateored, catalogd 컴포넌트가 설치된다.
  • 제플린

    • 대용량 데이터를 효과적으로 탐색 및 분석하기 위해서는 대용량 데이터셋을 빠르게 파악하고 이해하기 위한 분석 및 시각화 툴이 필요
    • 제플린을 이용 시 웹UI의 노트북에서 스파크 또는 스파크 SQL을 작성해 하둡 클러스터에 작업을 요청하고, 처리 겨로가를 다시 웹UI에서 시각화해서 볼 수 있다.
    • 제플린은 스파크 뿐만 아니라 다양한 확장 인터프리터 (스파크, 하이브, 카산드라)를 제공한다.
  • 머하웃

    • 하둡 생태계에서 머신러닝 기법을 이용해 데이터 마이닝을 수행하는 툴
    • 루씬 기반 서브 프로젝트로 시작됐고 하둡의 분산 아키텍처를 바탕으로 텍스트 마이닝, 군집, 분류 등과 같은 머신러닝 기반 기술이 내재화

크로스 집계

  • 테이블은 두가지 종류로 보여질 수 있음
    • 크로스 테이블
      • 엑셀시트 같은 곳에서 사용되는 일반적인 테이블.. 횡으로 길다고해야하나
    • 트랜잭션 테이블
      • 타임스탬프가 찍히는 느낌으로 아래로 쭉 트랜잭션별로 길어지는 테이블
    • 피벗 테이블
      • 엑셀 돌리면 누구나 해보게되는 피벗

데이터 처리 지연

  • RDB는 지연이 적고, 많은 수의 클라이언트가 동시 접속해도 성능이 나빠지지 않음
  • 많은 사용자가 사용하는 실제 운영 환경의 데이터 마트로 더 좋음.
  • 하지만, 메모리가 부족하면급격히 성능이 저하됨
  • 수억개가 넘는 레코드를 초과하는 데이터의 집계에서 I/O발생을 어떻게 효율화할것인지가 중요한 이슈
  • MPP기술
    • 고속화를 위해 사용되는 기법이 압축과 분산임
    • 데이터를 가능한 한 작게 압축하고, 여러 디스크에 분산함으로써 데이터의 로드에 따른 지연을 줄임
    • 분산된 데이터를 읽어 들이려면 멀티코어를 활용하면서 디스크 I/O를 병철 처리하는 것이 효과적
    • 이런걸 아키텍처를 MPP(massive parallel processing : 대규모 병렬 처리)라고 부르며 가장 유명한 예로는 Redshift,와 구글 BigQuery 가 있음

글 12편을 아래와 같이 기획해본다.

1.글또 6기를 시작하며 (DONE!)

2.ES - 일래스틱서치 개요와 기능들(Done!)

3.ES - 키바나를 활용한 데이터 시각화(In Progress)

4.빅데이터를 지탱하는 기술 (책을 통한 스터디 1 - In Progress)

5.빅데이터를 지탱하는 기술(책을 통한 스터디 2)

6.Azure - AZ Fundamental 900로 알아보는 기본 Azure 아키텍쳐

7.Azure - Data Factory로 구축하는 ETL 파이프라인

8.회계법인(Accounting Firm)과 디지털 컨설팅 1

9.회계법인(Accounting Firm)과 디지털 컨설팅 2

10.Image 관련 딥러닝 논문 내용과 적용(미정)

11.NLP 관련 딥러닝 논문 내용과 적용(미정)

12.2021년을 회고하며.. 글또 6기 마무리 글

이 글이 도움이 되셨다면 추천 클릭을 부탁드립니다 :)

Buy me a coffeeBuy me a coffee





© 2020 modified by Tae You Kim

Powered by "shoman2"