본문 바로가기

CS BASIC/정보시스템 일반

[CS BASIC] 빅데이터와 데이터 분석기술

개요

오늘은 빅데이터(Big Data)라는 것에 대해 알아보고, 빅데이터를 다루기 위한 다양한 분석 기법들 그리고 추천 알고리즘을 통해 빅데이터가 어떻게 활용되는지까지 알아보도록 하겠습니다.

 

빅데이터(Big Data)란?

지난 포스팅에서 데이터(data)란 무엇인지, 그리고 데이터를 다루기 위한 다양한 객체들에 대해서 살펴보았습니다.

객체지향 프로그래밍에서 데이터와 데이터 객체에 대해 더 살펴보고 싶다면 아래의 포스트를 참고해주세요.

https://1-hee.tistory.com/95

 

[CS BASIC] 데이터와 다양한 데이터 객체들(DAO, DTO, VO)

개요 데이터의 중요성 오늘은 프로그래밍에서 사용 가능한 다양한 객체들의 유형에 대해서 알아보도록 하겠습니다. 프로그램에서 필요한 ‘정보’를 다루는 방법은 정말 다양한데요. 단순히

1-hee.tistory.com

 

 

빅데이터에 대한 사전적 정의를 살펴보기 위해 오라클(Oracle)에서 소개한 빅데이터의 정의에 대해서 알아보도록 할게요.

- 빅데이터란 거대한 규모(volume), 빠른 속도(velocity), 높은 다양성(variety)을 특징으로 하는 데이터입니다. 이를 3V라고도 합니다.
- 간단히 말해, 빅 데이터는 특히 새로운 데이터 소스에서 나온 더 크고 더 복잡한 데이터 세트입니다. 이러한 데이터 세트는 너무 방대하여 기존의 데이터 처리 소프트웨어로는 관리할 수 없습니다. 그러나 이러한 방대한 양의 데이터는 이전에 해결할 수 없었던 비즈니스 문제를 해결하는 데 사용될 수 있습니다.

 

빅데이터는 비교적 최근에 들어서 활발히 사용 되고 있으나,

요즘 핫한 인공지능(AI)과 마찬가지로 그 기원은 꽤 오래 전이라고 합니다.

방대한 양의 데이터가 집약된 저장소, 최초의 데이터 센터의 등장과 함께 많은 양의 의 데이터가 발생하면서 부터 이를 다루기 위한 기술도 함께 발전하게 되었는데요.

 

빅데이터에 대한 연구를 가속화시킨 것은 SNS의 등장이 큰 영향을 끼쳤습니다.

 

기존에는 데이터를 저장한다면, 주로 관계형 데이터베이스(RDBMS, Relational DataBase Management System)를 통해서 데이터를 저장하고 관리하였는데요.

 

이러한 관계형 데이터베이스는 데이터를 저장할 때 ‘집합’에 속하는 원소로서 저장되기 때문에 집합이 갖는 공통적인 특성에 맞추어 때로는 데이터를 인위적으로 처리 되야 하기도 합니다.

 

 과거나 지금이나, 저장된 데이터 집합 간에 관계를 분석하려면 두 데이터를 이어줄 접점이 필요한데, 경우에 따라서는 저장된 데이터를 설명하는데 전혀 상관이 없는 인위적 데이터를 만들 수 밖에 없습니다.

 

이에 대한 예를 들자면, 데이터베이스에서 많이 쓰는 ‘일련번호’ 같은 데이터가 이에 해당한다고도 볼 수 있겠네요.

만약 어떤 사물에 대한 정보를 데이터베이스에 저장한다고 하면, ‘일련번호’는 엄밀히 말하면 사물을 설명하는 데이터는 아니지만,

데이터 베이스에 저장된 정보를 ‘고유하게’ 구분하기 위해서는 일련번호와 같은 고유한 데이터가 반드시 필요하니까요.

 

그러나 SNS와 같은 ‘사람’을 위한 서비스에서 발생되는 데이터는 인위적으로 그 범위를 제한시켜 관계형 데이터베이스에 저장하기 좋은 인위적인 ‘형태’로 저장할 수 도 있지만, 실시간으로 발생하는 방대한 데이터에 대하여 모두 커버할 수 있는 데이터 저장소를 설계하고 프로그램을 작성 하기란 결코 만만치 않은 일일 것입니다.

 

