[BIGDATA] 2-3 애드 혹 분석과 시각화 도구
빅데이터의 탐색
애드 혹 분석과 시각화 도구
데이터를 시각화하기 위한 소프트웨어는 여러 종류가 있으며, 각각 다른 특징을 가지고 있다.
Jupyter Notebook에 의한 애드 혹 분석 - 노트북에 분석 과정 기록하기
어떤 데이터 분석이라도 처음에는 애드 혹 분석부터 시작한다.
그런 과정에서는 대화형 실행 환경이 자주 사용된다.
애드 혹 분석의 과정에서도 나중에 재현할 수 있도록 노트에 잘 기재해두면 도움이 된다.
Jupyter Notebook은 이를 위해 사용되는 도구 중 하나로 파이썬과 루비, R 언어 등 스크립트 언어를 실행하는 데 사용된다.
Jupyter Notebook의 노트북 안에서는 파이썬 스크립트와 외부 명령어를 실행할 수 있다.
애드 혹 분석으로 크로스 집계의 결과를 보고 싶은 경우에는 스프레드시트와 BI 도구를 시작할 필요도 없이 노트북 안에서 실행할 수 있다.
노트북 내에서의 시각화
Jupyter Notebook에서는 작업 중인 데이터 프레임에서 그래프를 작성해 노트북에 삽입할 수 있다.
여기에는 여러 라이브러리가 있지만, 그중에서도 유명한 것이 ‘matplotlib’이다.
matplotlib는 복잡한 그래프를 파이썬을 사용하여 생성한다.
시각화를 위해서는 프로그래밍이 필요하기 때문에 처음에는 시간이 오래 걸리지만, 데이터 분석 과정에서 유사한 그래프를 몇 번이고 다시 만드는 경우에 매우 유용하다.
한편, 마우스 조작만으로 대화형 차트를 만들고 싶을 때는 노트북을 사용하는 것보다 스프레드시트 및 BI 도구 등의 시각화 도구로 전환하는 편이 좋다.
노트북에 의한 워크플로 (일련의 태스크를 한꺼번에 실행하기)
노트북은 ‘간이적인 워크플로의 실행’에도 사용할 수 있다.
데이터 처리를 위한 일련의 태스크를 노트북에 정리해 놓고 메뉴의 [Kernel]에서 [Restart & Run All]을 선택하면, 모든 셀이 처음부터 순서대로 실행된다.
노트북 안에서는 다음과 같이 느낌표(!)로 명령어를 시작해서 모든 외부 명령어를 실행할 수 있다.
#외부 커맨드 실행하기
!cp source.csv target.csv
대시보드 도구 - 정기적으로 집계 결과를 시각화하기
애드 혹 분석과는 대조적으로, 정기적으로 쿼리를 실행해 보고서를 작성하거나 주요 그래프를 모아서 대시보드를 작성하는 것을 고려해보자.
여기에는 BI 도구를 사용할 수 있다.
대시보드 도구는 새로운 그래프를 쉽게 추가할 수 있는 것이 중시된다면, BI 도구는 보다 대화형 데이터 탐색이 중요시된다.
예를 들어, 그래프를 클릭하여 상세한 표시로 전환하거나 집계에 기반이 되는 로우 데이터(원시 데이터)를 표시하는 등 시간을 들여 차분히 데이터를 보고 싶은 경우에는 BI 도구가 적합하다.
한편, 대시보드 도구에서는 최신의 집계 결과를 즉시 확인할 수 있길 기대한다.
정해진 지표의 일상적인 변화를 모니터링하고 싶은 경우에는 대시보드가 적합하다.
오픈 소스의 대시보드 도구인 ‘Redash’와 ‘Superset’, 그리고 실시간 시각화 도구인 ‘Kibana’에 대해 설명하겠다.
Redash
‘Redash’는 다수의 데이터 소스에 대응하는 파이썬으로 만든 대시보드 도구로 SQL에 의한 커리의 실행 결과를 그대로 시각화하는 데에 적합하다.
Redash에 의한 대시보드의 작성은 직관적이며 다음의 3단계로 완성한다.
-
데이터 소스를 등록한다.
-
쿼리를 실행해서 표와 그래프를 만든다.
-
그래프를 대시보드에 추가한다.
Redash에서는 하나의 쿼리가 하나 또는 여러 그래프에 대응한다.
등록한 쿼리는 정기적으로 실행되어 그 결과가 Redash 자신의 데이터베이스에 저장된다.
예를 들어, Hive에서 1시간 걸리는 쿼리가 있다고 해도, Redash는 마지막으로 실행된 집계 결과를 표시할 뿐이기에 대시보드의 표시가 즉시 이루어진다.
따라서, 별도 데이터 마트를 만들 필요가 없다.
Redash의 구조는 알기 쉽고, SQL로 쿼리를 작성해서 그래프로 만들거나 또는 그 결과를 팀 내에서 공유하기 위한 콘솔로 우수하다.
반면에, BI 도구만큼 대량의 데이터를 처리할 수는 없다는 점에서 주의가 필요하다.
Redash에서의 각 쿼리는 그래프를 만드는데 필요한 수십 행 혹은 수백 행 정도의 레코드만 반환한다.
결과적으로 Redash에서는 그래프의 수만큼 쿼리를 실행하게 되고, 대시보드가 증가함에 따라 백엔드 데이터베이스의 부하가 높아진다.
Superset
‘Superset(수퍼셋)’은 ‘대화형 대시보드(interactive dashboard)’를 작성하기 위한 파이썬으로 만든 웹 애플리케이션으로 기본적인 아이디어는 BI 도구와 비슷하다.
Redash처럼 쿼리를 수동으로 입력하는 것이 아니라, 화면상에서 마우스 조작으로 그래프를 만드는 것이 기본이다.
Superset은 내장 스토리지 시스템을 갖고 있지 않으므로 데이터의 집계는 외부 데이터 저장소에 의존하고 있다.
시계열 데이터에 대응한 열 지향 스토리지인 ‘Druid’를 표준으로 지원하며 스트리밍 형의 데이터 전송과 조합시킴으로써 실시간 정보를 취급할 수 있다.
Druid를 이용하지 않는 경우에는 지연이 적은 RDB나 MPP 데이터베이스 등을 조합시켜 고속화해야 한다.
Superset에서는 BI 도구와 마찬가지로 시각화를 위한 데이터 마트를 먼저 만드는 것이 기본이다.
특히 Druid는 집계 시에 테이블을 결합할 수 없기 때문에 시각화에 필요한 데이터는 미리 모두 결합해두어야 한다.
본격적으로 도입하는 경우에는 워크플로 관리 도구도 함께 검토할 필요가 있다.
Kibana
“Kibana(키바나)’는 자바스크립트로 만들어진 대화식 시각화 도구로, 특히 실시간 대시보드를 만들 목적으로 자주 이용된다.
검색 엔진인 ‘Elasticsearch(엘라스틱서치)’의 프런트 엔드로 개발되어기 때문에 도입에는 Elasticsearch가 필수다.
RDB 등에 저장된 데이터를 보는 데는 사용할 수 없지만, 시각화를 위한 데이터 스토어로 Elasticsearch를 채용하는 경우에는 최선의 선택이 될 것이다.
Elasticsearch는 ‘전체 텍스트 검색(full-text search)’에 대응한 데이터 스토어다.
그렇기 때문에 키워드로 텍스트 데이터를 검색하려는 경우에는 특히 그 힘을 발휘한다.
시간을 들여 데이터를 탐색하는 것보다는 검색 조건에 맞는 데이터를 빠르게 시각화하는 데에 적합한 도구다.
시각화 도구의 선택 지침
시각화를 위한 소프트웨어와 서비스 중 무엇을 선택해야 할지 매우 고민된다.
앞으로 새로운 시스템을 도입하려는 경우에는 우선 다음의 세 가지를 시도해보는 것이 좋다.
1. 스프레드시트(구글 스프레드시트 등)
스프레드시트는 도입이 간단해 피벗 테이블을 사용하여 크로스를 집계하고 그래프를 작성하기가 쉽다.
또한, 클라우드 서비스라면 다른 팀원과 공유하기 좋고, API 등으로 데이터를 자동으로 업데이터하는 것도 가능하다.
단점은 대량의 데이터를 취급할 수 없다는 점과 복잡한 대시보드를 만드는 것이 어렵다.
2. 대시보드 도구(Redash 등)
대시보드 도구로 Redash와 같이 SQL을 실행하는 타입을 도입한다.
여기에는 SQL의 지식이 필요하지만, 그 외의 지식은 필요하지 않다.
동일한 쿼리를 정기적으로 반복함으로써 현황을 파악하고자 할 때 최적의 선택이다..
3. Jupyter Notebook 등
노트북을 중심으로 하는 애드 혹 분석의 환경으로 주피터를 도입한다.
여기에는 약간의 프로그래밍 지식이 필요하지만, 기본적으로 쿼리의 실행 및 크로스 집계, 그리고 CSV 파일을 읽고 쓰는 정도를 기억해두면 충분하다.
시각화를 위해서는 액셀이나 BI 도구를 사용하는 것이 편리하다.
장점은 시각화를 위해 서버를 설치할 필요 없이 데이터를 살펴보는 것 자체에 집중할 수 있다.
작업의 과정을 기록으로 남겨 두고, 나중에 확인할 수 있다는 점도 중요하다.
----------
또한, 실시간성이 중시되는 경우에는 Superset과 Kibana와 같은 실시간 처리를 가정한 대시보드 도구가 필요하다.
BI 도구 - 대화적인 대시보드
몇 개월 단위의 장기적인 데이터의 추이를 시각화하거나, 집계의 조건을 세부적으로 바꿀 수 있는 대시보드를 만들려면, BI 도구를 사용하는 것이 적합하다.
BI 도구에서는 이미 있는 데이터를 그대로 가져올 뿐만 아니라, 시간을 들여 데이터를 분석하기 쉽도록 가공하는 일이 자주 있다.
예를 들면, 유사한 상품을 하나의 그룹으로 정리하고, IP 주소를 위치 정보로 변환하는 작업 등이 있다.
따라서, 시각화에 적합한 데이터 마트를 만들어 읽고 쓰는 것을 전제로 한다.
BI 도구에서는 종종 하나 또는 소수의 데이터 소스에서 다수의 그래프를 만든다.
하나의 대시보드에 표시할 수 있는 정보량에는 한계가 있기 때문에 몇 가지 중요 화면만 먼저 만든 다음, 나중에 화면상에서 집계 조건을 바꿀 수 있도록 한다.
하나의 데이터를 다각적으로 분석하기
대화형 대시보드를 만들기 위해서는 그 바탕이 되는 데이터를 모두 포함하는 하나의 테이블을 작성한다.
전체 숫자를 파악할 수 있는 것이 적어도 한 개 있고 그것을 분해하여 주요 지표를 정리한 것이 몇 가지 있으면 좋다.
BI 도구로 시각화할 수 있는 내용으 늘리려면 배치 처리에 의한 데이터 마트 작성이 필요하다.
알고 싶은 것이 늘어날 때마다 데이터 마트에 테이블을 만들고 거기에서 파생된 다수의 대시보드가 생겨나는 것이 BI 도구의 시각화 과정이다.