[첫번째 이야기] 빅데이터란?

시작하며..

최근 빅데이터 관련 일을 진행하면서 Hadoop이나 NoSQL에 대해 살펴볼 수 있었습니다개인적으로는 새로운 경험의 시작이었고내용을 잊어버리기 전에 정리하고자 글을 작성하게 되었습니다.

 

빅데이터 기술이란, 기존 관계형 데이터베이스의 능력을 넘어서는 대량의 정형 또는 비정형의 많은 데이터로부터 가치를 추출하고 결과를 분석하는 기술과 비즈니스 프로세스에 내재화하여 적용하는 기술을 말합니다이 글에서는 빅데이터 처리 기술을 구현하기 위한 저장 시스템처리 방식 측면에서 많이 사용되고 있는 Hadoop에 대해 내용을 작성합니다.

 

 

빅데이터에 대해 다루기 전에 세가지 내용을 먼저 말씀드리고 싶습니다.

 

첫째, 데이터의 중요성
데이터의 중요성은 이미 모두가 알고있는 사실이고, 빅데이터 분석이라고 해서 특별하게 처리해야 하는 데이터의 양이 많아져서 데이터가 중요해진 것이 아니라 데이터의 양이 많아짐으로 해서 기존 시스템으로는 처리하기가 어려워진 것이 빅데이터 기술이 나온 배경이라고 생각합니다.

 

둘째, 업무에 대한 전반적인 이해가 필요
데이터를 처리하고 분석을 통해 새로운 가치를 창출하기 위해서는 데이터에 대한 이해뿐만 아니라 애플리케이션이나 비즈니스에 대한 전반적인 이해가 반드시 있어야 하고, 어떻게 데이터를 분석할 것인가에 대한 문제를 정확히 정의하고 어떤 데이터를 처리할 것인가를 결정해야 합니다.

 

셋째, 데이터 접근의 편리
이러한 원시 데이터나 분석된 데이터에 대한 담당 조직의 관리나 비즈니스에서의 데이터 접근이 쉽고 밀접하게 연결되어야 합니다.

 

빅데이터란?

빅데이터는 기존의 RDBMS(Relational DataBase Management System)로는 처리(수집, 저장, 관리, 분석)가 어려울 정도로 많은 정형 또는 비정형 데이터의 집합과 이러한 데이터로부터 분석을 통해 생산된 가치를 의미합니다.

빅데이터에 대한 특징을 이야기할 때 가트너그룹의 “3V”(Volume, Variety, Velocity)에서 데이터의 가치(Value) 부분을 추가하여 흔히 “4V”가 거론되고 있으며, 활용되는 목적에 따라 정의가 달라질 수 있습니다. 

 

 

 

 

 ·   (Volume): 저장해야 하는 데이터 뿐만 아니라 이러한 데이터를 통해 분석/처리되어 새롭게 생산된 모든 데이터의 양

 ·   다양성(Variety): 구조화되고 정제된 정형 데이터 뿐만 아니라 텍스트, 이미지와 같은 비정형 데이터, 구조화되었지만 내용에 일정한 형식이 없는 반정형 데이터

<!--[if !supportLists]-->        ·   <!--[endif]-->속도(Velocity): 데이터는 매일 매 순간마다 생산되고, 이렇게 지속적으로 발생하는 데이터에 대해 빠르게 처리되고 저장 되야 한다.

<!--[if !supportLists]-->        ·   <!--[endif]-->가치(Value): 데이터 분석을 통해 도출된 결론은 기업이나 조직의 당면한 문제를 해결할 수 있어야 하고 통찰력 있는 유용한 정보를 제공해야 한다. 

 

