Hadoop

[cover photo]
TOPICS
Database
発行年月日
PRINT LENGTH
568
ISBN
978-4-87311-439-2
原書
Hadoop: The Definitive Guide, First Edition
FORMAT
Print
5,060円
この商品は品切れ再入荷未定です

本書は、Hadoopの基礎から応用までを包括的に解説する書籍です。はじめに、Hadoopの分散ファイルシステムHDFSやI/Oの効率化の仕組みなど、Hadoopの基礎を説明し、なかでもMapReduceについて詳しく解説します。MapReduceのアプリケーションを開発するために必要なステップを一通り紹介し、さらにユーザの目から見てMapReduceがどう実装されるのかを詳述します。後半ではHadoop管理者のために、HDFSとMapReduceを実行するためのHadoopクラスタの立ち上げと管理の方法を紹介。さらにPig、HBase、ZooKeeperについて述べ、Apache Hadoopコミュニティメンバーから寄せられた、FacebookやLast.fmなどの大規模なケーススタディ集を収録しています。信頼あるHadoopコミッターが執筆した本書は、Hadoopに関心あるすべての人に必携の一冊です。

目次

序文
訳者まえがき
はじめに
1章 Hadoop事始め
    1.1 データ!
    1.2 データの保管と分析
    1.3 他のシステムとの比較
        1.3.1 RDBMS
        1.3.2 グリッドコンピューティング
        1.3.3 ボランティアコンピューティング
    1.4 Hadoopの歴史
    1.5 Apache Hadoopプロジェクト
2章 MapReduce
    2.1 気象情報データセット
        2.1.1 データフォーマット
    2.2 Unixのツールによるデータ分析
    2.3 Hadoopによるデータの分析
        2.3.1 mapとreduce
        2.3.2 Java MapReduce
    2.4 スケールアウト
        2.4.1 データフロー
        2.4.2 集約関数
        2.4.3 分散MapReduceジョブの実行
    2.5 Hadoopストリーミング
        2.5.1 Ruby
        2.5.2 Python
    2.6 Hadoop Pipes
        2.6.1 コンパイルと実行
3章 Hadoop分散ファイルシステム
    3.1 HDFSの設計
    3.2 HDFSに関する概念
        3.2.1 ブロック
        3.2.2 ネームノードとデータノード
    3.3 コマンドラインインターフェース
        3.3.1 基本的なファイルシステムの操作
    3.4 Hadoopのファイルシステム群
        3.4.1 インターフェース
    3.5 Javaインターフェース
        3.5.1 Hadoop URLからのデータの読み出し
        3.5.2 FileSystem APIを使ったデータの読み出し
        3.5.3 データの書き込み
        3.5.4 ディレクトリ
        3.5.5 ファイルシステムへの問い合わせ
        3.5.6 データの削除
    3.6 データフロー
        3.6.1 ファイル読み込みの解剖学
        3.6.2 ファイル書き込みの解剖学
        3.6.3 一貫性モデル
    3.7 distcpによる並列コピー
        3.7.1 HDFSクラスタのバランス調整
    3.8 Hadoopアーカイブ
        3.8.1 Hadoopアーカイブの使用
        3.8.2 制限事項
4章 HadoopのI/O
    4.1 データの整合性
        4.1.1 HDFSにおけるデータの整合性
        4.1.2 LocalFileSystem
        4.1.3 ChecksumFileSystem
    4.2 圧縮
        4.2.1 コーデック
        4.2.2 圧縮と入力スプリット
        4.2.3 MapReduceにおける圧縮の利用
    4.3 シリアライゼーション
        4.3.1 Writableインターフェース
        4.3.2 Writableクラス
        4.3.3 カスタムWritableの実装
        4.3.4 シリアライゼーションフレームワーク
    4.4 ファイルベースのデータ構造
        4.4.1 SequenceFile
        4.4.2 MapFile
5章 MapReduceアプリケーションの開発
    5.1 設定API
        5.1.1 リソースの集約
        5.1.2 変数の展開
    5.2 開発環境の設定
        5.2.1 設定の管理
        5.2.2 GenericOptionsParser、Tool、ToolRunner
    5.3 ユニットテストの作成
        5.3.1 mapper
        5.3.2 reducer
    5.4 テストデータを使ったローカルでの実行
        5.4.1 ローカルJobRunnerでのジョブの実行
        5.4.2 ドライバのテスト
    5.5 クラスタでの実行
        5.5.1 パッケージ化
        5.5.2 ジョブの起動
        5.5.3 MapReduce Web UI
        5.5.4 結果の取得
        5.5.5 ジョブのデバッグ
        5.5.6 リモートデバッガの利用
    5.6 ジョブのチューニング
        5.6.1 タスクのプロファイリング
    5.7 MapReduceのワークフロー
        5.7.1 MapReduceジョブへの問題の分割
        5.7.2 依存ジョブの実行
