Apache Spark入門 動かして学ぶ最新並列分散処理フレームワーク


Apache Spark入門 動かして学ぶ最新並列分散処理フレームワーク (NEXT ONE)


翔泳社


著者:株式会社NTTデータ、猿田浩輔、土橋昌、吉田耕陽、佐々木徹、都築正宜
監修:下垣徹


はじめに

第1部 導入編
1 Apache Sparkとは
1.1 Apache Sparkとは?
1.1.1 Sparkの全体像
1.2 Sparkの歴史と開発コミュニティ
1.3 Sparkのユースケース
1.3.1 機械学習処理への適用
1.3.2 業務処理への適用
1.3.3 ストリーム処理への適用
1.4 Sparkの特徴
1.4.1 反復処理や連続する変換処理の高速化
1.4.2 試行錯誤に適した環境の提供
1.4.3 異なる処理を統合して利用できる環境

2 Sparkの処理モデル
2.1 Sparkの基本的なデータ構造「RDD」とは
2.1.1 RDDの構造と特徴
2.1.2 RDDの操作
2.2 Sparkの分散処理環境
2.2.1 クラスタでの処理の全体像
2.2.2 ドライバプログラム
2.2.3 タスクのスケジューリング
2.2.4 RDDの永続化

3 Sparkの導入
3.1 本書で利用するSparkの動作環境
3.1.1 マシン構成
3.1.2 Sparkのパッケージ
3.2 Sparkの環境構築(単一マシン/クラスタ共通)
3.2.1 OSの準備
3.2.2 JDKのインストール
3.2.3 Sparkのインストール
3.3 Sparkの環境構築(クラスタ環境のための追加手順)
3.3.1 HDFSとは
3.3.2 YARNとは
3.3.3 本書で構築するHDFSとYARNの構成
3.3.4 CDHのYumリポジトリの登録
3.3.5 マスタノードの構築
3.3.6 ワーカノードの構築
3.3.7 クライアントの構築
3.3.8 HDFSとYARNの環境設定と動作確認
3.3.9 クラスタ上でのSparkの動作確認

4 Sparkアプリケーションの開発と実行
4.1 Sprakが提供するライブラリ
4.2 Sparkアプリケーションの開発環境の構築
4.2.1 sbtのインストール
4.3 sbtを用いたSparkアプリケーションのビルド
4.3.1 プロジェクトのディレクトリ構造
4.3.2 sbtのプロジェクトファイル
4.3.3 アプリケーションのビルド
4.4 Sparkアプリケーションの実行
4.4.1 spark-submitコマンドのオプション
4.5 インタラクティブな処理の実行
4.6 アプリケーションの強制終了

第2部 実践編
5 基本的なAPIを用いたプログラミング
5.1 基本APIでできること
5.1.1 RDDの生成と操作
5.1.2 RDDの永続化
5.1.3 共有変数
5.2 はじめてのSparkアプリケーション
5.2.1 Spark Shellによる処理の組み立て
5.2.2 テキストファイルからRDDを生成する
5.2.3 RDDの要素をフィルタリングする
5.2.4 RDDの要素をキーごとに集約処理する
5.2.5 ネストしたコレクションをフラットにする
5.2.6 ドライバプログラムを組み立てる
5.3 データを並び替えて処理する
5.3.1 RDDの要素をソートする
5.3.2 RDDの先頭から要素を取り出す
5.4 複数のデータを統合して処理する
5.4.1 CSVファイルからのRDDを生成する
5.4.2 RDD同士をキーで統合する
5.4.3 ブロードキャスト変数
5.4.4 RDDの内容をファイルシステムに保存する
5.5 複雑な処理を効率化する
5.5.1 RDDの永続化
5.5.2 RDDの要素のカウントや集計
5.5.3 平均値計算の工夫
5.5.4 アキュムレータ