따라서, 이러한 니즈에 따라 기존에는 데이터를 저장하기 위해 관습적으로 관계형 데이터베이스를 많이 사용했지만,

빅데이터와 같은 분야에서 사용하기 위해 형태가 정해지지 않은, 이른바 비정형 데이터 베이스 유형, NoSQL이 등장 하게 됩니다.

 

사실 이런 데이터베이스는 개발자에게는 그리 생소한 개념이 아닙니다.

 

왜냐하면, 나중에 JSON(JavaScript Object Notation)이라는 것에 대해서 기회가 된다면 한 번 다루겠지만,

NoSQL은 JSON처럼 계층화된 형태로 데이터를 저장하기 때문입니다.

 

여기서, ‘계층’ 이라는 단어가 굉장히 NoSQL을 설명하기 어렵게 만드는 것 같습니다만, 

사실 우리가 객체지향 프로그래밍 언어를 사용해서 객체(Object)를 만들 때, 객체의 이름을 정하고, 

그 객체를 구성하는 여러 가지 요소들(속성, 메서드 등) 함께 설계하고 작성하게 되잖아요?

 

이처럼 NoSQL에서는 더이상 2차원의 표로 표현할 수 있는 맞춰진 형식으로 데이터를 저장하는 것이 아니라,

데이터베이스에 데이터를 저장할 때, 객체를 설계하듯이 데이터의 확장에 유연하게 저장할 수 있는 것이 하나의 큰 특징입니다.

 

따라서, 이제는 더이상 오라클과 같은 RDBMS에서 제공하던 기능 만으로는 세상에 존재하는 다양한 데이터에 대해서 다루기 어렵게 되었고, 인간은 언제나 방법을 찾아내는 법, 이를 분석하기 위한 다양한 빅데이터 수집 및 분석 기술이 등장하게 됩니다.

 

본격적으로 빅데이터의 수집 및 분석 기술을 살펴보기 전 빅데이터에서  다루는 데이터 유형에 대해서 얄아보도록 하겠습니다.

 


빅데이터의 데이터 유형

 

1) 정형 데이터

  • 2차원의 테이블 형태로 표현할 수 있는 데이터
  • MySQL, Oracle, Excel과 같이 표의 형태로 표현 가능한 데이터들
  • 데이터 스키마(Schema)를 지원한다.

 

*스키마(Schema)란? : 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조

 

2) 반정형 데이터

  • HTML, XML, JSON과 같이 정형 데이터는 아니지만 내부에 메타 데이터를 갖는 데이터 유형
  • RDBMS로 표현하기 어렵지만, 정해진 구조에 따라 데이터가 분류되어 있다는 특징을 가짐

 

3) 비정형 데이터

  • 이미지, 동영상, 텍스트와 같이 주어진 그대로 분석하기는 어려운 유형의 데이터
  • 데이터를 바로 분석하긴 어려워 전처리 과정을 통해 분석하기 좋은 형태로 변환시킴

 

이처럼 빅데이터는, 데이터의 저장 형태 및 특성에 따라 위의 세 종류로 구분할 수 있습니다.

또한, 이러한 데이터 유형에 따라 데이터를 수집하는 방법도 나뉘게 됩니다.

빅데이터의 데이터 유형에 따른 수집 및 기술은 아래와 같습니다.


빅데이터의 수집 기술

1) 정형 데이터

  • Apache Scoop 이나, 다양한 서비스 업체 등에서 제공하는 API를 통해 수집
  • 하둡(Hadoop)과 연계하여 대량의 데이터를 전송하고 분석하여 병렬로 데이터를 전송함
  • 정형 데이터의 수집에 활용되는 기술이 스쿱(Scoop)

 

*스쿱(Sqoop) : 정형 데이터 수집 기술로 커넥터(Connector)를 사용하여 관계형 데이터베이스 시스템(RDBMS)에서 HDFS(Hadoop File System)로 데이터를 수집하는 기술

 

2) 반정형 데이터

  • Apach Flume, 로그 컬렉터(Log Collector)와 같은 경로를 통해 데이터를 수집
  • 스크립트 형태의 파일을 브라우저나 응용 소프트웨어가 해석하여 가시적인 형태로 제공하도록 함

 

