初めてのSpark

Book description

Sparkの概要、RDDを使ったプログラミング、キー/値ペアの処理など基礎的な説明から、Sparkの高度なプログラミング、クラスタ上での本格的な利用まで解説した、Sparkの総合的な入門書です。日本語版の内容にはバージョン1.3/1.4での機能強化も取り入れ、土橋昌氏による「原書発行以降の変更点」、猿田浩輔氏による「Spark SQLについて本編の補足」、堀越保徳氏と濱口智大氏による「Spark/MapReduceの機械学習ライブラリ比較検証」を収録。全編にわたりCloudera株式会社エンジニアチームによるテクニカルレビューを実施。

Table of contents

  1. はじめに
  2. 日本語版まえがき
  3. まえがき (1/3)
  4. まえがき (2/3)
  5. まえがき (3/3)
  6. 1章 Sparkによるデータ分析への招待
    1. 1.1 Apache Sparkとは何か?
    2. 1.2 統合スタック
      1. 1.2.1 Spark Core
      2. 1.2.2 Spark SQL
      3. 1.2.3 Spark Streaming
      4. 1.2.4 MLlib
      5. 1.2.5 GraphX
      6. 1.2.6 クラスタマネージャ
    3. 1.3 Sparkを使う人とその目的
    4. 1.4 データサイエンスのタスク
      1. 1.4.1 データ処理アプリケーション
    5. 1.5 Sparkの歴史
    6. 1.6 Sparkのバージョンとリリース
    7. 1.7 Sparkのストレージ層
  7. 2章 Sparkのダウンロードと起動
    1. 2.1 Sparkのダウンロード
    2. 2.2 SparkのPythonおよびScalaシェルの紹介
    3. 2.3 Sparkの中核となっている概念
    4. 2.4 スタンドアローンのアプリケーション
    5. 2.5 SparkContextの初期化
    6. 2.6 スタンドアローンアプリケーションの構築
    7. 2.7 まとめ
  8. 3章 RDDを使ったプログラミング
    1. 3.1 RDDの基本
    2. 3.2 RDDの生成
    3. 3.3 RDDの操作
      1. 3.3.1 変換
      2. 3.3.2 アクション
      3. 3.3.3 遅延評価
    4. 3.4 Sparkへの関数の渡し方
      1. 3.4.1 Python
      2. 3.4.2 Scala
      3. 3.4.3 Java
    5. 3.5 一般的な変換とアクション
      1. 3.5.1 基本的なRDD
      2. 3.5.2 異なる型のRDDへの変換
    6. 3.6 永続化(キャッシング)
    7. 3.7 まとめ
  9. 4章 キー/値ペアの処理
    1. 4.1 ペアRDDを使う理由
    2. 4.2 ペアRDDの生成
    3. 4.3 ペアRDDの変換
      1. 4.3.1 集計
      2. 4.3.2 データのグループ化
      3. 4.3.3 結合
      4. 4.3.4 データのソート
    4. 4.4 ペアRDDで使えるアクション
    5. 4.5 データのパーティショニング(上級編)
      1. 4.5.1 RDDのパーティショナの決定
      2. 4.5.2 パーティショニングの恩恵を受ける操作
      3. 4.5.3 パーティショニングに影響する操作
      4. 4.5.4 事例:PageRank
      5. 4.5.5 カスタムのパーティショナ
    6. 4.6 まとめ
  10. 5章 データのロードとセーブ
    1. 5.1 ロードやセーブの選択肢の重要性
    2. 5.2 ファイルフォーマット
      1. 5.2.1 テキストファイル
      2. 5.2.2 JSON
      3. 5.2.3 CSVとTSV
      4. 5.2.4 SequenceFile
      5. 5.2.5 オブジェクトファイル
      6. 5.2.6 Hadoopの入出力フォーマット
      7. 5.2.7 ファイルの圧縮
    3. 5.3 ファイルシステム
      1. 5.3.1 ローカル/通常のファイルシステム
      2. 5.3.2 Amazon S3
      3. 5.3.3 HDFS
    4. 5.4 Spark SQLでの構造化データ
      1. 5.4.1 Apache Hive
      2. 5.4.2 JSON
    5. 5.5 データベース
      1. 5.5.1 Java Database Connectivity
      2. 5.5.2 Cassandra
      3. 5.5.3 HBase
      4. 5.5.4 Elasticsearch
    6. 5.6 まとめ
  11. 6章 Sparkの高度なプログラミング
    1. 6.1 イントロダクション
    2. 6.2 アキュムレータ
      1. 6.2.1 クロージャに注意
      2. 6.2.2 アキュムレータとフォールトトレランス
      3. 6.2.3 カスタムアキュムレータ
    3. 6.3 ブロードキャスト変数
      1. 6.3.1 ブロードキャストの最適化
    4. 6.4 パーティション単位での処理
    5. 6.5 外部のプログラムへのパイプ
    6. 6.6 数値のRDDの操作
    7. 6.7 まとめ
  12. 7章 クラスタでの動作
    1. 7.1 イントロダクション
    2. 7.2 Sparkのランタイムアーキテクチャ
      1. 7.2.1 ドライバ
      2. 7.2.2 エクゼキュータ
      3. 7.2.3 クラスタマネージャ
      4. 7.2.4 プログラムの起動
      5. 7.2.5 まとめ
    3. 7.3 spark-submitによるアプリケーションのデプロイ
    4. 7.4 コードの依存対象のパッケージング
      1. 7.4.1 MavenでビルドするJavaのSparkアプリケーション
      2. 7.4.2 sbtでビルドするScalaのSparkアプリケーション
      3. 7.4.3 依存性の衝突
    5. 7.5 Sparkアプリケーション内およびSparkアプリケーション間でのスケジューリング
    6. 7.6 クラスタマネージャ
      1. 7.6.1 Standaloneクラスタマネージャ
      2. 7.6.2 Hadoop YARN
      3. 7.6.3 Apache Mesos
      4. 7.6.4 Amazon EC2
    7. 7.7 使用するクラスタマネージャの選択
    8. 7.8 まとめ
  13. 8章 Sparkのチューニングとデバッグ
    1. 8.1 SparkConfによるSparkの設定
    2. 8.2 実行の構成要素:ジョブ、タスク、ステージ
    3. 8.3 情報の探し方
      1. 8.3.1 Spark Web UI
      2. 8.3.2 ドライバおよびエクゼキュータのログ
    4. 8.4 パフォーマンスに関する重要な考慮点
      1. 8.4.1 並列度
      2. 8.4.2 シリアライゼーションのフォーマット
      3. 8.4.3 メモリ管理
      4. 8.4.4 ハードウェアのプロビジョニング
    5. 8.5 まとめ
  14. 9章 Spark SQL
    1. 9.1 Spark SQLとのリンク
    2. 9.2 アプリケーション内でのSpark SQLの利用
      1. 9.2.1 Spark SQLの初期化
      2. 9.2.2 基本的なクエリの例
      3. 9.2.3 SchemaRDD
      4. 9.2.4 キャッシング
    3. 9.3 データのロードとセーブ
      1. 9.3.1 Apache Hive
      2. 9.3.2 Parquet
      3. 9.3.3 JSON
      4. 9.3.4 RDD
    4. 9.4 JDBC/ODBCサーバー
      1. 9.4.1 Beelineの利用
      2. 9.4.2 長期間存在するテーブルとクエリ
    5. 9.5 ユーザー定義関数
      1. 9.5.1 Spark SQLのUDF
      2. 9.5.2 HiveのUDF
    6. 9.6 Spark SQLのパフォーマンス
      1. 9.6.1 パフォーマンスチューニングのオプション
    7. 9.7 まとめ
  15. 10章 Spark Streaming
    1. 10.1 シンプルな例
    2. 10.2 アーキテクチャと抽象化
    3. 10.3 変換
      1. 10.3.1 ステートレスな変換
      2. 10.3.2 ステートフルな変換
    4. 10.4 出力操作
    5. 10.5 入力ソース
      1. 10.5.1 コアのソース
      2. 10.5.2 追加のソース
      3. 10.5.3 複数ソースとクラスタのサイジング
    6. 10.6 常時稼働の運用
      1. 10.6.1 チェックポイント処理
      2. 10.6.2 ドライバのフォールトトレランス
      3. 10.6.3 ワーカーのフォールトトレランス
      4. 10.6.4 レシーバのフォールトトレランス
      5. 10.6.5 処理の保証
    7. 10.7 ストリーミングのUI
    8. 10.8 パフォーマンスの検討
      1. 10.8.1 バッチとウィンドウのサイズ
      2. 10.8.2 並列度
      3. 10.8.3 ガベージコレクションとメモリ消費
    9. 10.9 まとめ
  16. 11章 MLlibを使った機械学習
    1. 11.1 概要
    2. 11.2 システム要件
    3. 11.3 機械学習の基礎
      1. 11.3.1 サンプル:スパムの分類
    4. 11.4 データ型
      1. 11.4.1 ベクトルを使った処理
      2. 11.4.2 アルゴリズム
      3. 11.4.3 特徴抽出
      4. 11.4.4 統計処理
      5. 11.4.5 分類と回帰
      6. 11.4.6 クラスタリング
      7. 11.4.7 協調フィルタリングとレコメンデーション
      8. 11.4.8 次元削減
      9. 11.4.9 モデルの評価
    5. 11.5 テクニックとパフォーマンスの検討
      1. 11.5.1 特徴の用意
      2. 11.5.2 アルゴリズムの設定
      3. 11.5.3 RDDの再利用のためのキャッシング
      4. 11.5.4 スパース性の認識
      5. 11.5.5 並列度
    6. 11.6 パイプラインAPI
    7. 11.7 まとめ
  17. 付録A 原書発行以降の変更点
    1. A.1 付録Aの内容について
    2. A.2 バージョン1.2.1の主な変更内容
      1. A.2.1 Sparkコア
      2. A.2.2 Spark SQL
      3. A.2.3 Spark Streaming
      4. A.2.4 PySpark
    3. A.3 バージョン1.2.2の主な変更内容
      1. A.3.1 Sparkコア
      2. A.3.2 PySpark
    4. A.4 バージョン1.3.0の主な変更内容
      1. A.4.1 Sparkコア
      2. A.4.2 DataFrame API
      3. A.4.3 Spark SQL
      4. A.4.4 Spark ML/MLlib
      5. A.4.5 Spark Streaming
      6. A.4.6 GraphX
    5. A.5 バージョン1.3.1の主な変更点
      1. A.5.1 Sparkコア
      2. A.5.2 Spark SQL
      3. A.5.3 Spark Streaming
      4. A.5.4 PySpark
    6. A.6 バージョン1.4.0の主な変更点
      1. A.6.1 SparkR
      2. A.6.2 Sparkコア
      3. A.6.3 DataFrame API and Spark SQL
      4. A.6.4 Spark ML/MLlib
      5. A.6.5 Spark Streaming
    7. A.7 まとめ
  18. 付録B Spark SQLについて本編の補足
    1. B.1 APIの使い方の変更
      1. B.1.1 初期化方法の変更
      2. B.1.2 データのロードとセーブの方法の変更
      3. B.1.3 UDFの登録方法の変更
    2. B.2 DataFrame
      1. B.2.1 RDDからDataFrameを生成する方法
      2. B.2.2 DataFrame API
    3. B.3 まとめ
  19. 付録C Spark/MapReduceの機械学習ライブラリ比較検証
    1. C.1 背景と目的
    2. C.2 検証の概要
    3. C.3 対象アルゴリズムの概要
      1. C.3.1 アイテムベースの協調フィルタリング
      2. C.3.2 ALSを用いた協調フィルタリング
      3. C.3.3 2つのアルゴリズムの違い
    4. C.4 比較方法
    5. C.5 Sparkのチューニング
    6. C.6 検証結果
    7. C.7 まとめ
  20. 索引 (1/2)
  21. 索引 (2/2)

Product information

  • Title: 初めてのSpark
  • Author(s): Holden Karau, Andy Konwinski, Patrick Wendell, Matei Zaharia, Sky株式会社 玉川竜司
  • Release date: August 2015
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873117348