初めての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

You might also like

book

Python機械学習クックブック

by Chris Albon, 中田 秀基

Pythonによる機械学習を進める上で、頻繁に遭遇すると思われる200超の問題とその解決策を紹介。データ構造(ベクトル、行列、配列)、数値データ、カテゴリデータ、テキスト、画像、日時データの取り扱いといったデータ分析の基本から、特徴量抽出、次元削減、モデルの評価と選択、線形回帰、決定木、ランダムフォレスト、k-最近傍法、SVM、ナイーブベイズ、クラスタリング、ニューラルネットワーク、訓練済みモデルのセーブとロードなど、幅広い内容をカバー。巻末に日本語版付録「日本語テキストの取り扱い」を収録。「やりたいこと」「困っていること」に答えてくれる一冊です。

book

ハイパフォーマンスPython

by Micha Gorelick, Ian Ozsvald, 相川 愛三

Pythonの高速化技法について一歩踏み込んだプロユースの解説書。ボトルネックの測定方法から、最適なデータ構造の使い分け、CythonやPyPyなどのコンパイラの比較、numpyなどのパッケージの使い方、マルチコアCPUの活用法、メモリ効率を劇的に改善するトライ構造や近似計算まで、シンプルな実例プログラムを用いながらわかりやすく説明します。高性能なプログラムの書き方だけでなく、高性能なシステムの作り方を総合的に学ぶことができるPythonエキスパート必携の一冊です。

book

機械学習による実用アプリケーション構築 ―事例を通じて学ぶ、設計から本番稼働までのプロセス

by Emmanuel Ameisen, 菊池 彰

機械学習は翻訳、推薦システム、異常および不正検出など、さまざまなアプリケーションで利用されています。しかし機械学習はモデルの学習や評価など、これまでのアプリケーションにはない処理が必要となるだけでなく、正常に動作しているかを単純なテストだけでは検証できないなど、特別な配慮が必要となります。本書は機械学習を利用するアプリケーションを設計、構築、デプロイするために注意すべき点をまとめました。繰り返しによりデータやモデルを漸進的に改善する方法、モデル性能の監視やモデルのデバッグを行う方法など、アプリケーションを構築、運用する上で、その品質を左右する一連のプロセスを詳しく解説します。

book

グラフデータベース ―Neo4jによるグラフデータモデルとグラフデータベース入門

by Ian Robinson, Jim Webber, Emil Eifrem, 佐藤 直生, 木下 哲也

SNSの普及や相互依存性の高いデータの増加に伴い、従来型のリレーショナルデータモデルの処理効率の問題を解決するために登場し、近年使われるようになったのが、「グラフデータモデル」です。本書ではこのグラフデータモデルと、このモデルを使ったグラフデータベースについて、グラフデータベースの代表的な存在であるNeo4jを使って解説。Neo4jの中心的な開発者たちによる執筆のため信頼性が高く、また、実例も随所に織り込まれ実用性も高いものとなっています。内部アーキテクチャについてもていねいに書かれており、なぜリレーショナルデータモデルよりもグラフデータモデルの方がグラフ処理に適しているのかを理解できるでしょう。