빅데이터와 빅데이터 기술에 대한 것을 정리해 놓은 글이며, 상편과 하편으로 올릴 예정이다.
빅데이터란?
데이터의 크기가 방대하여 기존의 시스템으로는 획득, 저장, 관리, 혹은 분석이 불가능한 데이터를 빅데이터라고 부른다.
(Mckinsey Global Institute, 2011).
기존에는 정형 데이터들만 처리하여 관계형 데이터베이스 관리 시스템으로 처리가 가능하였으나,
멀티미디어 파일이나 형태가 고정되어 있지 않은 수 많은 비정형 파일들의 전송 및 처리때문에 등장하게 되었다.
특히 이러한 빅데이터들은 큰 서버라 할지라도 처리하기가 힘들어서 동시에 여러대의 서버가 처리하는 것이 매우 효율적이라 분산처리시스템을 이용한다.
분산 처리 시스템이란?
분산 처리 시스템이란 여러대의 서버가 네트워크를 통해 하나의 컴퓨터 시스템처럼 동작하는 것이다.
이렇게 처리하게 되면 작업을 동시에(병렬로) 해결 할 수 있어 저비용으로 고성능을 얻을 수 있다.
(분산처리시스템은 여러명이서 일을 나누어 한다고 생각하면 쉽다.)
또한 높은 신뢰성을 갖는다. 네트워크에 연결된 컴퓨터가 한 두대 고장난다고해서 작동이 멈추거나 하지않는다.
이러한 분산처리시스템은 고속인터넷이 발달되고, 클라우드 컴퓨팅이 급속히 보급됨에 따라 등장하게 되었다.
클라우드 컴퓨팅을 활용하여 분산 처리를 지원하는 플랫폼으로는 아파치 재단의 하둡(Hadoop)이 있다.
하둡에 관한건 뒤에서 더 살펴보도록 한다.
빅데이터 애널리틱스(analytics)
빅데이터를 분석, 표현하는 기술을 빅데이터 애널리틱스라고 한다. 빅데이터로부터 새로운 비전이나 통찰을 얻기 위해 이용한다고 볼 수 있다.
빅데이터 애널리틱스 기술은 크게 두가지로 나뉜다. 바로 분석기술과 표현기술이다.
이따금 패스트 캠퍼스(본인도 과정에 조교로 몇 번 참여함) 나 기타 강의들에서 빅데이터 강의랍시고 갔는데
그래프 그리는 법 알려줘서 약간 당황했을 수도 있다. 그런데 그거 자체가 빅데이터 애널리틱스 기술이다. 아무튼..
표현 기술은 앞에서 말했던것 처럼 데이터들을 시각화하는 기술들을 말한다. 어려운 말로는 동적 데이터 시각화라고 한다.
분석기술은 주로 마이닝 기술들이다. 텍스트 마이닝, 데이터 마이닝, 기계학습 등 어떠한 데이터에서 유의미한 데이터를 찾기 위한 기술들이라고 보면 된다. 사용하기 매우 용이한 데이터들을 찾는데 많이 사용된다. 마이닝 같은 경우는 파헤치다는 뜻으로 데이터를 파헤친다고 생각하면 좋다.
데이터 분석 도구로는 유명한 R이 있다.
최신 분석 알고리즘을 유지하고 있으며, 인메모리(프로그램 자체를 램에 적재) 계산으로 데이터를 빠르게 처리가능하다.
R 프로그램
R의 가장 큰 단점이자 한계는 분석 data가 메모리 안에 다 담겨야 된다는 것이다.
앞에서 인메모리 계산으로 빠른게 장점이라고 했는데 그게 또 발목을 잡는다. 큰 용량을 처리하는데는 제약이 있다.
사실 큰 용량의 데이터를 처리하는데는 분산 처리가 좋지만, 그러지 못하는 상황에서는 R에서 지원하는 확장 패키지가 있다.
바로 빅메모리(bigmemory)와 빅애널리틱스(biganalytics) 패키지이며, 데이터의 구조만 메모리에 저장하여 모든 데이터가 메모리에 로드되어있는 것 처럼 처리 한다. (얼핏 들으면 메모리 가상화 기술과 약간 비슷한 느낌이 있다.)
하둡(Hadoop)
등장배경은 더그 커팅(Doug Cutting)과 마이크 카파렐라(Mike Cafarella)가 오픈소스로 2006년에 발표하였으며 그 전엔 인터넷 검색 엔진인 너치(Apache Nutch) 프로젝트를 주도하였었다... (중략) 검색에만 한정짓지 않고 많은 데이터를 분산 처리 할 수 있음을 깨닫고 프로그램을 독립시켜 분산 처리 시스템으로 이용하게 된 것이다. (뒤에 나올 분산파일 시스템, 맵리듀스도 너치시절 사용하였다.)
하둡은 데이터 처리를 위한 분산 시스템 환경이다. 오픈소스로 제작되었으며, 시스템 구축에 큰 비용이 들지 않는다.
또한 분산 시스템의 신뢰성도 계승하여 일부 서버가 고장 나도 중단 없이 작동이 된다.
데이터의 위치를 추적하는 방식으로 분산 파일 시스템을 구현하는 특징을 갖는다.
하둡의 철학은 데이터 자체와 그 처리를 하는데 집중하는 것을 지원하는 것이다.
이들의 등장으로 인해 빅데이터 처리시 분산 컴퓨팅의 상당한 전문지식과 병렬처리 지식이 필요하였으나 간략 및 간소화가 되었다.
하둡은 크게 세가지 모듈로 구성되어있다.
- 하둡 공통 : HDFS 접근 등 다른 모듈들을 지원하는 공통 유틸리티 모음
하둡 - 하둡 분산 파일 시스템
- 하둡 맵 리듀스 : HDFS에 저장된 빅데이터를 병렬처리
비디오 트랜스코딩과 다중 염기서열 정렬, 내용 기반 음악검색 등.. 많은 응용사례에 쓰이고 있다.
페이스북도 하둡 클러스터를 갖추고 있다.
시간이 지나면서 오픈소스 베이스의 상업적 배포판이 나오면서부터 하둡 커뮤니티 등 생태계가 형성되기 시작하였으며,
빅데이터에 대한 접근성이 낮아져 고급 분석에 대한 관심 및 수요가 증가하기 시작하였다.
이러한 관심도를 충족시키기 위해 하둡 기반의 기계학습 라이브러리인 마하웃(Apache Mahout)을 이용하였으나
지원하는 알고리즘 수가 제한되어있고 작업의 유연성이 제한되었다고 한다.
이런 문제를 해결하기 위해 R로 맵 리듀스(분산 파일시스템에 접근하여 빅데이터를 병렬처리 하는 그 기술) 프로그래밍을 가능하게 한 Rhipe(리피)를 개발하였고 후에 RHadoop이 나오게 된다.
R과 왜 혼합되었냐면 유연성 있는 프로그래밍은 가능하지만 앞서 말했던 인메모리 이용문제로 큰 데이터를 처리하기에 어려운 단점이 있어 분산 처리 시스템인 하둡과 합쳐지게 되었다.
다음엔 하둡 시스템의 구성에 대해 조금 더 알아보도록 하자.
참고 문헌 : 방송통신대학교 빅데이터의 이해 교재
매킨지 보고서(Mckinsey Global Institute)