분석 대상에는 무엇이 있을까?

 고객 정보, 증권 매매 정보, 서비스 로그, 웹 서버나 응용 프로그램의 로그 등 다양한 분야의 많은 데이터들이 분석 대상이 될 수 있습니다.

 이러한 데이터는 이미 오래 전부터 관리하고 분석했던 데이터입니다. 하지만 왜 최근에서야 빅데이터라는 용어로 각광받고 있는 것일까? 빅데이터를 매력적으로 만든 데에는 소셜 네트워크의 발달, IoT(Internet Of Things) 시대의 도래, 모바일 시장 활성화, 클라우드 컴퓨팅, 대용량 처리 기술이라는 환경적 요소가 있으며, 이러한 환경의 변화는 한정된 정형 데이터에서의 가치 창출에서 비정형 데이터를 포함한 모든 데이터에서 가치 창출로 변화하였고, 그 만큼 저장하고 관리해야 하는 데이터의 양이 많아지면서 하드웨어 비용이 증가하는 원인이 되었습니다.

 

  

 

 그렇기 때문에 데이터 저장소의 수직적 확장(scale-up)보다는 수평적 확장(scale-out) 기술이 중요해지고 있는 것이고, 개인 간의 관계 분석이나 개인의 취향을 분석하는 복잡한 기능과 저장 크기와 처리 요구량에 있어서 OLTP(Online Transaction Processing) 범위를 넘어서는 데이터 처리 기술이 중요해지고 있습니다..

 

 

 빅데이터를 다루는 기술

데이터의 분석 시스템이 갖는 특징으로 저장 시스템, 처리 방식, 분석 방식 측면으로 나누어 볼 수 있습니다.

 

<!--[if !supportLists]-->1)   <!--[endif]-->NoSQL

RDBMS에서 ACID(Atomicity, Consistency, Isolation, Durability)를 지원하면서 수평으로 확장하는 것은 매우 어려운 일입니다. 여러 장비에 데이터를 나누어 저장해야 하고, 나누어진 데이터에 대한 ACID를 만족하려면 복잡한 locking 방식과 복제 방식을 사용할 수 밖에 없게 되고, 이는 결국 성능 저하로 이어지기 때문입니다.

이러한 이유로 NoSQL에서는 데이터 모델을 단순화해서 분산의 기본이 되는 shard를 쉽게 정의하고, 분산 복제 환경에서 consistency의 요건을 완화하거나, Isolation 요건을 제약하는 형태의 저장 시스템을 제안합니다.

 

<!--[if !supportLists]-->2)   <!--[endif]-->분산 파일 저장

대량의 데이터를 파일 형식으로 저장하기 위해 SAN(Storage Area Network), NAS(Network Attached Storage)와 같이 기존 저장 기술도 있고, Amazon S3 OpenStack Swift와 같은 클라우드 파일 저장 시스템, GFS(Google File System), HDFS(Hadoop Distributed File System)와 같은 분산 파일 시스템 등이 있으며 수평 확장 접근 방식을 취하고 있다는 점에서는 동일합니다.

 

<!--[if !supportLists]-->3)   <!--[endif]-->병렬 처리

병렬 처리의 핵심은 분할 점령(Divide and Conquer)이다. 즉 데이터를 독립된 형태로 분할하고 이를 병렬적으로 처리하는 것입니다.

빅데이터의 데이터 처리란 이렇게 문제를 여러 개의 작은 연산으로 나누고 이를 취합하여 하나의 결과로 만드는 것을 말한다. 물론 연산 의존성이 있는 경우에는 병렬 연산의 이점을 살릴 수 없을 것입니다.

 

<!--[if !supportLists]-->4)   <!--[endif]-->분석 방식

데이터에서 의미를 찾는 과정을 KDD(Knowledge Discovery in Databases)라고 합니다. 데이터를 저장하고, 관심 있는 데이터의 일부 또는 전부에 대해 비즈니스를 적용한 가공 처리나 분석을 통해 추이나 의미 있는 값을 추출하거나 새로운 사실을 발견해서 이를 지식으로 만드는 것입니다.

이를 위하여 인공지능, 기계 학습, 통계, 데이터 베이스 등 여러 분야의 기술을 종합적으로 적용할 수 있습니다.

 

이 외에도  수 많은 기술들이 존재하지만 이 글에서는 제가 경험해본 대상들에 대해서만 작성하였습니다. 다음에는 분산 파일 저장과 분산처리로 주로 사용되는 Hadoop에 대해 작성하겠습니다.

 

시리즈 내용은 아래 링크를 통해 확인해주세요.

 

[두번째 이야기] 데이터 분산처리 시스템, Hadoop

[세번째 이야기] Hadoop Cluster 설치하기

[네번째 이야기] Hadoop 장애 Test

 

 

 

New Multi-Channel Dynamic CMS