3) 비정형 데이터

  • FTP 프로토콜을 사용하거나, 크롤러를 통해 수집
  • 비정형 데이터는 이진화된(바이너리, Binary) 데이터로 구성되어 있으므로, 데이터를 해석해서 인지적(음성, 영상, 텍스트) 데이터 형태로 제공하도록 처리됨
  • 비정형 데이터 수집에 사용되는 기술이 척와(Chuckwa)

 

* 척와(Chukwa) : 비정형 데이터 수집 기술로 분산된 각 서버에서 에이전트를 실행하고, 컬렉터(Collector)가 에이전트로부터 데이터를 받아 하둡 분산 파일 시스템(HDFS, Hadoop Distributed File System) 에 저장하는 기술


빅데이터 처리 기술

빅데이터는 데이터의 양이 인간이 직관적으로 셈할 수 있는 양을 아득히 넘어서므로, 이에 최적화된 처리 기법 또한 필요하게 되었는데요. 

빅데이터 처리 기술의 목적은 데이터를 잘 분석하는 것도 중요하지만, 무엇보다 방대한 양의 데이터를 빠르게 수집하는 것에 초점이 맞춰지게 되었습니다.

그래서 초기에는 구글에서 개발한  맵리듀스(MapReduce)라는 기술을 기반으로 빅데이터를 처리한다는 1차적 목표에서 나아가 빠른 속도를 위해 SQL on Hadoop 기술이 등장하게 되었고 추가적으로 실시간 처리가 가능하도록 스톰과 같은 오픈소스 기술도 등장하게 되었습니다.

 

분산 병렬 배치 처리

일반적으로 데이터는 데이터 베이스에 저장하고 SQL 질의문으로 데이터를 처리합니다.

하지만, 웹이 발달함에 따라 인터넷에 존재하는 모든 기기로 부터 정말 다양한 데이터가 발생하게 되었는데요.

여기에서 파생되는 로그 데이터와 같은 방대한 데이터들로 인해 DBMS에 저장하고 다루는 것에는 한계를 마주하게 됩니다.

따라서, 대규모의 데이터를 나누어서 효율적으로 저장하기 위한 분산 저장 기술이 등장하게 되었습니다.

 

분산 병렬 배치 처리를 위해서는 산재되어 있는 데이터를 종류별로 구분하는 것이 필요합니다.

왜냐하면, 일정한 기준을 정해서 데이터를 분류하는 과정을 통해서 중복된 데이터를 줄이고 , 연관이 있는 데이터끼리 묶어서 분석하기도 용이 해진다는 장점이 있기 때문입니다.

 

이때 활용되는 기술이 맵리듀스(MapReduce)입니다.

맵리듀스(MapReduce)란?

- 맵리듀스는 구글에서 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작하여 2004년 발표한 소프트웨어 프레임워크
- 페타바이트 이상의 대용량 데이터를 신뢰도가 낮은 컴퓨터로 구성된 클러스터 환경에서 병렬 처리를 지원하기 위해서 개발

 

이러한 맵 리듀스 기술은크게 세 가지 단계로 나뉘어 집니다.

 

첫번째, 산재되어 있는 데이터를  키-값(Key-Value)의 구조를 갖는 Map의 형태로 데이터를 저장합니다.

인터넷에 존재하는 원본의 데이터만으로는 유의미한 데이터 분석을 수행할 수 없으므로 일정한 기준이나 유형에 따라 구분될 수 있도록 데이터를 저장하는 과정입니다.

 

두번째, 맵에 저장된 데이터 중에서 분석에 사용할 데이터를 정렬합니다.

관심있는 분야에서 사용할 데이터를 분석하기 용이하도록 일종의 데이터 ‘정제’를 하는 과정입니다.

 

세번째, 리듀스 함수로 맵의 형태로 저장된 데이터가 보내져 원하는 형태의 분석 값으로 산출합니다.

많은 파일 및 데이터 속에서 특정 키워드를 찾아내는 등 궁극적으로 필요로하는 데이터를 추출하는 과정입니다.

 

이러한 맵 리듀스의 과정을 그림으로 도식화하면 아래와 같습니다.

 

fig 1.0 맵 리듀스

 

 

결과적으로 하둡의 맵리듀스라는 기술은 *하둡 분산 파일 시스템(HDFS, Hadoop Distributed File System)에서 데이터를 처리하기 위한 목적으로 개발된 기술입니다.

 

