書籍概要

詳解 Apache Spark

著者
発売日
更新日

概要

Apach Sparkはより高速にビッグデータを処理するための分散処理フレームワークです。 SQLインターフェースや機械学習などの機能が標準で組み込まれ,バッチ処理だけでなくストリーミング処理や対話的な処理にも対応できるため,さまざまなシーンのデータ分析を強力にサポートします。

本書では,Sparkの分散処理の基礎であるRDDのしくみ,Sparkを構成する各コンポーネントの機能を理解するところからはじめます。 さらにSparkクラスタの構築と運用,構造化データを処理するためのDataFrame APIとSpark SQL,ストリーミング処理のためのSpark Streaming,機械学習ライブラリMLlib,グラフ処理のためのGraphXの各コンポーネントの実践的な利用方法を基礎から徹底的に解説します。

また基本機能の解説だけではなく,多くの実践的な利用例を通してSparkを理解し,アプリケーション作成ができることを目指す構成となっています。「5章 DataFrame APIとSpark SQL」では構造化データを分析するためのインタフェースを利用し,実際に公開されているオープンデータの分析を通してDataFrame APIやSpark SQLの使い方が学べます。「6章 Spark Streaming」ではSparkのストリーミング処理によるアクセスログの集計処理やTwitterのデータ抽出処理の例を通して,Spark Streamingのアプリケーション作成について学べます。「7章 MLlib」ではSparkの機械学習ライブラリによる好みの映画のレコメンドや住宅価格の予測やスパムメッセージの検出する方法を学べます。「8章 GraphX」ではSparkのグラフ処理ライブラリによるユーザの行動ログのグラフ化やアソシエーション・ルールによるアイテムレコメンドの例を通して,GraphXアプリケーションの実装方法が学べます。 SparkはScala,Java,Python,Rのプログラミングインタフェースを提供していますが,本書ではScalaで解説をします。

こんな方におすすめ

  • データ分析者,データサイエンティスト,インフラエンジニア

目次

第1章 Sparkの基礎

  • 1.1 Apache Sparkとは?
    • 1.1.1 SparkとMapReduce
    • 1.1.2 Sparkの実行環境
    • 1.1.3 Sparkの歴史
  • 1.2 Sparkのテクノロジースタック
    • 1.2.1 Spark Core
    • 1.2.2 Spark SQL
    • 1.2.3 Spark Streaming
    • 1.2.4 MLlib
    • 1.2.5 GraphX
  • 1.3 Sparkの利用者とそのメリット
    • 1.3.1 データサイエンティスト
    • 1.3.2 データエンジニア
    • 1.3.3 アプリケーションエンジニア

第2章 Sparkの導入

  • 2.1 実行環境の構築
    • 2.1.1 Sparkのダウンロードと展開
    • 2.1.2 主要なファイルやディレクトリの説明
  • 2.2 インタラクティブシェルの実行
  • 2.3 サンプルプログラム1:WordCount
  • 2.4 サンプルプログラム2:Filtering
  • 2.5 Sparkが動作する裏側
  • 2.6 スタンドアロンでのアプリケーションの実行
    • 2.6.1 プロジェクト構成
    • 2.6.2 サンプルアプリケーションのビルドと実行
    • 2.6.3 クラスの実行
  • 2.7 まとめ