6章 MapReduceの動作
    6.1 MapReduceジョブの実行の内幕
        6.1.1 ジョブの投入
        6.1.2 ジョブの初期化
        6.1.3 タスクの割り当て
        6.1.4 タスクの実行
        6.1.5 進行状況とステータスの更新
        6.1.6 ジョブの完了
    6.2 障害
        6.2.1 タスクの障害
        6.2.2 tasktrackerの障害
        6.2.3 jobtrackerの障害
    6.3 ジョブのスケジューリング
        6.3.1 フェアスケジューラ
    6.4 シャッフルとソート
        6.4.1 map側
        6.4.2 reduce側
        6.4.3 設定のチューニング
    6.5 タスクの実行
        6.5.1 投機的実行
        6.5.2 タスクJVMの再利用
        6.5.3 不良レコードのスキップ
        6.5.4 タスクの実行環境
7章 MapReduceの型とフォーマット
    7.1 MapReduceの型
        7.1.1 デフォルトのMapReduceジョブ
    7.2 入力フォーマット
        7.2.1 入力スプリットとレコード
        7.2.2 テキスト入力
        7.2.3 バイナリの入力
        7.2.4 複数の入力
        7.2.5 データベースからの入力(と出力)
    7.3 出力フォーマット
        7.3.1 テキスト出力
        7.3.2 バイナリ出力
        7.3.3 複数の出力
        7.3.4 遅延出力
        7.3.5 データベース出力
8章 MapReduceの機能
    8.1 カウンター
        8.1.1 組み込みカウンター
        8.1.2 ユーザー定義のJavaカウンター
        8.1.3 ユーザー定義ストリーミングカウンター
    8.2 ソート
        8.2.1 準備
        8.2.2 部分ソート
        8.2.3 全体のソート
        8.2.4 セカンダリソート
    8.3 結合
        8.3.1 map側結合
        8.3.2 reduce側結合
    8.4 サイドデータの配布
        8.4.1 ジョブ設定の利用
        8.4.2 分散キャッシュ
    8.5 MapReduceライブラリクラス
9章 Hadoopクラスタの構築
    9.1 クラスタの仕様
        9.1.1 ネットワークトポロジ
    9.2 クラスタのセットアップとインストール
        9.2.1 Javaのインストール
        9.2.2 Hadoopユーザーの生成
        9.2.3 Hadoopのインストール
        9.2.4 インストールのテスト
    9.3 SSHの設定
    9.4 Hadoopの設定
        9.4.1 設定の管理
        9.4.2 環境設定
        9.4.3 Hadoopデーモンの重要なプロパティ
        9.4.4 Hadoopデーモンのアドレスとポート
        9.4.5 Hadoopのその他のプロパティ
    9.5 インストールの後処理
    9.6 Hadoopクラスタのベンチマーク
        9.6.1 Hadoopのベンチマーク
        9.6.2 ユーザーのジョブ
    9.7 クラウドにおけるHadoop
        9.7.1 Amazon EC2でのHadoop
10章 Hadoopの管理
    10.1 HDFS
        10.1.1 永続的データ構造
        10.1.2 セーフモード
        10.1.3 監査ログ
        10.1.4 ツール
    10.2 モニタリング
        10.2.1 ロギング
        10.2.2 メトリクス
        10.2.3 Java Management Extensions
    10.3 メンテナンス
        10.3.1 ルーチンの管理手順
        10.3.2 ノードの参加と脱退
        10.3.3 アップグレード
11章 Pig
    11.1 Pigのインストールと実行
        11.1.1 実行の種類
        11.1.2 Pigプログラムの実行
        11.1.3 Grunt
        11.1.4 Pig Latinのエディタ
    11.2 例
        11.2.1 サンプルの生成
    11.3 データベースとの比較
    11.4 Pig Latin
        11.4.1 構造
        11.4.2 ステートメント
        11.4.3 式
        11.4.4 型
        11.4.5 スキーマ
        11.4.6 関数
    11.5 ユーザー定義関数
        11.5.1 フィルタUDF
        11.5.2 評価UDF
        11.5.3 ロードUDF
    11.6 データ処理オペレータ
        11.6.1 データのロードとストア
        11.6.2 データのフィルタリング
        11.6.3 データのグループ化と結合
        11.6.4 データのソート
        11.6.5 データのUNIONと分割
    11.7 実践Pig
        11.7.1 並列性
        11.7.2 パラメータ置換
