빅데이터의 주변 기술이 생겨난 역사적 배경을 보고, 기본이 되는 사고방식과 용어를 정리한다.
빅데이터라는 단어를 대중 매체를 통해 사람들이 자주 접하게 된 시기는 2011년 후반에서 2012년에 걸쳐 기업들이 분산 시스템을 도입하기 시작했을 무렵이다.
빅데이터의 기술로 가장 먼저 예로 드는 것이 Hadoop과 NoSQL이다.
Hadoop : 다수의 컴퓨터에서 대량의 데이터를 처리하기 위한 시스템.
ex) 전 세계의 웹페이지르리 모아서 검색 엔진을 만들려면 방대한 데이터를 저장해둘 스토리지와 데이터를 순차적으로 처리할 수 있는 구조가 필요하다.
이때 수백에서 수천 대 단위의 컴퓨터가 이용되어야 하며, 그것을 관리하는 것이 Hadoop이라는 프레임워크이다.
원래는 MapReduce를 참고하여 제작된 프레임워크로 자바로 프로그램 했어야 하지만, Hive의 도입으로 SQL과 같은 쿼리 언어도 사용할 수 있게 되었따.
NoSQL : RDB의 제약을 제거하는 것을 목표로 제작된 DB의 총칭이다.
종류로는 크게 Key-Value Store(SVS), 도큐멘트 스토어(document store), 와이드 칼럼 스토어(wide-column store) 등이 대표적이다.
애플리케이션으로 온라인으로 접속하는 것이 특징이다.
이 둘의 조합으로 NoSQL에 기록하고 Hadoop으로 분산처리하는 흐름이 2011년 말까지 정착하게 되고, 2012년 부터 널리 퍼지게 되었다.
전통적인 데이터 웨어하우스(DWH)에서 확장(scaling)에 대한 문제가 있어 분산 처리는 Hadoop으로 처리하고 데이터는 웨어하우스에 저장하는 구조가 자리잡게 되었다.
'여러 컴퓨터에서 분산 처리한다.'는 것이 빅데이터의 특징이다. 하지만 이를 위한 HW를 준비하고 관리하는 일은 간단하지 않다. 다행이 이와 비슷한 시기에 클라우드 서비스에 보급으로 시간 단위로 필요한 자원을 확보할 수 있게 되었다.
또 비슷한 시기에 데이터 웨어하우스에 저장된 데이터를 시각화하는 방법으로 데이터 디스커버리가 인기를 끌게 되었다.
데이터 디스커버리는 셀프서비스용 BI 도구로 불린다. BI 도구는 예전부터 대기업의 IT 부서에서만 사용되던 경영자용 시스템 프로그램이었지만, 개인도 도입할 수 있을 정도로 단순화 된 것을 셀프서비스용 BI 도구하고 한다.
본 책에서 다루는 '빅데이터 기술'이란 분산 시스템을 활용하면서 데이터를 순차적으로 가공해 나가는 일련의 구조다. 여러 서브 시스템을 조합함으로써 실현 가능하다.
데이터 파이프라인
차례대로 전달해나가는 데이터로 구성된 시스테믕ㄹ 데이터 파이프라인이라고 한다.
빅데이터의 데이터 파이프라인은 어데이서 데이터를 수집하여 무엇을 실현하고 싶은지에 따라 변화한다.
데이터 수집
데이터는 여러 장소에서 장소에서 발생하고 각각 다른 형태를 보인다. 이 다른 형태에 여러 장소에서 수집된 데이터들은 서로 다른 기술로 데이터를 전송한다.
데이터 전송
데이터 전송에는 크게 벌크(bulk)형과 스트리밍(streaming)이 있다.
스트림 처리와 배치 처리
스트림 처리 : 스트리밍 형 방법으로 받은 데이터를 실시간으로 처리하는 방법. ex) 시계열 데이터베이스 같은 실시간 처리를 지향한 DB를 사용해 즉각적으로 분석가능한 처리.
배치 처리 : 장기적인 데이터 분석에 적합한 방법으로 어느 정도 정리된 데이터를 효율적으로 가공하는 위해 사용하는 처리 방법.
분산 스토리지
여러 컴퓨터와 디스크로부터 구성된 스토리지 시스템을 말한다. 대표적으로 객체 스토리지로 한 덩어리로 모인 데이터에 이름을 부여해서 파일로 저장한다. ex) Amazon S3
분산 데이터 처리
분산 스토리지에 저장된 데이터를 처리하는데 분산 데이터 처리 프레임워크가 필요하다.
MapReduce가 사용된게 이 부분 때문이다. 이들의 역할은 나중에 분석하기 쉽도록 데이터를 가공해서 그 결과를 외부 DB에 저장하는 것이다.
대다수의 사람들이 데이터 집계에 있어 SQL를 사용하고 이에는 두가지 방법이 있다.
하나는 쿼리 엔진을 도입하는 것이다. Hive도 그것의 대표적인 예이다.
다른 하나는 외부의 데이터 웨어하우스 제품을 이용하는 것이다. 데이터 웨어하우스에 적합한 형태로 변환해 적재하는 것은 ETL 처리라고 한다.
워크플로 관리
전체 데이터 파이프라인 동작을 관리하기 위해 워크플로 관리 기술을 사용한다.
매일 정해진 시간에 배치 처리를 스케줄대로 실행하고, 오류 발생시 관리자에게 통지하는 목적이다.
데이터 파이프라인의 기본형 (기존 방식)으로 DWH를 구축하는 프로세스부터 보자.
DWH는 일반적인 RDB와 달리 대량의 데이터를 장기 보존하는 것에 최적화 되어있다.
DWH 측면에서 업무 시스템을 위한 RDB나 로그 등을 저장하는 파일 서버는 데이터 소스라고 하고 여기에 저장된 로우 데이터를 추출하고 가공해서 DWH에 저장한다. 이 때 ETL 도구라는 전용 SW가 자주 이용된다.
DWH는 아무때나 사용하면 시스템에 과부화가 걸리고 중요한 데이터 처리를 못하는 경우가 생길 수 있기 때문에, 필요한 데이터만을 추출해 데이터 마트에 저장한다. 데이터 마트는 BI 도구와 조합시키는 형태이다.
모든 데이터를 원래의 형태로 축적해두고 나중에 그것을 필요에 따라 가공하는 구조가 필요해졌고, 이 축적 장소를 데이터 레이크라고 한다.
임의의 데이터를 저장할 수 있는 분산 스토리지가 데이터 레이크로 이용된다.
여기서 단순한 데이터 스토리지의 데이터를 가공해주는 툴이 MapReduve 같은 분산 데이터 처리 기술이다.
이런 빅데이터 기술은 다방면에 걸치기 때문에 시스템의 구축 및 운용, 자동화는 데이터 엔지니어, 데이터에서 가치있는 정보를 추출하는 데이터 분석가로 역할이 나뉜다. (물론 나눌수 있을 정도로 팀의 규모가 클 때 해당한다.)
애드 혹 분석 : 자동화 구축을 하지 않고 수작업으로 데이터를 집계하는 일회성 데이터 분석.
SQL 쿼리를 직접 작성해서 실행, 스프레드시트에서 그래프를 만드는 것 까지 포함해 모든 수작업이 애드 혹 분석에 포함된다.
애드 혹 분석은 데이터 마트를 만들지 않고 데이터 레이크와 DWH에 직접 연결하는 경우가 많다.
이때 수작업으로 데이터 분석 또는 정기적으로 그래프와 보고서를 만들고 싶을 때 대시보드 도구를 도입한다.
데이터 분석에서는 데이터 마트를 구축한 후에 분석하거나 시각화하도록 한다. BI 도구를 사용할 경우 집계 속도를 높이기 위해 데이터 마트가 거의 필수적이다. 데이터 마트 구축은 배치 처리로 자동화되는 경우가 많아 이런 실행 관리를 위해 워크플로 관리 도구를 사용한다.
데이터를 모은 후에 무엇을 할지는 달성하고자 하는 목정에 따라 달라진다.
크게 3가지 패턴을 봐보자.
데이터 검색 : 대량의 데이터 주에서 조건에 맞는 것을 팢고 싶은 경우가 있다. 시스템에 오류가 있을 경우 시스템 로그 및 고객의 행동 이력 등 발생하는 모든 데이터를 취합해 신속한 검색 엔진이나 실시간 데이터 처리를 사용해 빠르게 찾도록 시스템을 구축한다.
데이터 가공 : 데이터 처리 결과를 이용하고 싶을 때 (ex) 웹사이트 추천 상품 제공, 이상 데이터 감지 및 통보 등) 목적이 명확하기 때문에 필요한 데이터를 계획적으로 모아 데이터 파이프라인을 설계한다.
이때는 자동화는 필수적이기 때문에 워크플로 관리를 도입하여 테스트를 반복적으로 실행해 시스템을 구축한다.
데이터 분석은 일반적으로 가설을 세우고 그것을 검증하는 확증적 데이터 분석과 데이터를 보면서 그 의미를 읽어내는 탐색적 데이터 분석으로 나뉜다.
전자는 주로 통계학적 모델링에 의한 데이터 분석이고, 후자는 데이터를 시각화하여 사람의 힘으로 그 의미를 읽는다.
데이터 프레임 : 표 형식의 데이터를 추상화한 객체
ex) 스프레드 시트에 하나의 시트, DB에 하나의 테이블을 통째로 하나의 객체로 취급한 것
데이터 프레임의 프로그래밍 모델은 효과적이며 데이터 처리의 스크립트화를 생각하는 데 있어서 빠뜨릴 수 없다.
표 형식의 데이터는 가로, 세로 2차원 배열이기 때문에 '배열 안의 배열'을 준비하면 데이터 프레임을 만들 수 있다. -> 이 데이터 프레임을 사용해 스크립트 언어 안에서 데이터 가공과 집계를 할 수 있다.
JSON 데이터나 텍스트 데이터 등도 한 번 데이터 프레임으로 변환해 버리면, 다음은 스프레드시트와 다르지 않다.
위에 설명한 데이터 프레임 만들기의 한 예로 웹 서버의 액세스 로그, 시계열 데이터, SQL의 결과를 예로 해서 DWH나 BI 도구에서 읽어 들일 수 있도록 pandas를 이용해 데이터 프레임을 만든다. (p.28)
모니터링 : 계획적으로 데이터의 변화를 추적해 나가는 것
애드 혹 분석 : 데이터를 살펴보고 싶을 때 이용하는 것
데이터의 변화를 모니터링하고 만약 예상과 다른 움직임 있다면, 그때는 결정을 해야한다.
프로젝트의 현황을 파악하기 위한 숫자로 업계마다 중요한 지표인 KPI(key performance indicator) 자주 이용된다. (p.35 KPI 예시)
이렇게 사람의 직감이 아닌 객관적인 데이터를 근거하여 판단하는 것을 데이터 기반(data driven) 의사 결정이라고 한다.
이러한 데이터 기반 의사 결정을 위해 월간 보고서 같은 정기정인 데이터 기반 보고서들이 필요하다. 그리고 이런 보고서들은 2가지 어려운 점을 갖는다.
첫째는 이 보고서들의 기본적인 형태인 스프레드 시트에는 데이터 웨어하우스와 배치 처리가 필요하고 워크플로를 통해 자동화 할 수 있다.
둘째는 상세한 내역을 조사할 수 있게 (왜 이런 결과값이 나왔는지에 대해) 확인할 수 있어야한다. 이를 위해 사용하는 것이 BI 도구이다.
책에서는 Tableau Public이라는 무료 BI 도구를 사용한다. (다른 BI 도구 예시 p.37)
Tableau에서는 위에서 pandas로 만든 csv 파일을 즉각적으로 간단하게 시각화 해준다.
여기서 주의할 점은 항상 이상적인 데이터가 존재한다고 할 수 없다. 원하는 대로 집계 겨로가를 얻으려면 '시각화하기 쉬운 데이터'를 만들어야 한다.
그리고 또 BI 도구로 이런 화면을 만들기 위해서는 베이스가 되는 데이터가 위와 같은 형식으로 되어 있어야 한다. 그러나 처음부터 이렇게 입맛에 맞게 정리된 데이터가 있는 경우는 거의 없다. 제대로 설계된 데이터가 없다면, 자신의 생각과 딱 맞는 화면을 만들 수 없다는 BI 도구의 한계다.
해당 책이 내용이나 순서, 예제들이 실속있다는 것을 알 수 있었습니다.
빅데이터의 탄생 부터, 기업에서의 쓰임새, 기초적인 데이터 프레임 제작법 등 포괄적으로 기초 지식을 훑어볼 수 있는 장이었다.