*하둡 분산 파일 시스템(HDFS, Hadoop Distributed File System) : 대용량 파일을 분산된 서버에 저장하고, 그 저장된 데이터를 빠르게 처리할 수 있게 하는 분산 파일 시스템

 

 

그렇기 때문에 맵리듀스는 아래와 같이 크게 네 가지 특징을 가지게 됩니다.

 

맵리듀스(MapReduce)의 특징

 

1. 코드를 데이터가 있는 서버로 전송한다.

  • 기존에는 데이터를 개발환경으로 가져와 처리하였지만, 이제는 데이터가 발생한 곳에서 처리할 수 있게 되었습니다.

 

2. Key-Value 형태로 데이터 셋을 변환 처리

  • 데이터는 HDFS에서 효율적으로 사용하기 위해 블록 단위로 쪼개져서 나뉘고 복제되고 저장됩니다.
  • 이렇게 블록 단위로 나뉜 데이터를 읽어 들여서 처리하는 과정을 맵 태스크라고 합니다.
  • 이때 데이터의 저장에 사용되는 자료구조가 맵(Map)이고, 맵은 key-value 쌍으로 이루어진 자료형입니다.
  • 맵 태스크의 출력 결과를 최종 처리하는 것을 리듀스 태스크라고 부릅니다.
  • 요약하자면, 맵은 데이터를 효율적으로 모으는 작업, 리듀스는 모은 데이터를 기반으로 원하는 결과를 산출하는 작업이라고 설명할 수 있습니다.

 

3. Share Nothing 아키텍처

  • 하둡 파일 시스템에서 분선 처리 과정은 매우 효율적이어서, 서로 데이터를 공유하지 않습니다.
  • 즉 자신의 데이터만을 처리해 디스크에 저장하므로 매우 단순하다는 특징이 있습니다.

 

4. 오프라인 배치 처리에 적합함

  • 맵 리듀스는 프로그램 자체를 만드는 것에도 시간이 필요하지만, 프로그램을 실행하기 위해 준비하는 데에도 많은 시간이 필요합니다.
  • 또한 맵과 리듀스라는 두개의 작업 간에 ‘셔플링’이라는 단계가 존재하므로 시간이 더 필요하게 됩니다.
  • 따라서 맵 리듀스를 기반으로 하는 ‘분산 배치 병렬 처리’는 단어 그대로 실시간보다는 일반 배치 처리에 적합합니다.

 

SQL to Hadoop

빅데이터를 분석할 때에 분산 환경에서 DBMS와 데이터를 연계하여 분석해야할 수 있습니다.

이를 위해서는 대표적인 정형 데이터 DBMS 데이터와 분산 환경에 저장된 데이터 간의 통합 과정이 필요합니다.

이때,사용되는 기술이 바로 스쿱(Sqoop)입니다.

스쿱은 서로 다른 시스템 간에 정보를 교환할 수 있도록 도와주는 역할을 수행하며, DBMS의 데이터와 하둡 시스템 간의 데이터 연결에서 스쿱의 역할을 도식화하면 아래와 같습니다.

 

 

fig 1.1 서로 다른 시스템 간의 데이터 교환

 

 

이처럼 스쿱(Sqoop)은 서로 다른 시스템으로 데이터를 간편하게 이동할 수 있도록 개발되었습니다.

스쿱은 자체로 어떤 패키지나 프레임워크는 아니지만, 서로 다른 시스템 간의 브릿지로서 데이터를 주고 받을 수 있도록 역할을 수행합니다.

 

 

SQL on Hadoop

데이터베이스에 데이터를 저장하고 처리하기 위해서는 SQL문을 사용합니다.

하둡 분산 파일 시스템에서도 마찬가지로 SQL과 유사한 형태로 데이터를 요청하거나 처리할 수 있도록 지원하는데, 이 때 사용되는 기술이 SQL on Hadoop  입니다.

 

하둡에서도 데이터베이스에서 사용하는 SQL과 같은 질의문을 채택하게 된 데에는 세가지 이유가 있습니다.

 

첫째, 개발시간을 단축할수 있습니다.

둘째, 기존 프로그램의 상당수가 SQL로 되어 있으므로 로직을 이해하고 전환할 때에 필요한 리소스를 절약할 수 있습니다.

셋째, 직관적인 형태로 인해 통찰력을 비교적 쉽게 얻어낼 수 있다는 이점이 있습니다.

 