6 構造化データセットを処理する-Spark SQL-
6.1 Spark SQLとは
6.1.1 Spark SQLでできること
6.1.2 Spark SQLが提供する機能や仕組み
6.2 Spark SQLによるデータ処理の記述方法
6.2.1 DataFrameを操作してデータ処理を記述する
6.2.2 テーブル形式のデータセットを利用する
6.3 Spark SQLを使うための準備
6.3.1 hive-site.xmlの配置
6.3.2 サンプルデータの配置
6.4 DataFrameを操作してデータ処理を記述する
6.4.1 Spark SQLの初期化処理
6.4.2 RDDとDataFrameを相互に利用する
6.4.3 DataFrameにクエリを発行する
6.4.4 DataFrame APIでDataFrameを操作する
6.4.5 UDFを利用する
6.4.6 さまざまな構造化データセットを扱う
6.5 HiveやSpark SQLのテーブルに対する処理の記述
6.5.1 テーブルにアドホックにクエリを発行する
6.5.2 JDBC経由でSpark SQLを利用する
6.5.3 構造化データセットをテーブルとして扱う
6.6 Spark SQLのチューニング
6.6.1 テーブルのキャッシュ
6.6.2 パーティション数
6.6.3 ブロードキャスト統合

7章 ストリームデータを処理する-Spark Streaming-
7.1 ストリーム処理とは
7.1.1 ストリームデータとは?
7.1.2 ストリーム処理の概要
7.1.3 ストリーム処理のメリット
7.1.4 ストリーム処理の実現は大変?
7.2 ユースケース
7.2.1 センサーデータの統計処理の例
7.2.2 コンテンツ配信の最適化の例
7.2.3 ユーザーの購買活動から傾向を分析する例
7.2.4 本書で扱う例について
7.3 Spark Streamingとは
7.3.1 コンセプトと動作原理
7.3.2 Sparkのバッチ処理を元にするメリット
7.4 Spark Streamingの機能
7.4.1 ストリームデータの入力
7.4.2 DStreamの変換
7.4.3 DStreamの出力
7.5 動かしてみよう
7.5.1 はじめてのSpark Streaming
7.5.2 アプリケーションの作成
7.6 クラスタにアプリケーションをデプロイする
7.7 センサーデータのストリーム処理に挑戦
7.7.1 シナリオの説明
7.7.2 Spark Shellを使ってデータを読み込む
7.7.3 Spark SHellを使って加速度の平均を算出
7.7.4 ウィンドウオペレーションで分散を求める
7.7.5 アプリケーション化して実行してみる
7.8 Apache Kafkaとの連携
7.8.1 前提
7.8.2 Spark Shellによる動作確認
7.8.3 Kafka連携方式の種類について
7.9 サンプルプロジェクトでは扱わなかった事項
7.9.1 ドライバの障害からの復旧時の工夫
7.9.2 アプリケーションの更新方式
7.9.3 出力先と連携して実現する処理の保証レベル

8 機械学習を行う-MLlib-
8.1 MLlibの概要
8.1.1 統計処理/機械学習とは
8.1.2 MLLibが対象とする処理
8.2 MLLibの基本と提供アルゴリズム
8.2.1 基本が要素
8.2.2 MLlibで利用可能な機械学習アルゴリズム
8.2.3 PMMLエクスポート機能
8.3 はじめてのMLlib
8.3.1 k-means概要
8.3.2 Spark Shellを用いた動作確認
8.4 Word2Vecによる日本語のベクトル
8.4.1 文書からの単語抽出(形態素解析)
8.4.2 処理対象データと実行環境
8.4.3 Spark ShellからWord2Vecを実行
8.5 応用編:回帰による売上分析
8.5.1 利用するデータについて
8.5.2 データの前処理
8.5.3 アルゴリズムの適用
8.5.4 予測モデルの評価
8.5.5 予測モデルの保守
8.6 spark.mlパッケージのML Pipeline
8.6.1 ML Pipelineのコンセプト
8.6.2 ML Pipelineの主要なコンポーネント
8.6.3 ML Pipelineによるサンプルプログラム
8.6.4 精度のチューニング

Appendix
付録A GraphXによるグラフ処理
付録B SparkRを使ってみる
付録C 機械学習とストリーム処理の連携
付録D Web UIの活用

索引

書籍目次

Posted by shi-n