빅데이터 3Vs
- Volume : 데이터의 양 ↑
- Variety : 데이터의 종류 (다양한 형태의 데이터) ↑
- Velocity : 데이터 발생 속도 ↑
Small Data Tool
-R
-Matlab
-Pandas (with Python)
-Numpy (with Python)
-Scikit-learn (with Python)
등등
Big Data System
=> Hardware – Distributed Storage -> Distributed Processing -> Application ( 4단계로 구성)
Hardware : 빅데이터를 다루고 분석하기 위한 수많은 컴퓨터들로 구성
Distributed Storage : 많은 컴퓨터들의 데이터를 저장하고 관리하는 분산 스토리지 시스템
Distributed Processing : 저장 및 관리되는 데이터를 빠르게 분석하기 위한 분산 프로세싱 시스템
Application : 분산 처리를 가능하게 해주는 시스템
기능
많은 머신에서 데이터를 쪼개고 분배해주는 것을 ‘자동’으로 수행
분석 Job을 작은 단위의 task로 나누어 빠르게 수행하는 것을 ‘자동’으로 수행
장애가 발생했을 때 ‘자동 복구’
Data Analysis Categories
Batch processing : 데이터를 큰 단위로 분석
Interactive query : 데이터를 상호 질의를 통해 분석
Stream Processing : 실시간으로 분석하여 결과를 도출
Graph Processing : 그래프 데이터에 특화된 처리
Machine Learning / Deep learning : 예측 모델을 만듦
데이터 분석 시스템 및 머신러닝 대표 시스템
#2015년부터 머신러닝, 딥러닝 소프트웨어
Apache
- Hadoop(2006)
- YARN, HDFS, Hadoop MR로 구성
- HDFS : 빅데이터 분석 애플리케이션에 최적화, 데이터 복제(장애 복구)
- Hadoop MR(Map Reduce) : Map과 Reduce라는 함수로 데이터 분석을 표현
표현된 데이터 분석은 수행 시 많은 데이터를 잘 처리할 수 있는 scalability를 보여줌
분석 Job이 수행 중 어떤 task에 장애가 발생했을 경우, 해당 task를 다시 시작(장애 복구)
=> 빅데이터 초기부터 운영되었으며, 빅데이터 시스템에 상당히 큰 영향을 줌
- Spark(2014, In-Memory Computing)
-더 다양한 분석 프로그램을 쉽게 표현할 수 있었다.
-> 제한된 형태로 분석 프로그램을 표현할 수 밖에 없던 하둡에 비하여 일반적인 그래프 형태로 쉽게 표현 가능
- 메모리를 사용하여 분석 속도를 빠르게 함
-> 분석한 중간 결과를 중간에 메모리에 저장하고 뒷부분에서 계산하는 부분에 해당하는 중간 결과를 읽어서 계산
쉬운 프로그래밍 인터페이스
-> 복잡한 데이터 분석 파이프라인을 다양한 변환을 통하여 쉽게 데이터 분석 파이프라인을 표현 가능함
Google – TensorFlow(2015)
오픈 머신러닝 프레임워크 (머신러닝에도 가능하지만 딥러닝에도 인기가 많음)
수학적인 계산으로 머신러닝 모델을 표현해서 수행하는 것들이 가능함
그렇게 표현한 것들을 내부적으로 Data Flow Graph라는 형태로 변환하여 수행
딥러닝 프레임워크
TensorFlow
Pytorch
Caffe2
MXNET
등등
분산 스토리지
데이터를 여러 머신에 읽고 쓸 수 있는 프로그램
분산 파일 시스템
하둡의 분산 파일 시스템
- 빅데이터에 최적화 (큰 데이터를 한 번에 쭉 읽음)
- 데이터를 맨 뒤에 붙이는 append 방식에 쓰는데 최적화
- 데이터 자체가 크기 때문에 하나의 데이터 유닛으로 큰 블록 사이즈 사용 (128MB, 256MB 등)
- 데이터를 안정적으로 보존하기 위해 장애 복구 지원 (HDFS) #Master-Worker architecture