第3章 RDD

  • 3.1 RDDの基本と構造
    • 3.1.1 分散コレクション
    • 3.1.2 イミュータブルな性質
  • 3.2 RDDの操作(基本)
    • 3.2.1 RDDの作成
    • 3.2.2 変換とアクション
    • 3.2.3 シャッフル
    • 3.2.4 遅延評価
    • 3.2.5 永続化
  • 3.3 DAGとRDDの関係
    • 3.3.1 DAGの可視化
  • 3.4 変換
    • 3.4.1 基本の変換
    • 3.4.2 RDDを引数にとる変換
  • 3.5 アクション
    • 3.5.1 基本のアクション
    • 3.5.2 集約のアクション
    • 3.5.3 算術演算のアクション
  • 3.6 RDDの操作(応用)
    • 3.6.1 ペアRDD(キー・バリュー形式のRDD)の操作
    • 3.6.2 RDDの結合
    • 3.6.3 RDDの永続化
    • 3.6.4 共有変数
  • 3.7 パーティション
    • 3.7.1 パーティション数の調整
    • 3.7.2 パーティショナの設定
    • 3.7.3 カスタムパーティショナ
  • 3.8 データのロードとセーブ
    • 3.8.1 データのロード
    • 3.8.2 データのセーブ
  • 3.9 まとめ

第4章 クラスタ構築と運用

  • 4.1 Sparkのアーキテクチャ
    • 4.1.1 Sparkのコンポーネント
    • 4.1.2 Sparkアプリケーション実行のしくみ
    • 4.1.3 SparkとHadoop
  • 4.2 Sparkクラスタの構築とアプリケーションのデプロイ
    • 4.2.1 Sparkの入手
    • 4.2.2 ローカルモード
    • 4.2.3 Spark Standaloneクラスタマネージャでのクラスタ構築
    • 4.2.4 Hadoop YARNによるクラスタ構築
    • 4.2.5 Apache Mesosによるクラスタ構築
    • 4.2.6 Amazon EC2上でのクラスタ構築
  • 4.3 Sparkアプリケーションの開発とデプロイ
    • 4.3.1 開発
    • 4.3.2 パッケージング
    • 4.3.3 デプロイ
  • 4.4 Sparkの運用
    • 4.4.1 ジョブのスケジューリング
    • 4.4.2 チューニング
    • 4.4.3 モニタリング
    • 4.4.4 Sparkの設定
    • 4.4.5 ハードウェア構成の選択
  • 4.5 まとめ

第5章 DataFrameとSpark SQL

  • 5.1 DataFrame APIとSpark SQL
    • 5.1.1 サポートしているデータソースとフォーマット
    • 5.1.2 DataFrameやSpark SQLで利用できるデータ型
    • 5.1.3 DataFrameのメリット
  • 5.2 データの準備
    • 5.2.1 データのダウンロード
    • 5.2.2 データの説明
  • 5.3 DataFrame APIを利用したデータ処理
    • 5.3.1 SQLContextの生成
    • 5.3.2 DataFrameの生成
    • 5.3.3 DataFrameの基本操作
    • 5.3.4 DataFrameの欠損値の扱い方
    • 5.3.5 DataFrameの書き込みと読み込み
    • 5.3.6 SQLクエリでDataFrameを操作
  • 5.4 パフォーマンスチューニング
    • 5.4.1 DataFrameのキャッシュ
    • 5.4.2 実行計画の確認
    • 5.4.3 パーティション数
  • 5.5 外部システムとの連携
    • 5.5.1 Apache Hiveとの連携
    • 5.5.2 JDBCによる連携
  • 5.6 Dataset API
    • 5.6.1 Dataset APIとは
    • 5.6.2 Datasetの生成
    • 5.6.3 DataFrameやRDDへの変換
    • 5.6.4 Datasetの基本操作
  • 5.7 DataFrame APIを利用した BAY AREA BikeShare の分析
    • 5.7.1 データクレンジング
    • 5.7.2 全体の利用状況の分析
    • 5.7.3 サンフランシスコ市内の利用状況の分析
    • 5.7.4 Googleマップ上に可視化
  • 5.8 まとめ