따라서, 하둡 시스템에서도 데이터베이스 처럼 SQL과 유사한 질의문으로 데이터를 처리할 수 있게 지원하게 되었습니다.

 

스트리밍 데이터의 처리

페이스북과 같은 해외 주요 기업 뿐만 아니라 국내 기업, 기관에서도 하둡을 통해 대용량 데이터를 분산 저장 및 분석하고 있습니다.

맵리듀스 기술은 대용량의 데이터를 처리하는데 효율적이지만, 근본적으로 준비 및 처리 단계에서 많은 시간이 필요하다는 한계가 있습니다.

그래서, 실시간 시스템에서 처리할 수 있도록 굉장히 빠른 빅데이터 처리 기술이 필요하게 되었는데, 이를 위해 개발된 기술이 스톰(Storm)입니다.

 

스톰의 개발 배경은 안티 스팸 등을 방지하기 위한 기술로서 BackType이라는 회사에서 개발하였다가 트위터에 합병되었습니다.

 

스톰에서는 방대한 데이터가 발생할 때까지 기다리는 것이 아니라, 데이터가 발생하는 즉시 그 데이터를 처리할 수 있도록 처리용 엔진을 제공하여 데이터의 처리를 지원하는데, 빠른 속도를 위해서 이 엔진은 정지하지 않고 계속 동작하는 것이 큰 특징입니다.


이외에도 다양한 빅데이터 분야에서 사용되는 기술 및 개념들 몇 가지만 더 소개하고 오늘의 포스팅을 마치도록 하겠습니다.

 

 

아파치 피그(Apache Pig)

  • 대용량 데이터 집합을 분석하기 위한 플랫폼으로 하둡을 이용하여 맵 리듀스를 사용하기 위한 높은 수준의 스크립트 언어인 피그 라틴이라는 자체언어를 제공하는 기술

https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%ED%94%BC%EA%B7%B8

 

아파치 피그 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 피그(Pig)[1]는 대용량 데이터 집합을 분석하기 위한 플랫폼으로 아파치 하둡(Apache Hadoop)을 이용하여 맵리듀스(MapReduce)를 사용하기 위한 높은 수준의 스크립트

ko.wikipedia.org

 

 

아파치 하이브(Hive)

  • 하둡 기반의 DW 솔루션으로 SQL과 매우 유사한 HiveQL이라는 쿼리를 제공하는 기술

https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%ED%95%98%EC%9D%B4%EB%B8%8C

 

아파치 하이브 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 아파치 하이브(Apache Hive)는 하둡에서 동작하는 데이터 웨어하우스(Data Warehouse) 인프라 구조로서 데이터 요약, 질의 및 분석 기능을 제공한다.[3] 초기에는 페이

ko.wikipedia.org

 

데이터 마이닝(Data Mining)

  • 빅데이터 분석 기술 중 대량의 데이터를 분석하여 데이터 속에 있는 변수 사이의 상호 관계를 규명하여 일정한 패턴을 찾아내는 기법

참고 자료

https://www.oracle.com/kr/big-data/what-is-big-data/

 

빅 데이터란 무엇인가

빅데이터는 특히 새로운 데이터 소스에서 나온 더 크고 더 복잡한 데이터 세트입니다. 빅데이터의 이점, 과제 및 모범 사례 외에도 정의 및 역사에 대해 알아보십시오.

www.oracle.com

https://throwexception.tistory.com/1024

 

빅데이터 - 6. 수집 및 관리

빅데이터 수집 과정 1. 데이터 유형 파악하기 : 종류, 크기, 수집 주기에 따라 구분 -> RDB data, JSON, img, log 2. 수집 방법 : 유형에 따라 최적 -> 정형 데이터는 Sqoop, Vendor Driver, API -> 로그/센서는 Scribe,

throwexception.tistory.com

https://ko.wikipedia.org/wiki/%EB%A7%B5%EB%A6%AC%EB%93%80%EC%8A%A4

 

맵리듀스 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4_%EC%8A%A4%ED%82%A4%EB%A7%88

 

데이터베이스 스키마 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 미디어위키의 데이터베이스 스키마 개요 컴퓨터 과학에서 데이터베이스 스키마(database schema)는 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의

ko.wikipedia.org

 

- 한국 데이터 산업 진흥원 2015 데이터 산업 백서