빅데이터를 지탱하는 기술 1
in Data Science on ML/DL
빅데이터를 지탱하는 기술 (책을 통한 스터디 1)
들어가며
글또 운영자이신 변성윤님의 블로그에서 본 책을 추천하시는 것을 발견하여 바로 구입 후 스터디해보게 되었다. 평소 데싸 롤을 하지만 유독 데이터 엔지니어링 기술에 관심이하도 많아서 이런 책 저런 책 누가좀 추천좀 해줬으면 했는데.. 역시나 이런 멋진책이 있을줄이야.. .ㄷ ㄷ 빨리빨리 선배들을 따라가야겠다. 정말 업계에는 엄청난 숨은고수 부터 유명하신분들이 우리나라에 많으신 것 같다.
여튼 이 책은 요렇게 생겼다. 저자는 일본사람. 확실히 AI쪽 그리고 DB쪽은 일본에 인재들이 많은 것 같다. 책들은 정말 다들 쵝오로 잘쓴다 인정한다.
분산 시스템에 의한 데이터 처리의 고속화
하둡과 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기 마무리 글
이 글이 도움이 되셨다면 추천 클릭을 부탁드립니다 :)