目次
第1章 ビッグデータの基礎知識
1.1 [背景]ビッグデータの定着
- 分散システムによるデータ処理の高速化 ……ビッグデータの扱いづらさを乗り越える二大技術
 - 分散システムのビジネス利用の開拓 ……データウェアハウスとの共存
 - 自分でできる! データ分析の間口の広がり ……クラウドサービスとデータディスカバリで加速したビッグデータ活用
 - 新しい分散データ処理システムの台頭 ……Hadoopからの脱却
 - ビッグデータを活用した応用分野の広がり ……レポーティング,デジタルマーケティング,人工知能
 
1.2 ビッグデータ時代のデータ分析基盤
- [再入門]ビッグデータの技術 ……分散システムを活用してデータを加工していくしくみ
 - データウェアハウスとデータマート ……データパイプラインの基本形
 - データレイク ……あらゆるデータをそのまま貯蔵
 - データ分析基盤を段階的に発展させる ……チームと役割分担,スモールスタートと拡張
 - データを集める目的 ……「検索」「加工」「可視化」の3つの例
 - 確証的データ解析と探索的データ解析
 
1.3 [速習]スクリプト言語によるアドホック分析とデータフレーム
- データ処理とスクリプト言語 ……人気のPythonと,データフレーム
 - データフレーム,基礎の基礎 ……「配列の配列」から作成
 - Webサーバーのアクセスログの例 ……pandasのデータフレームで簡単処理
 - 時系列データを対話的に集計する ……データフレームをそのまま用いてデータ集計
 - SQLの結果をデータフレームとして活用する
 
1.4 BIツールとモニタリング
- スプレッドシートによるモニタリング ……プロジェクトの現状を把握する
 - データに基づく意思決定 ……KPIモニタリング
 - 変化を捉えて詳細を理解する ……BIツールの活用
 - 手作業と自動化すべきこととの境界を見極める
 
1.5 まとめ
第2章 ビッグデータの探索
2.1 基本のクロス集計
- トランザクションテーブル,クロステーブル,ピボットテーブル ……クロス集計の考え方
 - ルックアップテーブル ……テーブルを結合して属性を増やす
 - SQLによるテーブルの集約 ……大量データのクロス集計の事前準備
 - データ集約➡「データマート」➡可視化 ……システム構成はデータマートの大きさで決まる
 
2.2 列指向ストレージによる高速化
- データベースの遅延を小さくする
 - 列指向データベースのアプローチ ……カラムを圧縮してディスクI/Oを減らす
 - MPPデータベースのアプローチ ……並列化によってマルチコアを活用する
 
2.3 アドホック分析と可視化ツール
- Jupyter Notebookによるアドホック分析 ……ノートブックに分析過程を記録する
 - ダッシュボードツール ……定期的に集計結果を可視化する
 - BIツール ……対話的なダッシュボード
 
2.4 データマートの基本構造
- 可視化に適したデータマートを作る ……OLAP
 - テーブルを非正規化する
 - 多次元モデル ……可視化に備えてテーブルを抽象化する
 
2.5 まとめ
第3章 ビッグデータの分散処理
3.1 大規模分散処理のフレームワーク
- 構造化データと非構造化データ
 - Hadoop ……分散データ処理の共通プラットフォーム
 - Spark ……インメモリ型の高速なデータ処理
 
3.2 クエリエンジン
- データマート構築のパイプライン
 - Hiveによる構造化データの作成
 - 対話型クエリエンジンPrestoのしくみ ……Prestoで構造化データを集計する
 - データ分析のフレームワークを選択する ……MPPデータベース,Hive,Presto,Spark
 
3.3 データマートの構築
- ファクトテーブル ……時系列データを蓄積する
 - サマリーテーブル ……レコード数を削減する
 - スナップショットテーブル ……マスタの状態を記録する
 - 履歴テーブル ……マスタの変化を記録する
 - [最終ステップ]ディメンションを追加して非正規化テーブルを完成させる
 
3.4 まとめ
第4章 ビッグデータの蓄積
4.1 バルク型とストリーミング型のデータ収集
- オブジェクトストレージとデータインジェスション ……分散ストレージにデータを取り込む
 - バルク型のデータ転送 ……ETLサーバー設置の必要性
 - ストリーミング型のメッセージ配送 ……次々と送られてくる小さなデータを扱うために
 
