빅데이터를 지탱하는 기술(1) - 빅데이터의 기초 지식
1. 빅데이터의 기초 지식
1-1. 빅데이터의 정착
빅데이터의 한계를 극복한 대표적인 2가지 기술
Hadoop
다수의 컴퓨터에서 대량의 데이터를 처리하기 위한 시스템.
MapReduce를 참고하여 제작되었고 이는 자바로 프로그래밍을 해야한다.
후에 SQL과 같은 쿼리 언어를 Hadoop에서 실행하기 위해 Hive가 개발되었다. 이를 통해 프로그래밍 없이 데이터를 집계할 수 있게 되었다.
NoSQL 데이터베이스
전통적이 RDB의 제약을 제거하는 것을 목표로 한 데이터베이스의 총칭으로, 다양한 종류가 있다.
※ NoSQL은 말그대로 SQL(RDB)이 아닌 것으로 아주 다양한 종류가 있다. 한국음식(SQL) vs 한국 음식이 아닌 음식(NoSQL)과 같은 개념이라고 생각하면 쉬울 듯 하다.
RDB보다 읽기, 쓰기 속도가 굉장히 빠르고 분산 처리에 뛰어나다는 특징을 가지고 있다. 모여진 데이터를 나중에 집계하는 것이 목적인 Hadoop과 다르게 애플리케이션에서 온라인으로 접속한다.
Hadoop과 NoSQL 조합
“NoSQL에 기록하고 Hadoop으로 분산 처리하기”가 일반적인 흐름이다.
데이터 웨어하우스와의 공존
비즈니스에서는 하둡 이전에도 데이터 웨어하우스(DW)를 통해 데이터를 축적하고 있었다.
전통적인 데이터 웨어하우스에서도 똑같이 대량의 데이터를 처리할 수 있었지만 하둡과 비교해 가속도적으로 늘어나는 데이터에 대비해 확장하기에는 역부족이었다. 따라서 가속도적으로 늘어나는 데이터 처리는 하둡에게 맡기고, 작거나 중요한 데이터는 DW에 넣는 식으로 사용을 구분하였다.
클라우드 서비스와 데이터 디스커버리로 직접 할 수 있는 데이터 분석 폭 확대
여러 컴퓨터에 분산 처리를 한다는 것은 굉장이 어려운 일인데, 클라우드의 발전으로 어렵지 않게 되었다.
또한 데이터를 시각화하는 데이터 디스커버리 즉, BI 도구가 DW와 조합되어 사용돼 데이터로부터 가치있는 정보를 찾기가 용이해졌다.
그 밖에도 스파크와 같은 새로운 분산 시스템용 프레임워크가 보급되면서 효율적인 데이터 처리가 가능해졌다.
지금까지 빅데이터가 어떻게 지금과 같이 성공적으로 비즈니스나 직무에 정착할 수 있었는지 그 역사를 살펴보았다.
1.2 빅데이터 시대의 데이터 분석 기반
기존의 데이터 웨어하우스와 빅데이터의 가장 큰 차이점은 분산 시스템을 조합하여 확장성이 뛰어난 데이터 처리 구조를 만든다는 점이다.
분산 시스템을 활용해서 데이터를 가공해 가는 빅데이터 기술
데이터 파이프라인
데이터를 차례대로 전달해나가는 시스템을 데이터 파이프라인이라고 한다.
데이터 수집
데이터는 데이터베이스, 파일 서버, 애플리케이션, 임베디드 장비 등 여러 장소에서 다양한 형태로 모인다.
데이터 전송 방법은 크게 벌크형과 스트리밍형이 있다.
① 벌크형은 이미 어딘가에 존재하는 데이터를 정리해 추출하는 방법으로, 주로 데이터베이스나 파일 서버에서 수집한다.
② 스트리밍형은 계속해서 차례차례로 생성되는 데이터를 끊임없이 계속해서 보내는 방법으로, 애플리케이션이나 임베디드 장비 등에서 수집한다.
기존의 DW에서는 주로 벌크형이 이용되었지만, 점차 스트리밍형이 주류가 되고 있다.
각각은 처리 방법이 다른데, 스트리밍형은 스트림 처리를 통해 시계열 데이터베이스와 같은 실시간 처리를 지향한 데이터베이스에 저장한다.
하지만 장기적인 데이터 분석을 위해서는 배치 처리 구조를 사용하는 것이 좋다.
분산 스토리지
수집된 데이터는 분산 스토리지에 저장된다. 분산 스토리지란 여러 컴퓨터와 디스크로부터 구성된 스토리지 시스템을 말한다.
분산 스토리지는 객체 스토리지(Amazon S3)나 NoSQL을 사용할 수가 있다.
※ 데이터베이스와 스토리지의 차이점
간단하게 설명하면 스토리지는 텍스트 파일, 이미지, 영상 등 다양한 종류의 데이터가 저장될 수 있다. 반면 데이터베이스는 구조적 또는 반구조적 데이터가 저장된다. 스토리지는 파일이 담기고 DB는 2차원 데이터가 담긴다. NoSQL은 이 둘 사이의 조금 모호한 개념이라고 한다.
참고가 될만한 쿼라 답변
Storage is a semi organized, generally un-indexed disk location where entire files of data can be saved and stored as one large object. Storage has rough search capabilities but generally is not intended to support detailed queries or data retrieval. Examples: S3 buckets in AWS, shared drives on servers, perhaps to a certain extent file management platforms like Sharepoint, etc.
Databases are structured systems designed to hold individual data elements in referentially sound structures that maintain data integrity, data lineage and support detailed and aggregated reporting. Files can be stored within databases, but are difficult to then search upon or query upon; instead the individual key data elements of a file are designed to be extracted and stored separately. Examples are the litany of commercial and Open source database platforms available today. Oracle, MS Sql Server, DB2, Mysql, Postgres, etc etc.
Where the lines get blurred a bit are when considering NoSQL databases, or databases that natively store documents in JSON format (like DynamoDB or MongoDB). These databases can blur the line a little bit between Storage and Database for documents that are in the proper formats.
분산 데이터 처리
분산 스토리지에 저장된 데이터를 처리하는 데 분산 데이터 처리 프레임워크가 필요하다. MapReduce가 바로 이 부분에서 사용된다.
분산 데이터 처리의 주 역할은 나중에 분석하기 쉽도록 데이터를 가공해 그 결과를 외부 데이터베이스에 저장하는 것이다.
이렇게 데이터를 집계하는데는 SQL이 사용되는데 여기에는 두 가지 방법이 있다.
① 쿼리 엔진: 분산 스토리지 상의 데이터를 SQL로 집계(Hive)
② 외부 데이터 웨어하우스 이용: 분산 스토리지에서 추출한 데이터를 데이터 웨어하우스에 적합한 형식으로 변환한다. 이를 ETL 프로세스라고 한다.
워크플로 관리
전체 데이터 파이프라인을 정해진 시간에 스케줄대로 실행하고, 오류가 발생한 경우에는 관리자에게 통지하는 목적으로 워크플로를 사용한다.
데이터 파이프라인의 기본형: 데이터 웨어하우스와 데이터 마트
기존 방식대로의 데이터 웨어하우스 구축 프로세스인 “데이터 파이프라인의 기본형”을 살펴보자.
데이터 웨어하우스는 일반적인 RDB(데이터 소스, 프로덕션DB)와는 달리 대량의 데이터를 장기 보존하는 것에 최적화되어 있다. 이 데이터 소스에 보존된 로우 데이터를 추출하고 가공한 후 데이터 웨어하우스에 저장하기까지의 흐름이 바로 ETL 프로세스 이다.
데이터 웨어하우스는 자주 읽고 쓰는데는 적합하지 않기 때문에 데이터 분석과 같은 목적에 사용하는 경우에는 데이터 웨어하우스에서 필요한 데이터만을 추출하여 데이터 마트(DM)를 구축한다. 데이터 마트는 BI 도구와 조합시키는 형태로 데이터를 시각화하는 데에도 사용한다.
DW와 DM 모두 SQL로 데이터를 집계하기 때문에 테이블 설계를 제대로 설정해야 한다.
데이터 웨어하우스를 중심으로 하는 파이프라인에서는 테이블 설계와 ETL 프로세스가 굉장히 중요하다고 할 수 있다.
데이터를 그대로 축적: 데이터 레이크
모든 데이터가 데이터 웨어하우스를 기준으로 만들어 지는 것은 아니다. 텍스트 파일이나 바이너리 데이터는 DW에 그대로 넣을 수가 없다. 데이터가 먼저 있고 그 다음에 테이블이 있는 것이 빅데이터이다. 따라서 로우 데이터 그대로를 우선 축적하고 나중에 필요에 따라 그것을 가공해야 한다. 이를 여러 곳에서 데이터가 흘러들어 오는 데이터를 축적하는 호수인 데이터 레이크라고 한다.
구체적으로는 어떠한 데이터도 저장할 수 있는 분산 스토리지가 데이터 레이크로 이용된다.
데이터를 가공하지 않고 그대로 저장한다는 점에서 데이터 웨어하우스와 차이가 있다.
데이터 레이크와 데이터 마트
데이터 레이크는 단순 스토리지이므로, 그것만으로는 데이터를 가공할 수 없다. 그래서 MapReduce와 같은 분산 데이터 처리 기술을 사용한다.
데이터 분석 기반을 단계적으로 발전시키기
데이터 분석은 주로 팀을 이루어 작업한다. 크게 시스템 구축 및 운용, 자동화 등을 담당하는 데이터 엔지니어와 데이터에서 가치있는 정보를 추출하는 데이터 분석로 나뉜다.
하지만 데이터 분석을 이제 시작하려고 한다면 처음부터 완벽한 결과물을 만들어내기란 어려우므로 작은 시스템에서 시작하여 단계적으로 확장해 나가는 것이 좋다.
애드 훅 분석 및 대시보드 도구
최종적으로는 데이터 파이프라인의 자동화가 데이터 엔지니어의 목적이 될 것이다. 그 전에 수작업으로 데이터를 집계하는 작업을 먼저 살펴봐야 한다. 이를 ‘일회성 데이터 분석’이라는 의미로 애드 훅 분석이라고 한다(ad hoc은 “특별히 이것을 위해”라는 라틴어로 분석을 하고 싶을 때만 특정 목적을 갖고 수작업으로 하는 일회성 데이터 분석이다). 데이터 마트를 만들지 않은 채 데이터 레이크와 데이터 웨어하우스에 직접 연결하는 경우가 많다.
애드 훅 분석뿐 아니라 정기적으로 그래프와 보고서를 만들고 싶을 때는 대시보드 도구를 도입한다. 이는 BI 도구와 달리 데이터 마트가 없이도 동작하도록 설계되어 있어 설정한 스케줄에 따라 데이터 레이크와 데이터 웨어하우스에 접속해 쿼리를 실행하고 그 결과로부터 그래프를 생성한다.
※ 대시보드 도구와 BI 도구의 차이
대시보드 도구는 최신의 집계결과를 즉시 확인하는데 용이하다. 반면 BI 도구는 몇개월 단위의 장기적인 데이터 추이를 시각화하거나, 집계 조건을 세부적으로 바꾸고 싶을 때 사용한다.
아래의 그림을 보면 그 차이를 조금 알 수 있는데, 대시보드 도구는 다듬어 지지 않은 데이터(데이터 레이크)를 사용하고, BI 도구는 정제된 데이터(데이터 마트)를 이용한다.
※ 데이터 파이프라인의 큰 흐름은 변하지 않는다
빅데이터를 다루는 데 도구의 선택에서 주저하게 되는데, 달성하고자 하는 목표가 같으면 절차상의 문제일 뿐이다. 크게 다음의 두 가지를 생각해두면 문제 될 일은 없다.
- 데이터 용량에 제한이 없을 것
- 데이터를 효율적으로 추출할 수단이 있을 것
결국 중요한 것은 이러한 큰 흐름을 파악(워크플로 관리)하는 것이다.
데이터 마트와 워크플로 관리
복잡한 데이터 분석에서는 먼저 데이터 마트를 구축한 후에 분석하거나 시각화하도록 한다. 특히 BI 도구를 활용할 경우 빠른 집계를 위해 데이터 마트가 필수적이다. 데이터 마트 구축은 자동화되는 경우가 많아 그에 대한 실행 관리를 위해 워크플로 관리 도구를 사용한다.
워크플로를 도입하면 분석보다는 엔지니어링 작업이 많아진다. 따라서 작업량이 그렇게 많지 않다면 워크플로는 그다지 필요없다. 하지만 데이터 처리 자동화를 장기적으로 운용하기 위해서는 안정된 워크플로 관리가 필수적이기도 하다.
데이터를 수집하는 목적
데이터 검색
대량의 데이터 중에서 조건에 맞는 것을 찾고 싶을 때 사용한다. 예를 들어, 로그를 확인하는 것이 있다. 언제 어디에 필요할 지 조차도 모르기 때문에 모든 데이터를 취득해 놓는다. 필요할 때 신속하게 검색할 수 있어야 하므로, 실시간 데이터 처리나 검색 엔진을 사용하여 키워드를 찾는 기능이 필요하다.
데이터의 가공
업무시스템의 일부로서 데이터 처리 결과를 이용하고 싶은 경우가 있다. 추천 상품을 제안하거나, 센서 데이터의 비정상적인 상태를 감지하여 통보하는 경우이다. 이 경우는 목적이 명확하기 때문에 데이터를 계획적으로 모아 파이프라인을 설계한다.
여기에서는 자동화가 필수적이기 때문에 워크플로를 도입하여 시스템을 구축한다.
데이터 시각화
데이터를 시각적으로 봄으로써 알고 싶은 정보를 얻는 경우도 있다. 여기에는 확실한 해답이 없기 때문에 많은 시행착오를 겪어보아야 한다. 시각화를 고속화하려면 데이터 마트도 필요하다.
확증적 데이터 분석과 탐색적 데이터 분석
- 확증적 데이터 분석: 가설을 세우고 그것을 검증함.
- 탐색적 데이터 분석: 데이터를 보면서 그 의미를 읽어냄.
전자는 통계학적 모델링에 의한 분석이라면, 후자는 데이터를 시각화하여 사람의 힘으로 의미를 읽는다.
1.3 스크립트 언어에 의한 특별 분석과 데이터 프레임
이 부분은 파이썬에 대한 속성 학습부분이다. 나는 그래도 파이썬을 어느정도 다루어 보았기 때문에 간단하게 살펴보려고 한다.
파이썬의 데이터 프레임은 데이터를 표 형식으로 추상화한 객체로 데이터를 살펴보기에 좋다. 예를 들어 x.x.x.x - - [01/Jul/1995:00:00:01 -0400] "GET /history/apollo..." 200 6245
와 같은 로그 기록이 있으면 이를 전처리하여 보기 쉽게 표 형식으로 변환해주는 것이다.
데이터 프레임은 다루기가 어렵다는 단점이 있다. 이를 극복하기 위해 데이터 프레임에서 SQL을 이용해 데이터를 집계할 수도 있다.
1.4 BI 도구와 모니터링
데이터를 살펴보고 싶을 때 이용하는 것이 애드 훅 분석이라면, 보다 계획적으로 데이터의 변화를 추적해 나가는 것이 모니터링이다.
여기에서 자주 쓰이는 지표가 바로 KPI(Key Performance Indicator)이다. 이는 업계별로 다르다.
KPI 모니터링에서 중요한 것은 행동 가능이다. 즉, 그 결과에 따라 자신의 다음 행동이 결정될 지의 여부이다.
BI 도구를 활용하여 변화를 파악하고 세부사항 이해하기
BI 도구는 Tableau, Quick Sencse, MS Power BI, 구글 Data Studio 등 종류가 여러가지 있다.
BI 도구는 고속의 집계 엔진을 내장하고 있어 수백만 레코드 정도는 금방 그래프를 그려준다. 애드 훅 분석 등에서 대화형으로 데이터를 시각화하고 싶을 때 특히 편리하다. BI 도구는 결국 스스로 하나하나 대입해보며 데이터를 탐색하는 도구라는 것을 알아야 한다.
수작업으로 할 수 있는 것은 수작업으로 해두기
자신이 알고 싶은 정보를 자신만 보고자 한다면 굳이 전문적으로 데이터 처리과정을 설계할 필요는 없다. 간단한 작업은 BI 도구를 위한 새로운 테이블을 설계부터 시작하기보다는 한 달에 한 번씩 수동으로 하는 것이 더 쉬울 것이다.
자동화하려는 경우에는 데이터 마트를 만든다
자주 업데이트되는 데이터와 다수의 사람에게 공유되는 데이터 등 중요성이 높은 것은 차례로 자동화해 나간다. 여러가지 방법이 있겠지만 크게 3가지 정도를 살펴볼 수 있겠다.
가장 범용성이 높은 것은 2번으로 만드는 데는 시간이 걸리지만 후에 가장 편리하다.
Leave a comment