Search

빅데이터 처리 SW

Hadoop

오픈소스 빅데이터 처리 플랫폼이며, 분산 파일 시스템인 HDFS와 분산 병렬 처리 시스템인 Map Reduce의 두가지 핵심기능을 제공한다.
데이터 처리, 분석, 시각화 등 다양한 기능을 가진 툴들과 함께 시스템을 이루는 경우가 많은데, 이를 Hadoop Ecosystem이라 부른다.
결함 허용의 특징이 있으며, 데이터 블록의 복사본을 중복 저장하고 유지한다.

MapReduce

map 함수와 reduce 기반 함수를 기반으로 구성되어 key와 value 리스트의 데이터의 병렬처리를 수행할 수 있는 툴이다.

Pig

MapReduce 상위에 있는 High-level Data Flow Interface 서비스이다.
Pig Latin이라는 스크립트 언어를 사용한다.

Hive

데이터 관리자, 분석가들이 사용하는 툴로, HiveQL 질의 명령어를 사용하여 데이터 처리를 수행할 수 있는 툴이다. 기존 RDBMS의 질의 방식과 유사하기 떄문에, 기존 시스템에 익숙한 사용자들에게 편리함을 제공한다.

Oozie

작업 수행의 입,출력 관게를 정의하고 워크플로우를 관리하기 위해 사용하는 툴이다.
워크플로우를 정의 및 수행하고, 의존관계 표시 및 수행순서를 결정한다.

Big Query

구글 클라우드 스토리지와 함께 사용하는 대용량 데이터 처리 엔진이다. 클라우드 서비스로, 자체적인 SW 설치나 운용이 필요 없다.
분석할 데이터를 구글 시스템에게 전송한 후, BigQuery API를 사용하여 질의하는 방식이다. 최대 2TB까지 무료로 데이터를 업로드하고 분석할 수 있다.
SQL 언어를 사용하며 구글 클라우드 인프라를 통한 대규모 지원과 빠른 성능을 가진다.

Spark

UC버클리의 AMP랩에서 개발한 In-Memory방식의 분산 처리 시스템이다. 메모리 사용으로 반복적 작업이나 스트리밍 데이터를 효율적으로 처리한다. 이러한 특성 떄문에, 머신러닝 알고리즘을 통한 처리에 효율적이다.
배치 처리, 스트리밍 처리가 가능하며 SQL 기반 쿼리 수행이 가능하다.
스칼라 쉘을 제공하여 사용자와 대화형으로 데이터를 관리할 수 있다.
스칼라 언어로 구현되어있지만 파이썬, 자바 등의 다양한 언어를 지원하는 SDK(Software Development Kit)를 가지고 있다. HDFS, Amazon S3, Apache Cassandra 등 다양한 데이터 스토리지와 연동이 가능하다.
Spark SQL
Hadoop의 Hive를 대체할 수 있는 분산 SQL 처리 엔진이다.
Spark MLlib
선형 및 로지스틱 회기, SVM, SVD, 의사결정 트리, 랜덤 포레스트, K-mean Clustering 등 다양한 머신러닝 지원 모듈들을 포함하고 있는 라이브러리이다.
Spark GraphX
페이지 랭크, 레이블 전파, 삼각 계수 등의 그래프 알고리즘을 지원하는 라이브러리이다.
Spark Streaming
빅데이터 실시간 처리를 위한 툴로, Kafka, Flume, Kinesis, TCP 소켓을 통해 수집된 대용량 데이터에 대해 실시간 스트림 처리가 가능하다.
데이터 스트림을 개별 세그먼트로 나눈 후, 각 세그먼트와 데이터를 스파크 엔진으로 처리한다.
MapReduce, Join, Window와 같은 복잡한 알고리즘 사용이 가능하다.
파일시스템, 데이터베이스, 실시간 대쉬보드로의 출력을 지원한다.

Python Library

데이터처리와 머신러닝을 위한 강력한 파이썬 패키지가 많이 개발되었다.
Pandas
데이터 프레임 추상화 객체를 사용하며 데이터 처리 및 분석을 할 수 있다.
Numpy
N차원 배열 객체, 선형대수, 푸리에 변환 등 강력한 기능을 제공한다.
SciPy
연산과 최적화를 수행하는 핵심 라이브러리이다.
matplotlib
데이터 시각화에 주로 사용되는 2D 차트 생성에 활용된다.
NLTK
텍스트 마이닝과 자연어 처리에 사용된다.

R

파이썬과 양대산맥을 이루는 언어로, 통계 분석, 예측 분석 및 시각화를 위한 개발환경을 제공한다.
대화식 프로그램 수행, 자유로운 분석환경 제공, 패키지를 추가함으로써 기능 확장 가능, 강력한 그래픽 지원, 객체지향 방법론 지원, 다양한 사용자 운영환경(Windows, Linux, MacOS 등) 지원의 특징이 있다.