濱野 賢一朗 監修
太田 一樹 著
下垣 徹 著
山下 真一 著
猿田 浩輔 著
藤井 達朗 著
本書はオープンソースの分散処理実行基盤「Hadoop(ハドゥープ)」の解説書です。Hadoopは、Googleなどの巨大サイトで稼動するシステムを再現したオープンソースソフトで、複数のコンピュータを連携させて実行できます。今まで処理することができなかったバイト~ペタバイト級の巨大ファイルも扱えるようになり、商用規模のアクセスログ解析、Web検索の索引作成、POSデータの傾向解析などでの応用が期待されています。また、接続するコンピュータ(ノード)の追加による処理能力の増強や、一部のノードが停止しても縮退運転ができるという特徴を持っています。
本書ではHadoopの導入からシステム構築、JavaによるHadoopアプリケーションの作り方、ノード追加時の省力化、各種の周辺ソフトウェアの連携になどについて詳しく解説します。Hadoopを理解したい初級者の方から、業務への適用を検討している方にも役立てていただけます。
はじめに
1 Hadoop ってなんだろう?
1.1 Hadoop とは
1.2 Hadoop の概要
1.2.1 Hadoopって何?
1.2.2 用途
1.2.3 Hadoopの誕生
1.2.4 大規模なデータ処理における課題と対応
1.3 Hadoop の適用領域
1.3.1 万能型のプロダクトではない
1.3.2 DBMS とHadoopの比較
1.3.3 RDBMS とHadoopの連携
1.4 Hadoop の構成と処理概要
1.4.1 ApacheのHadoopプロジェクト
1.4.2 サーバー構成
1.4.3 HDFS:Hadoop分散ファイルシステム
1.4.4 Hadoop MapReduceフレームワーク
1.5 Hadoop の適用事例
1.5.1 Hadoopで変わるシチュエーション
1.5.2 Hadoopアプリケーションの利用事例
2 Hadoop の導入
2.1 Hadoop インストールの準備
2.1.1 Hadoopの動作モード
2.1.2 利用するHadoopのパッケージ
2.1.3 インストール前に用意するもの
2.2 コミュニティ版Hadoop のインストール
2.2.1 パッケージの入手
2.2.2 インストール手順
2.3 コミュニティ版Hadoop の起動と停止
2.4 MapReduce 実行による動作確認
2.4.1 サンプルMapReduceアプリケーション
2.4.2 ローカルモードでの実行
2.4.3 擬似分散/完全分散モードでの実行
2.5 Cloudera’s Distribution for Hadoop(CDH)の導入
2.5.1 Cloudera 社とCDH
2.5.2 CDH を利用したrpmのインストール
2.5.3 インストール先の確認
2.5.4 完全分散モードでのインストール
3 Hadoop 分散ファイルシステムHDFS
3.1 Hadoop におけるファイルシステム
3.2 HDFS の仕組み
3.2.1 HDFS のアーキテクチャ
3.2.2 HDFS の利点
3.2.3 ブロックとメタデータ
3.3 HDFS のオペレーションョン
3.3.1 ディレクトリ構成と設定ファイル
3.3.2 ファイル/ディレクトリのパーミッション
3.3.3 起動と停止
3.4 ファイル操作
3.4.1 hdfs コマンド
3.4.2 dfs サブコマンド
3.5 ログ管理
3.5.1 ログの種類
3.5.2 ログレベルの動的な変更
3.5.3 状態確認とメンテナンス
3.6 WebUI による管理
3.7 ラックアウェアネスの設定方法
3.7.1 クラスタ構成の認識
3.7.2 スクリプトを記述する
4 Hadoop MapReduce フレームワーク
4.1 MapReduce フレームワークの基礎知識
4.1.1 Map 処理とReduce 処理
4.1.2 ごく単純なMapreduce
4.1.3 分散して処理する場合
4.2 MapReduce フレームワークの構成
4.2.1 MapReduceとHDFS
4.2.2 MapReduceの特徴
4.3 JobTracker の役割
4.3.1 機能
4.3.2 3 つの動作モード
4.3.3 TaskTracker への処理割り当て
4.3.4 MapReduceジョブ設定の確認
4.4 TaskTracker の役割
4.4.1 機能
4.5 MapReduce フレームワークの連携動作/監視
4.5.1 JobClient の役割
4.5.2 死活監視とハートビート通信
4.5.3 ジョブの優先度設定とスケジューラ
4.6 MapReduce フレームワークのオペレーション
4.6.1 分散環境での起動
4.6.2 最低限必要な設定
4.6.3 設定ファイルと起動スクリプト
4.6.4 JobTracker の設定
4.6.5 ジョブとタスク
4.6.6 TaskTracker の脱退判断
4.6.7 TaskTracker の設定
4.6.8 MapReduceフレームワークの起動と停止
4.7 コマンドラインベースのMapReduce 管理
4.7.1 MapReduceジョブの管理
4.7.2 MapReduce管理者用コマンド
4.7.3 TaskTracker の追加
4.8 WebUI による管理
4.8.1 MapReduceジョブ可視化
5 MapReduce プログラミング入門
5.1 MapReduce フレームワーク
5.2 Java によるMapReduce プログラムの作成方法
5.2.1 MapReduceプログラムで記述する内容
5.2.2 MapReduceプログラムの入力と出力
5.2.3 WordCount アプリケーションの作成
5.3 ワードカウントサンプルアプリケーション
5.3.1 プログラムの作成/コンパイル/実行
5.3.2 WordCount.java 解説
5.4 MapReduce プログラム実行全体の流れ
5.4.1 InputSplits:入力データの分割単位
5.4.2 InputFormat:入力データの分割
5.4.3 Mapper:map 関数の実行
5.4.4 Partitioner:中間データの行き先を決定
5.4.5 Reducer:reduce関数の実行
5.4.6 OuputFormat
5.5 Hadoop I/O API
5.5.1 シリアライズAPI(Writable)
5.5.2 ファイル構造API(SequenceFile)
5.6 Hadoop MapReduce フレームワークAPI
5.6.1 設定API(Configuration)
5.6.2 Mapper/Reducer
5.6.3 入力フォーマット(InputFormat)
5.6.4 出力フォーマット(OutputFormat)
5.6.5 パーティショナー(Partitioner)
5.6.6 カウンター(Counter)
5.6.7 副次データの配布(DistributedCache)
5.7 MapReduce プログラムのテスト/デバッグ手法
5.7.1 MapReduceの作法に合わせた設計/記述
5.7.2 MapReduceプログラムのUnit テスト
5.7.3 MapReduceプログラムの動作環境設定
5.7.4 MapReduceプログラムのデバッグ技法
6 SQL 的インターフェイスHive
6.1 Hive 概略
6.1.1 MapReduceの容易な活用
6.1.2 Hive とは
6.2 Hive とHadoop
6.2.1 Hive とRDBMS の違い
6.2.2 テーブルの格納方式
6.2.3 MapReduceとHive
6.3 HiveQL
6.3.1 DDL
6.3.2 データの格納
6.3.3 SELECT 文
6.3.4 コマンドライン/シェルからの実行
6.3.5 EXPLAIN 文
6.3.6 ユーザー定義関数
6.4 インストール
6.4.1 Hive の導入に必要なもの
6.4.2 インストール手順
6.4.3 Hive 動作確認
6.5 Hive の設定
6.5.1 metastore 管理設定
6.5.2 データ保持方法
6.5.3 ログの確認
6.5.4 Hive でのチューニング
7 環境構築の効率化
7.1 Hadoop 環境の効率的な構築
7.1.1 Hadoop環境の自動構築の準備
7.2 kickstart によるHadoop 環境構築
7.2.1 PXE ブート
7.2.2 kickstart
7.2.3 サーバーの設定と資材の配置
7.2.4 PXE ブート関連の設定ファイルの配置
7.2.5 kickstart の設定ファイルの配置
7.2.6 OS の自動インストール
7.3 Puppet によるHadoop 環境設定
7.3.1 Puppet
7.3.2 マニフェスト
7.3.3 Puppet マスターのインストール
7.3.4 Parallel SSH のインストール
8 運用監視とシステムの可視化
8.1 Hadoop クラスタの運用監視
8.2 Hadoop で実現できる監視
8.2.1 Hadoopのログ
8.2.2 HadoopのWebUI
8.3 Ganglia によるHadoop 環境の可視化
8.3.1 Ganglia とは
8.3.2 Ganglia によるHadoopクラスタの可視化
9 可用性の向上
9.1 クラスタシステムの可用性
9.2 スレーブノードの故障による影響
9.2.1 DataNode の故障
9.2.2 TaskTracker の故障
9.3 マスターノードの故障による影響
9.3.1 NameNode の故障
9.3.2 JobTracker の故障
9.4 HA クラスタによるマスターノードの冗長化
9.4.1 Heartbeat とDRBD によるHA クラスタ
9.4.2 DRBD のインストール/設定
9.4.3 Heartbeat のインストール/設定
9.4.4 HA クラスタの挙動確認
9.5 HDFS メタデータのチェックポイントとバックアップ
9.5.1 CheckpointNode
9.5.2 BackupNode
10 性能向上のためのチューニング
10.1 Map 処理とReduce 処理に関するチューニング
10.1.1 アプリケーションのチューニングポイント
10.2 MapReduce フレームワークのチューニング
10.2.1 MapReduceジョブの動作に影響するHadoopの設定
10.2.2 Map 処理でのフレームワークのチューニング
10.2.3 Reduce 処理でのフレームワークのチューニング
10.3 その他チューニング
10.3.1 Java VM チューニング
10.3.2 OS チューニング
11 Hadoop に関連するプロダクト
11.1 分散型データベースHBase
11.1.1 HBase とは?
11.1.2 データモデル
11.1.3 アーキテクチャ
11.1.4 インストール方法
11.1.5 HBase Shell
11.1.6 MapReduceジョブからの使用
11.1.7 HBase のテーブル設計
11.2 Pig
11.2.1 Pig とは
11.2.2 Pig のインストール
11.2.3 Pig で扱うデータ型
11.2.4 Pig の処理でできること
11.2.5 Pig のコマンド操作
11.2.6 Pig で使用できるUDF
11.2.7 Pig を使用する場合に確認すること
11.3 Thrift
11.3.1 なぜThrift が必要か?
11.3.2 Thrift のサーバー/クライアント実装手順
11.3.3 Thrift を用いたHDFS へのアクセス
索引
執筆者プロフィール
付属データはこちら
内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。
刷数は奥付(書籍の最終ページ)に記載されています。
書籍の種類:
書籍の刷数:
本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。
対象の書籍は正誤表がありません。
発生刷 | ページ数 | 書籍改訂刷 | 電子書籍訂正 | 内容 | 登録日 | ||||
---|---|---|---|---|---|---|---|---|---|
1刷 | 012 最終行 |
2刷 | 未 |
|
2011.04.01 | ||||
1刷 | 048 コマンド実行例の2行目 |
3刷 | 未 |
|
2011.08.17 | ||||
1刷 | 049 コマンド実行例の2行目 |
3刷 | 未 |
|
2011.08.17 | ||||
1刷 | 067 12,14,19,21行目 |
3刷 | 未 |
|
2011.03.29 | ||||
1刷 | 091 表3.3「パラメータ名」列の6行目と7行目 |
3刷 | 未 |
|
2011.08.17 | ||||
1刷 | 110 3行目 |
2刷 | 未 |
|
2011.04.01 | ||||
1刷 | 143 欄外の註[11] |
2刷 | 未 |
|
2011.04.01 | ||||
1刷 | 150 10行目 |
2刷 | 未 |
|
2011.04.01 | ||||
1刷 | 209 欄外の[6] |
2刷 | 未 |
|
2011.03.29 | ||||
1刷 | 212 コードの7行目 |
2刷 | 未 |
|
2011.03.29 | ||||
1刷 | 246 下から7行目 |
2刷 | 未 |
|
2011.03.29 | ||||
1刷 | 257 15行目 |
2刷 | 未 |
|
2011.03.29 | ||||
1刷 | 264 コードの下から4行目 |
2刷 | 未 |
|
2011.03.29 | ||||
1刷 | 278 「mapred-site.xml」の下から3行目 |
2刷 | 未 |
|
2011.03.29 | ||||
1刷 | 280 7行目 |
2刷 | 未 |
|
2011.03.29 | ||||
1刷 | 337 リストの6行目 |
2刷 | 未 |
|
2011.03.29 | ||||
1刷 | 382 16行目 |
2刷 | 未 |
|
2011.03.29 | ||||
1刷 | 386 12行目 |
2刷 | 未 |
|
2011.03.29 |
mft さん
2020-11-24
10年前ぐらいの本(第2版もその2,3年後に出ているはず)を調べ物の一環という感じで何となく眺めた
hatagi59 さん
2013-10-03
これが一発目のHadoop本で良かった。 HDFSとMapReduceの概要と少し詳しい内容も読みやすく、理解しやすく書かれていた。 可用性の部分でMaster,SlaveNodeの考え方を導入してるんだね。自分が作っているフレームワークも同じ様な考え方を導入していたので特に興味が持てた。 ただ、NoSQLについては、まだ良く分からないな。これは別途他の書籍をあたるかな。
minoguchi さん
2013-06-25
読んだというか眺めた…。