4.2 [性能×信頼性]メッセージ配送のトレードオフ
- メッセージブローカ ……ストレージの性能問題を解決する中間層の設置
 - メッセージ配送を確実に行うのは難しい ……信頼性の問題と3つの設計方式
 - 重複排除は高コストなオペレーション
 - データインジェスションのパイプライン ……長期的なデータ分析に適したストレージ
 
4.3 時系列データの最適化
- プロセス時間とイベント時間 ……データ分析の対象はおもにイベント時間
 - プロセス時間による分割と問題点 ……極力避けたいフルスキャン
 - 時系列インデックス ……イベント時間による集計の効率化❶
 - 述語プッシュダウン ……イベント時間による集計の効率化❷
 - イベント時間による分割 ……テーブルパーティショニング,時系列テーブル
 
4.4 非構造化データの分散ストレージ
- [基本戦略]NoSQLデータベースによるデータ活用
 - 分散KVS ……ディスクへの書き込み性能を高める
 - ワイドカラムストア ……構造化データを分散して格納する
 - ドキュメントストア ……スキーマレスデータを管理する
 - 検索エンジン ……キーワード検索でデータを絞り込む
 
4.5 まとめ
第5章 ビッグデータのパイプライン
5.1 ワークフロー管理
- [基礎知識]ワークフロー管理 ……データの流れを一元管理する
 - エラーからのリカバリー方法を先に考える
 - 冪等な操作としてタスクを記述する ……同じタスクを何度実行しても同じ結果になる
 - ワークフロー全体を冪等にする
 - タスクキュー ……リソースの消費量をコントロールする
 
5.2 バッチ型のデータフロー
- MapReduceの時代は終わった ……データフローとワークフロー
 - MapReduceに代わる新しいフレームワーク ……DAGによる内部表現
 - データフローとワークフローとを組み合わせる
 - データを取り込むフロー
 - データを書き出すフロー
 - データフローとSQLとを使い分ける ……データウェアハウスのパイプラインとデータマートのパイプラン
 
5.3 ストリーミング型のデータフロー
- バッチ処理とストリーム処理とで経路を分ける
 - ストリーム処理とバッチ処理とを統合する
 - ストリーム処理の結果をバッチ処理で置き換える ……ストリーム処理の二つの問題への対処
 - アウトオブオーダーなデータ処理
 
5.4 まとめ
第6章 ビッグデータと機械学習
6.1 特徴量ストア
- 機械学習のための特徴量ストア
 - 特徴量ストアによるデータ管理
 - 特徴量ストアの実装例
 
6.2 MLOps
- 機械学習のためにデータパイプラインを構築する
 - MLOpsの全体構成 ……三段階の発展
 - MLOpsと特徴量ストア
 - Kubeflow ……機械学習のオーケストレーション
 - その他の機能 ……Metadata,Katib,Tools for Servingなど
 
6.3 まとめ
第7章 [実践]ビッグデータ分析基盤の構築
7.1 ノートブックとアドホック分析
- 学習にあたって
 - サンプルデータの内容 ……5分ごとの気温
 - 作業環境の構築 ……MultipassでUbuntu 20.04を起動する
 - PythonスクリプトによるCSVファイルの収集
 - データの内容を確認する ……pandas
 - Sparkによる分散環境を整える
 - 可視化によるデータ検証 ……Tableau Public
 
7.2 バッチ型のデータパイプライン
- Dockerによる環境構築 ……ラップトップ上での開発環境
 - オブジェクトストレージ ……MinIO
 - 構造化データの管理 ……Hiveメタストア
 - オブジェクトストレージへのデータ転送
 - ETLプロセス ……Spark
 - クエリエンジンによるデータ集計 ……Presto
 - ダッシュボードツールによる可視化 ……Metabase
 - 特徴量エンジニアリング ……SQLとSpark
 
7.3 ワークフロー管理ツールによる自動化
- Prefect ……スクリプト型のワークフロー管理
 - バッチ型のデータパイプラインを定義する
 - 本番環境におけるワークフロー管理
 - ワークフローのオーケストレーション ……ロジックと構成定義とを分離する
 - 作業環境の削除 ……multipass delete