TECH PLAY

[増補改訂]ビッグデータを支える技術 --ラップトップ1台で学ぶデータ基盤のしくみ

3,520円 (税込)

楽天

[増補改訂]ビッグデータを支える技術 --ラップトップ1台で学ぶデータ基盤のしくみ

書籍情報

発売日:

著者/編集:西田 圭介

出版社:技術評論社

発行形態:単行本

書籍説明

内容紹介

どのようにデータ処理をシステム化するか。スモールデータで押さえる基本から実践に効くワークフローのコンテナ化まで実例でわかる現代的なデータ基盤。

目次

■第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 # 7.4 まとめ

著者情報

西田 圭介

西田 圭介 Keisuke Nishidaフリーランスのソフトウェアエンジニア。複数のスタートアップで開発やデータ分析などを担当した。現在は趣味の開発にも勤しみつつ、執筆活動を続けている。著書に『Googleを支える技術 ……巨大システムの内側の世界』(技術評論社、2008)がある。

西田, 圭介, 1976-