目次
第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