1. 빅데이터의 정의
빅데이터(Big Data)란?
- 기존의 방식으로 표현/저장/처리/분석하기 어려운 다양한 소스의 큰 규모의 자료를 의미
- 거대한 규모(volume), 빠른 속도(velocity), 높은 다양성(variety)을 특징으로 하는 데이터
ex) SNS, 인터넷 문서, 웹 로그, 의료 기록, 기상, 유전, 센서, 카메라, ...
빅데이터의 특성 - 3V
- 규모(Volume) : 데이터의 크기(저장되는 물리적 데이터의 양)
- 다양성(Variety) : 다양한 종류의 데이터를 수용하는 특성 (ex. 텍스트, 이미지, 오디오, 비디오, ...)
- 속도(Velocity) : 데이터가 얼마나 빠르게 처리/분석되는지에 대한 특성
2. 빅데이터의 컴퓨팅 주요 개념
클러스터
클러스터는 개별 머신이 노드로 구성된 노드들의 집합 → 각 노드는 일반 범용 컴퓨터로 고장나면 쉽게 교체 가능
GFS(Google File System)
파일들을 여러 조각으로 분할하여 클러스터의 노드에 배분 → 조각들은 고장 감내(fault tolerance)를 위해 서로 다른 노드에 복제
빅테이블(Bigtable)
- GFS 상에서 데이터를 저장하고 조회하는 데이터베이스 시스템
- 빅테이블은 성글고(sparse) 분산된 지속성의 다차원 정렬 맵 → (row, column, timestamp)로 저장된 데이터를 매핑
- 기존의 데이터를 덮어쓰기(overwriting)하지 않고 시간으로 구분하여 조회
- 행은 태블릿(tablet)이라는 부분 테이블로 분할 → 태블릿은 각 클러스터의 노드에 분산 및 부하균형(load balancing) 단위
맵리듀스(MapReduce)
GFS에 저장된 데이터 처리를 위해 맵리듀스 패러다임으로 병렬처리
- 함수형 언어에서 리스트 데이터를 처리할 때 사용하는 함수인 map 함수와 reduce함수에 기원
- map() : 리스트의 각 원소들에게 어떤 공통된 작업을 처리하고자 할 때 사용
- reduce() : 리스트 전체 원소를 모아 하나의 결과를 출력하고자 할 때 사용
map (+1) [1, 2, 3, 4, 5] // 1~5에 각각 1씩 더함
=> [2, 3, 4, 5, 6]
reduce (+) [1, 2, 3, 4, 5]
=> 1 + 2 + 3 + 4+ 5 = 15
아파치 하둡(Apache Hadoop, High-Availability Distributed Object-Oriented Platform)
대량의 자료를 저장, 처리, 분석할 수 있는 프레임워크
하둡 분산 파일 시스템(HDFS: Hadoop Distributed File System)과 맵리듀스를 구현한 것
3. 빅데이터의 파이프라인
데이터 파이프라인
데이터 소스로부터 수집 → 처리 → 분석의 과정을 수행
데이터 수집
속도(Velocity)
- 스트리밍 데이터(streaming data) - 동적으로 끊임없이 생성되고 실시간에 준하는 분석이 요구 (ex.센서 데이터)
- 배치 데이터(batch data) - 과거의 추이 분석 등을 위해 중앙 서버로부터 다운로드 되어 대용량의 저장 데이터로 즉시 분석이 요구되지 않음
다양성(Velocity)
- 빅데이터의 형태는 구조화, 반구조화, 비구조화된 데이터가 될 수 있음
규모(Volume)
- 빅데이터 저장 시 실제 데이터의 용량 + 고장 감내를 위한 복제 + 운영체제 + 메타데이터 등의 추가되는 용량을 고려하면
- 실제 데이터 용량의 약 4배의 공간이 요구됨
데이터 수집 - ETL(Extract, Transform, Load)
수집된 데이터는 ETL 과정으로 처리되어 분석될 준비, 변환 과정에서 클리닝, 정규화, 샘플링, 분할 포함
데이터 분석
그래프나 차트로 처리된 데이터 표현, 의사결정, 알림, 기계학습