🌟 화면을 넓게 하시면 오른쪽에서 목차를 확인하실 수 있습니다. :)
책의 요약 + 더 찾아본 내용이 포함되어 있습니다.
요약
1.1 Hadoop, NoSQL db, data warehouse
1.2 데이터 파이프라인의 시스템 구성
1.3 파이썬에 의한 ‘대화형 데이터 처리’
1.4 데이터 모니터링: spread sheet, BI 도구 사용
1-1 [배경] 빅데이터의 정착
빅데이터를 다루는 목적은 가치 있는 정보를 얻어오는 것!
책에서는 데이터 처리를 어떻게 효율적으로 실행하는지, 그리고 데이터 파이프라인의 자동화에 대해서 다룰 예정이라고 함. 즉, 데이터를 어떻게 분석하냐(데이터 분석)이전에 어떻게 분석가에게 가공해서 전달할 지(데이터 엔지니어링)를 설명하는 책인듯하다.
빅데이터를 처리하는 대표적인 시스템에는 Hadoop, NoSQL이 있다. 전통적인 관계형 db로 대량의 데이터를 취급할 수 없을만큼 쌓이면서 다른 구조가 대두되면서 다른 방식의 데이터 시스템이 생겨났다.
Hadoop
- 다수의 컴퓨터에서 대량의 데이터 처리하는 프레임워크
- Hive 를 통해 쿼리 언어로 hadoop에서 처리할 수 있음.
NoSQL
- key-value store, document store, wide-column store 등 다양한 종류가 있음.
=> 각각 전통적인 구조의 다른 요구를 충족하기에 “NoSQL db에 기록 + Hadoop으로 분산 처리” 조합 많이 사용함.
1-2 빅데이터 시대의 데이터 분석 기반
데이터를 순차적으로 가공해 나가는 일련의 구조를 데이터 파이프라인이라고 한다. 파이프라인은 크게 `{ 데이터 수집 —> 데이터 저장 —→ 데이터 처리 }`이루어지며 이 과정을 관리하는 것을 workflow 관리라고 한다. Workflow는 애드혹이나 batch 처리 방식으로 이루어진다.
데이터 수집
- 데이터 전송 방법
- bulk 형
- stream 형
- batch 처리: 스트리밍 형이 주류가 되고 있지만 장기적인 분석을 위해 정리된 데이터를 효율적으로 가공하는 구조도 함께 필요함.
데이터 저장 - 분산 스토리지
- 객체 스토리지 : 분산 스토리지 중 대표적인 방법
- 한 덩어리로 모인 데이터를 파일로 저장.
- 대표적 - Amazon S3
- NoSQL
분산 데이터 처리
- 데이터를 가공해서 외부 db에 저장함.
- 쿼리엔진
- Hive나 대화형 쿼리 엔진(←요즘)을 사용하여 SQL로 집계 가능
- ETL 프로세스: Extract-Transfrom-Load
- 외부의 데이터 웨어하우스 이용 시 etl 프로세스로 진행됨
데이터 분석 기반을 단계적으로 발전시키기
애드 혹 분석 및 대시보드 도구
- ad hoc analysis: 일회성 데이터 분석
- 대화형 분석 도구를 통해 쿼리를 실행해 결과를 바로 확인할 수 있음.
1-3 스크립트 언어에 의한 특별 분석과 데이터 프레임
데이터 처리와 스크립트 언어
데이터 프레임
- 2차원 배열 형태
- 책 예시- 웹 서버 로그를 pandas를 활용하여. 데이터 프레임으로 변환하고, 일부 데이터(시간)를 가공한 후 csv 파일로 보존함.
시계열 데이터를 대화식으로 집계하기
- 책 예시 - pandas에서 시간을 인덱스로 저장하는 방식으로 시계열 데이터를 취급하여 데이터를 있는 그대로 집계함.
SQL의 결과를 데이터 프레임으로 활용하기
- sql을 사용하여 위 예시와 동일한 결과의 집계를 만들어냄. 데이터 프레임을 사용하여 실행 결과를 확인하는 점에서 데이터 프레임이 폴 넓게 이요되고 있음을 강조.
1-4 BI 도구와 모니터링
데이터의 집계 결과에 따른 적절한 조치를 취하기 위해 모니터링은 중요하며, KPI(key performance indicator) 지표에 집계된 결과를 근거로 행동 가능한지를 결정하는 방식을 데이터 기반 의사 결정이라고 한다.
변화를 파악하고 세부 사항을 이해하기
BI 도구를 통해 pandas로 만든 CSV 파일의 항목을 선택하여 그래프로 시각화할 수 있음.
Ad-hoc 분석 등에서 대화형으로 데이터를 시각화하고 싶을 때 BI 도구를 사용하면 편리함.
수작업과 자동화해야 할 것의 경계를 판별하기
- 데이터 마트를 만들어 자동화하기
열 기반 지향 분산 데이터 저장소 : Druid
전통적으로 rdbms는 행 기반 db이다. 열 기반으로 데이터를 집계하면 속도가 훨씬 빠르기 때문에 보통 rdbms에 저장된 대량의 데이터를 추출한 후, 가공할 때, 또는 집계할 때 Druid와 같은 열 기반 저장소를 사용한다.
열 기반이라는 개념이 어렵게 느껴지는데, 쉽게 생각해서 mysql에서 group by (column)과 같은 기능이 쉽게 처리 되는 storage라고 이해했다. Mysql로 집계를 한다면 행의 모든 컬럼까지 읽어드려야하는데, 열 기반으로 집계를 한다면 필요한 컬럼들만을 읽기 때문에 처리 속도가 빠른 것이다.
Dimensions
- 분석 객체의 대상
Metrics
- 집계 수치
=> 즉 열 기반으로 집계를 했을 때 집계 대상(mysql로 치면 group by) 컬럼들을 dimensions라고 할 수 있고, 집계한 결과로 나타난 수치(mysql로 치면 count(*))가 metrics에 해당한다!
'데이터 엔지니어링' 카테고리의 다른 글
Airflow: 외부 시스템과 통신 | 시스템 간 데이터 이동 (0) | 2022.09.07 |
---|---|
pandas 통해서 csv 파일로 mysql에 테이블 생성하기 (0) | 2022.08.18 |