第6章 Spark Streaming

  • 6.1 Spark Streamingの特徴
    • 6.1.1 Spark Streamingのストリームデータ処理
    • 6.1.2 Spark Streamingのデータ構造【DstreamとRDDs 】
    • 6.1.3 Spark StreamingのCheckPointと耐障害性
    • 6.1.4 DStreamのStatefulな変換処理
    • 6.1.5 DStreamのWindow
    • 6.1.6 Spark Streamingの入力
  • 6.2 Spark Streamingの実行
    • 6.2.1 Spark Streamingのインタラクティブシェルでの実行
  • 6.3 Streamingアプリケーションの作成
    • 6.3.1 ディレクトリの作成
    • 6.3.2 ビルド
    • 6.3.3 Spark Streamingアプリケーションの終了
    • 6.3.4 Spark Streamingアプリケーションの耐障害性
  • 6.4 Spark Streamingの入力操作
    • 6.4.1 Kafka
    • 6.4.2 Twitter
  • 6.5 DStreamの変換操作
    • 6.5.1 DStreamの変換
    • 6.5.2 DStreamの結合
    • 6.5.3 DStreamのアクション
    • 6.5.4 DStreamのWindow操作
  • 6.6 DStreamの出力操作
  • 6.7 Spark Streamingのconfiguration
    • 6.7.1 Streamingで設定できる主要なconfオプション
  • 6.8 Spark Streamingの例
    • 6.8.1 Streamingを使ったアクセス集計処理の作成
    • 6.8.2 Twitterからの抽出・集計処理
  • 6.9 パフォーマンスチューニング
    • 6.9.1 Streamingで設定できる主要なコマンドオプション
    • 6.9.2 タスク数の制御
  • 6.10 まとめ

第7章 MLlib

  • 7.1 機械学習の基礎知識
    • 7.1.1 機械学習と身近での活用例
    • 7.1.2 機械学習の利用プロセスと特徴抽出
    • 7.1.3 教師なし学習
    • 7.1.4 教師あり学習
    • 7.1.5 予測モデルの評価
    • 7.1.6 過学習と汎化能力・正則化
    • 7.1.7 線形分離可能
  • 7.2 MLlibでの機械学習
    • 7.2.1 2つのAPIセット
    • 7.2.2 ML PipelineのAPI構成
    • 7.2.3 ベクトルと行列の表現
    • 7.2.4 提供している機械学習アルゴリズム
    • 7.2.5 特徴の抽出・変換・選択
    • 7.2.6 交差検証
    • 7.2.7 評価メトリクス
    • 7.2.8 学習済みモデルの永続化とエクスポート
  • 7.3 MLlibの利用例
    • 7.3.1 スパムメッセージの検出
    • 7.3.2 きのこの可食・有毒の識別
    • 7.3.3 住宅価格の予測
    • 7.3.4 好みの映画のレコメンド
  • 7.4 まとめ

第8章 GraphX

  • 8.1 GraphXの特徴
    • 8.1.1 GraphXの利点
  • 8.2 GraphXのデータ構造
    • 8.2.1 グラフの作成
    • 8.2.2 グラフの確認
    • 8.2.3 グラフの操作
  • 8.3 グラフアルゴリズム
    • 8.3.1 Graph Generators
    • 8.3.2 Triangle Counting
    • 8.3.3 PageRank
    • 8.3.4 Pregel API
  • 8.4 GraphXによるレコメンデーションシステムの事例
    • 8.4.1 ユーザの行動ログをグラフ化
    • 8.4.2 グラフのスケールフリー性を考慮した購入ログの生成
    • 8.4.3 アソシエーション・ルールによるアイテムレコメンドの実装例
  • 8.5 チューニング
    • 8.5.1 VertexRDD,EdgeRDDの永続化
    • 8.5.2 パーティショナの指定
    • 8.5.3 データの前処理
  • 8.6 まとめ

Appendix YARN

  • A.1 YARNのアーキテクチャ
    • A.1.1 ResourceManager
    • A.1.2 NodeManager
  • A.2 YARNの運用
    • A.2.1 YARNにおける障害や例外ケース
    • A.2.2 ResourceManager HA
  • A.3 YARNの設定とチューニング
  • A.4 Node Labeling
  • A.5 まとめ
  • 索引
  • 参考資料

サポート

現在サポート情報はありません。

商品一覧