CHAPTER 1 빅데이터의 기초 지식
1-1 [배경] 빅데이터의 정착
분산 시스템에 의한 데이터 처리의 고속화 ― 빅데이터의 취급하기 어려운 점을 극복한 두 가지 대표 기술
분산 시스템의 비즈니스 이용 개척 ― 데이터 웨어하우스와의 공존
직접 할 수 있는 데이터 분석 폭 확대 ― 클라우드 서비스와 데이터 디스커버리로 가속하는 빅데이터의 활용
1-2 빅데이터 시대의 데이터 분석 기반
[재입문] 빅데이터의 기술 ― 분산 시스템을 활용해서 데이터를 가공해 나가는 구조
데이터 웨어하우스와 데이터 마트 ― 데이터 파이프라인 기본형
데이터 레이크 ― 데이터를 그대로 축적
데이터 분석 기반을 단계적으로 발전시키기 ― 팀과 역할 분담, 스몰 스타트와 확장
데이터를 수집하는 목적 ― ‘검색’, ‘가공’, ‘시각화’의 세 가지 예
확증적 데이터 분석과 탐색적 데이터 분석
1-3 [속성 학습] 스크립트 언어에 의한 특별 분석과 데이터 프레임
데이터 처리와 스크립트 언어 ― 인기 언어인 파이썬과 데이터 프레임
데이터 프레임, 기초 중의 기초 ― ‘배열 안의 배열’로부터 작성
웹 서버의 액세스 로그의 예 ― pandas의 데이터 프레임으로 간단히 처리
시계열 데이터를 대화식으로 집계하기 ― 데이터 프레임을 그대로 사용한 데이터 집계
SQL의 결과를 데이터 프레임으로 활용하기
1-4 BI 도구와 모니터링
스프레드시트에 의한 모니터링 ― 프로젝트의 현재 상황 파악하기
데이터에 근거한 의사 결정 ― KPI 모니터링
변화를 파악하고 세부 사항을 이해하기 ― BI 도구의 활용
수작업과 자동화해야 할 것의 경계를 판별하기
1-5 요약
CHAPTER 2 빅데이터의 탐색
2-1 크로스 집계의 기본
트랜잭션 테이블, 크로스 테이블, 피벗 테이블 ― ‘크로스 집계’의 개념
룩업 테이블 ― 테이블을 결합하여 속성 늘리기
SQL에 의한 테이블의 집계 ― 대량 데이터의 크로스 집계 사전 준비
데이터 집계 ? 데이터 마트 ? 시각화 ― 시스템 구성은 데이터 마트의 크기에 따라 결정된다
2-2 열 지향 스토리지에 의한 고속화
데이터베이스의 지연을 줄이기
열 지향 데이터베이스 접근 ― 칼럼을 압축하여 디스크 I/O를 줄이기
MPP 데이터베이스의 접근 방식 ― 병렬화에 의해 멀티 코어 활용하기
2-3 애드 혹 분석과 시각화 도구
Jupyter Notebook에 의한 애드 혹 분석 ― 노트북에 분석 과정 기록하기
대시보드 도구 ― 정기적으로 집계 결과를 시각화하기
BI 도구 ― 대화적인 대시보드
2-4 데이터 마트의 기본 구조
시각화에 적합한 데이터 마트 만들기 ― OLAP
테이블을 비정규화하기
다차원 모델 시각화에 대비하여 테이블을 추상화하기
2-5 요약
CHAPTER 3 빅데이터의 분산 처리
3-1 대규모 분산 처리의 프레임워크
구조화 데이터와 비구조화 데이터
Hadoop ― 분산 데이터 처리의 공통 플랫폼
Spark ― 인 메모리 형의 고속 데이터 처리
3-2 쿼리 엔진
데이터 마트 구축의 파이프라인
Hive에 의한 구조화 데이터 작성
대화형 쿼리 엔진 Presto의 구조 ― Presto로 구조화 데이터 집계하기
데이터 분석의 프레임워크 선택하기 ― MPP 데이터베이스, Hive, Presto, Spark
3-3 데이터 마트의 구축
팩트 테이블 ― 시계열 데이터 축적하기
집계 테이블 ― 레코드 수 줄이기
스냅샷 테이블 ― 마스터의 상태를 기록하기
이력 테이블 ― 마스터 변화 기록하기
[마지막 단계] 디멘전을 추가하여 비정규화 테이블 완성시키기
3-4 요약
CHAPTER 4 빅데이터의 축적
4-1 벌크 형과 스트리밍 형의 데이터 수집
객체 스토리지와 데이터 수집 ― 분산 스토리지에 데이터 읽어들이기
벌크 형의 데이터 전송 ― ETL 서버의 설치 필요성
스트리밍 형의 데이터 전송 ― 계속해서 전송되어 오는 작은 데이터를 취급하기 위한 데이터 전송
4-2 [성능×신뢰성] 메시지 배송의 트레이드 오프
메시지 브로커 ― 스토리지의 성능 문제를 해결하는 중간층의 설치
메시지 배송을 확실하게 실시하는 것은 어렵다 ― 신뢰성 문제와 세 가지 설계 방식
중복 제거는 높은 비용의 오퍼레이션
데이터 수집의 파이프라인 ― 장기적인 데이터 분석에 적합한 스토리지
4-3 시계열 데이터의 최적화
프로세스 시간와 이벤트 시간 ― 데이터 분석의 대상은 주로 이벤트 시간
프로세스 시간에 의한 분할과 문제점 ― 최대한 피하고 싶은 풀 스캔
시계열 인덱스 ― 이벤트 시간에 의한 집계의 효율화 ①
조건절 푸쉬다운 ― 이벤트 시간에 의한 집계의 효율화 ②
이벤트 시간에 의한 분할 ― 테이블 파티셔닝, 시계열 테이블
4-4 비구조화 데이터의 분산 스토리지
[기본 전략] NoSQL 데이터베이스에 의한 데이터 활용
분산 KVS ― 디스크로의 쓰기 성능을 높이기
와이드 칼럼 스토어 ― 구조화 데이터를 분석해서 저장하기
도큐먼트 스토어 ― 스키마리스 데이터 관리하기
검색 엔진 ― 키워드 검색으로 데이터 검색
4-5 정리
CHAPTER 5 빅데이터의 파이프라인
5-1 워크플로 관리
[기초 지식] 워크플로 관리 ― 데이터의 흐름을 일원 관리하기
오류로부터의 복구 방법 먼저 생각하기
멱등한 조작으로 태스크를 기술하기 ― 동일 태스크를 여러 번 실행해도 동일한 결과가 된다
워크플로 전체를 멱등으로 하기
태스크 큐 ― 자원의 소비량 컨트롤하기
5-2 배치 형의 데이터 플로우
MapReduce의 시대는 끝났다 ― 데이터 플로우와 워크플로
MapReduce를 대신할 새로운 프레임워크 ― DAG에 의한 내부 표현
데이터 플로우와 워크플로를 조합하기
데이터 플로우와 SQL을 나누어 사용하기 ― 데이터 웨어하우스의 파이프라인과 데이터 마트의 파이프라인
5-3 스트리밍 형의 데이터 플로우
배치 처리와 스트림 처리로 경로 나누기
배치 처리와 스트림 처리 통합하기
스트림 처리의 결과를 배치 처리로 치환하기 ― 스트림 처리의 두 가지 문제에 대한 대처
아웃 오브 오더의 데이터 처리
5-4 정리
CHAPTER 6 빅데이터 분석 기반의 구축
6-1 스키마리스 데이터의 애드 혹 분석
스키마리스 데이터 수집하기
대화식 실행 환경의 준비
Spark에 의한 분산 환경 ― 데이터양이 늘어도 대응 가능하게 하기
데이터를 집계해서 데이터 마트 구축하기
BI 도구로 데이터 시각화하기
6-2 Hadoop에 의한 데이터 파이프라인
일일 배치 처리를 태스크화하기
[태스크 1] Embulk에 의한 데이터 추출
[태스크 2] Hive에 의한 데이터 구조화
[태스크 3] Presto에 의한 데이터 집계
6-3 워크플로 관리 도구에 의한 자동화
Airflow ― 스크립트 형의 워크플로 관리
워크플로를 터미널로부터 실행하기
스케줄러를 기동하여 DAG를 정기 실행하기
태스크가 소비하는 자원 제어하기
Hadoop의 데이터 파이프라인을 실행하기
6-4 클라우드 서비스에 의한 데이터 파이프라인
데이터 분석과 클라우드 서비스의 관계
아마존 웹 서비스
구글 클라우드 플랫폼
트레주어 데이터
6-5 정리