絶え間なく入ってくる大量のストリームデータをリアルタイムに処理・分析するために必要な概念とその実現手法を紹介します。任意のクエリに対応しながら、スケーラビリティと信頼性をどう担保するのか、障害発生時にデータを復旧しやすく、汎用的で拡張性や保守性の高いシステム設計を実現するには、どのようなデータモデルとアーキテクチャが必要なのか。データ分析を行うエンジニアが備えておくべき知識と情報について、従来のアーキテクチャが持つ問題を解消するために著者が開発した「ラムダアーキテクチャ」のデータモデルに沿って解説します。
スケーラブルリアルタイムデータ分析入門
―ラムダアーキテクチャによるビッグデータ処理
Nathan Marz、James Warren 著、伊藤 真浩、木下 哲也 訳
目次
目次 まえがき 1章 ビッグデータを扱うための新しいパラダイム 1.1 本書の構成 1.2 伝統的なデータベースを使ったスケールの方法 1.3 NoSQLは万能薬ではない 1.4 第一原理 1.5 ビッグデータシステムに望まれる特性 1.6 完全増分型アーキテクチャにおける問題点 1.7 ラムダアーキテクチャ 1.8 最近の技術動向 1.9 例題アプリケーション:SuperWebAnalytics.com 1.10 まとめ Ⅰ部 バッチ層 2章 ビッグデータのためのデータモデル 2.1 データの特性 2.2 事実ベースモデルでデータを表現する 2.3 グラフスキーマ 2.4 SuperWebAnalytics.comの全データモデル 2.5 まとめ 3章 ビッグデータのためのデータモデル詳説 3.1 シリアル化フレームワークを使う理由 3.2 Apache Thrift 3.3 シリアル化フレームワークの限界 3.4 まとめ 4章 バッチ層のデータストレージ 4.1 マスターデータ集合のストレージ要件 4.2 バッチ層向けストレージソリューションを選ぶ 4.3 分散ファイルシステムの動作方法 4.4 分散ファイルシステムを使ってマスターデータ集合を格納する 4.5 垂直分割 4.6 生まれつき低レベルな分散ファイルシステム 4.7 分散ファイルシステムの上にSuperWebAnalytics.comのマスターデータ集合を格納する 4.8 まとめ 5章 バッチ層のデータストレージ詳説 5.1 Hadoop分散ファイルシステムを使用する 5.2 Pailを使ったバッチ層でのデータストレージ 5.3 SuperWebAnalytics.comのマスターデータ集合を格納する 5.4 まとめ 6章 バッチ層 6.1 例題紹介 6.2 バッチ層での計算 6.3 再計算型アルゴリズム対増分型アルゴリズム 6.4 バッチ層のスケーラビリティ 6.5 MapReduce:ビッグデータ計算のためのパラダイム 6.6 MapReduceの本質 6.7 パイプ図:バッチ計算を考えるための高レベルな方法 6.8 まとめ 7章 バッチ層詳説 7.1 わかりやすい例 7.2 データ処理ツールの落とし穴 7.3 JCascalogとは 7.4 合成 7.5 まとめ 8章 バッチ層の例:アーキテクチャとアルゴリズム 8.1 SuperWebAnalytics.comバッチ層の設計 8.2 ワークフローの概要 8.3 新しいデータの取り込み 8.4 URLの正規化 8.5 ユーザーIDの正規化 8.6 ページ閲覧の重複を取り除く 8.7 バッチビューを計算する 8.8 まとめ 9章 バッチ層の例:実装 9.1 出発点 9.2 ワークフローの準備 9.3 新しいデータの取り込み 9.4 URLの正規化 9.5 ユーザーIDの正規化 9.6 ページ閲覧の重複を取り除く 9.7 バッチビューを計算する 9.8 まとめ Ⅱ部 サービス層 10章 サービス層 10.1 サービス層の性能計測値 10.2 正規化/非正規化問題に対するサービス層の解決策 10.3 サービス層データベースの要件 10.4 SuperWebAnalytics.comのサービス層の設計 10.5 完全増分型アーキテクチャとの比較 10.6 まとめ 11章 サービス層詳説 11.1 ElephantDBの基本 11.2 SuperWebAnalytics.comのサービス層の構築 11.3 まとめ Ⅲ部 速度層 12章 実時間ビュー 12.1 実時間ビューの計算 12.2 実時間ビューの格納 12.3 増分型計算の課題 12.4 非同期更新と同期更新 12.5 実時間ビューの有効期限 12.6 まとめ 13章 実時間ビュー詳説 13.1 Cassandraのデータモデル 13.2 Cassandraの使用 13.3 まとめ 14章 キューイングとストリーム処理 14.1 キューイング 14.2 ストリーム処理 14.3 高レベルの逐次ストリーム処理 14.4 SuperWebAnalytics.comの速度層 14.5 まとめ 15章 キューイングとストリーム処理詳説 15.1 Apache Stormでのトポロジーの定義 15.2 Apache Stormクラスターとデプロイ 15.3 メッセージ処理を保証する 15.4 SuperWebAnalytics.comでの時系列に並べた重複なし訪問者数の速度層の実装 15.5 まとめ 16章 マイクロバッチストリーム処理 16.1 1回保証セマンティクスの実現 16.2 マイクロバッチストリーム処理の中心的概念 16.3 マイクロバッチ処理のためのパイプ図の拡張 16.4 SuperWebAnalytics.comの速度層の仕上げ 16.5 直帰率分析の例を見直す 16.6 まとめ 17章 マイクロバッチストリーム処理詳説 17.1 Tridentの使用 17.2 SuperWebAnalytics.comの速度層の仕上げ 17.3 完全に耐障害性を備えたインメモリマイクロバッチ処理 17.4 まとめ 18章 ラムダアーキテクチャをより深く学ぶ 18.1 データシステムの定義 18.2 バッチ層とサービス層 18.3 速度層 18.4 クエリ層 18.5 まとめ 索引