12章 HBase
    12.1 Hbaseの基礎
        12.1.1 背景
    12.2 概念
        12.2.1 データモデルに関する弾丸ツアー
        12.2.2 実装
    12.3 インストール
        12.3.1 試運転
    12.4 クライアント
        12.4.1 Java
        12.4.2 RESTとThrift
    12.5 例
        12.5.1 スキーマ
        12.5.2 データのロード
        12.5.3 Webクエリ
    12.6 HBase対RDBMS
        12.6.1 サービスの成功事例
        12.6.2 HBase
        12.6.3 ユースケース:streamy.comにおけるHBase
    12.7 実践
        12.7.1 バージョン
        12.7.2 愛と憎しみ:HBaseとHDFS
        12.7.3 UI
        12.7.4 メトリクス
        12.7.5 スキーマの設計
13章 ZooKeeper
    13.1 ZooKeeperのインストールと実行
    13.2 例
        13.2.1 ZooKeeperにおけるグループメンバーシップ
        13.2.2 グループの作成
        13.2.3 グループへの追加
        13.2.4 グループ内のメンバーのリストアップ
        13.2.5 グループの削除
    13.3 ZooKeeperサービス
        13.3.1 データモデル
        13.3.2 操作
        13.3.3 実装
        13.3.4 一貫性
        13.3.5 セッション
        13.3.6 状態
    13.4 ZooKeeperによるアプリケーションの構築
        13.4.1 設定サービス
        13.4.2 耐久性のあるZooKeeperアプリケーション
        13.4.3 ロックサービス
        13.4.4 さらなる分散データ構造とプロトコル
    13.5 ZooKeeperの実用化
        13.5.1 耐久性とパフォーマンス
        13.5.2 設定
14章 ケーススタディ
    14.1 Last.fmにおけるHadoopの利用
        14.1.1 Last.fm:ソーシャルミュージック革命
        14.1.2 Last.fmにおけるHadoop
        14.1.3 Hadoopによるチャートの生成
        14.1.4 Track Statisticsプログラム
        14.1.5 まとめ
    14.2 FacebookにおけるHadoopとHive
        14.2.1 イントロダクション
        14.2.2 FaceBookにおけるHadoop
        14.2.3 仮想的なユースケースの研究
        14.2.4 Hive
        14.2.5 課題と今後の活動
    14.3 Nutch検索エンジン
        14.3.1 背景
        14.3.2 データ構造
        14.3.3 NutchにおけるHadoopデータ処理の例
        14.3.4 まとめ
    14.4 Rackspaceにおけるログの処理
        14.4.1 要件/課題
        14.4.2 沿革
        14.4.3 Hadoopの選択
        14.4.4 収集と蓄積
        14.4.5 MapReduceによるログの処理
    14.5 Cascading
        14.5.1 フィールド、タプル、パイプ
        14.5.2 操作
        14.5.3 Tap、Scheme、Flow
        14.5.4 Cascadingの利用
        14.5.5 柔軟性
        14.5.6 ShareThisにおけるHadoopとCascading
        14.5.7 まとめ
    14.6 Apache Hadoopでのテラバイトソート
付録A Apache Hadoopのインストール
    A.1 必要事項
    A.2 インストール
    A.3 設定
    A.3.1 スタンドアロンモード
    A.3.2 擬似分散モード
    A.3.3 完全分散モード
付録B ClouderaのDistribution for Hadoopについて
    B.1 必要事項
    B.2 スタンドアロンモード
    B.3 擬似分散モード
    B.4 完全分散モード
    B.5 Hadoopの関連パッケージ
付録C NCDC気象情報データの準備
索引

コラム目次
    「Hadoop」という名前の由来
    Yahoo!でのHadoop
    なぜHDFSのブロックはそれほど大きいのか?
    HDFSにおけるファイルパーミッション
    ネットワークトポロジとHadoop
    レプリカの配置
    どの圧縮フォーマットを使えばよいのか?
    なぜJava Object Serializationを使わないのか?
    ユーザー識別情報の設定
    設定できるプロパティ
    ジョブ、タスク、タスク試行ID
    ジョブヒストリ
    Hadoopのユーザーログ
    MapReduceで進行状況を知らせるのは?
    reducer数の選択
    入力スプリットとHDFSブロックの関係
    MultipleOutputFormatとMultipleOutputsとはどう違う?
    ソート順序の制御
    RAIDを使わないのはなぜ?
    EC2のネットワークトポロジ
    メトリクスとカウンターの違いは?
    バージョン間の互換性
    スキャナ
    同期と非同期、どちらのAPIを使うべき?
    ZooKeeperはPaxosを使っているのか?