はじめてのHadoop ~分散データ処理の基本から実践まで
この本の概要
「いままで数千時間かっていた処理が,100分の1以下の時間で終わるようになった」
など,大量/多種のデータを効率よく処理できる手段として注目されているHadoopの仕組みと利用法をやさしく解説。最も現場で利用されているディストリビューション・CDHのバージョン3と,最新のHadoop2.0をベースにしたCDH4に対応,ポイントや注意点を丁寧にフォローしています。
序文はHadoopの生みの親,Doug Cutting氏。
これからHadoopを学びたい方に最適の1冊です。
こんな方におすすめ
- 大規模データ処理に興味のある方
目次
第1章 Hadoopを知る
1-1 Apache Hadoopとは
- Hadoopのルーツは検索エンジンにあり
- Hadoopの誕生
1-2 なぜHadoopが必要となるのか
- トランザクションシステムの三種の神器とは
- 処理の分散とデータの集中
- 爆発的に増えるデータをいかに活用するか
1-3 アーキテクチャを理解する
- Hadoopのマシン構成
- データと処理,2つの分散
- よくある誤解
1-4 さまざま視点から導入を検討する
- Hadoopで可能性が広がる分野とは
- ビッグデータ関連技術で役立てるには
- 立場ごとにどのようにHadoopに取り組むか
1-5 Hadoopエコシステムを理解する
- 中核となる3つのサブプロジェクト
- 8つの関連プロジェクト
- Incubatorに属するプロジェクトなど
第2章 ディストリビューションとインストール
2-1 Hadoopを利用するにあたって
- トップページにアクセスする
- 安定バージョンとは
- ドキュメントサイトにアク セスする
- Apache Hadoopをダウンロードする
2-2 ディストリビューションを確認する
- どこからはじめればよいか
- ディストリビューションを選択するメリットとデメリット
- 3つのディストリビューションとは
- CDHのバージョンを理解する
- CDHのコンポーネントを確認する
2-3 Hadoopを使う準備をする
- 本書での利用環境を確認する
- 本書で利用するサンプルデータとアプリケーション
- オペレーティングシステムを選択する
- Java仮想マシンをインストールする
- CDHをインストールする4つの方法
- RPM互換パッケージ管理システムでインストールする
- パッケージを利用してリポジトリをインストールする
- リポジトリファイルを手動でコピーする
- ローカルリポジトリを作成する(サーバ設定)
- ローカルリポジトリを作成する(クライアント設定)
2-4 Hadoopをインストールする
- インストールパッケージの一覧
- インストール前に確認すること
- パッケージ管理システムでのインストールにおける注意点
- 関連コンポーネントのパッケージ一覧
- Hadoop本体のインストール
2-5 基本設定をする
- 3種類の動作モードを理解する
- 設定ファイルの扱いを知る
- デーモンの種類と役割
- Hadoopを操作するコマンド
2-6 スタンドアローンモードで動作させる
- 実行方法
- 再実行する際の注意
2-7 擬似分散モードでMRv1を起動する(CDH3)
- インストール
- デーモンを起動
- Grepサンプルアプリケーションを実行する
- デーモンを停止する
2-8 擬似分散モードでYARNを起動する(CDH4)
- インストール
- HDFSのフォーマットと起動
- YARNの起動と準備
- Grepサンプルアプリケーションを実行する
- デーモンを停止する
2-9 Webユーザーインタフェースを利用する
- Webユーザーインタフェースの種類
- ネームノード(HDFS)
- ジョブトラッカー(MapReduce)
- リソースマネージャ(YARN)
- クラスタ
- ノードマネージャ
- アプリケーション
第3章 アーキテクチャを理解する
3-1 クラスタのしくみ
- なぜクラスタが必要になるのか
- マスターノードとスレーブノード
- デーモンプロセスの3つの分類
3-2 HDFSのしくみ
- ネームノードとデータノードから構成される
- HDFSでデータが書き込まれる流れ
- データロストを回避するしくみ
- ネームノードの挙動を知る
- セカンダリネームノードの役割
3-3 Hadoop2で追加されたHDFSの機能拡張
- HDFSフェデレイション
- 高可用性HDFS
3-4 MapReduce 1のしくみ
- ジョブトラッカーとタスクトラッカーはどのように連携するか
- ジョブが実行されるしくみ
- タスクが実行されるしくみ
3-5 次世代MapReduce「YARN」とは
- MapReduce 1とYARNを比較する
- 今後YARNに対応されるアプリケーション
- YARNの概要
- リソースマネージャの役割を把握する
第4章 ファイルシステムを操作する
4-1 HDFSとは
- そもそもファイルシステムとは
- HDFSのブロック配置イメージ
- HDFSのメタデータ
- メタデータを管理する「編集ログ」
- HDFS上でのファイル書き込みや読み込み
4-2 HDFSを操作する
- HDFSのおもなコマンドオプション
- ディレクトリを作成する
- ディレクトリ/ファイル一覧を表示する
- ローカルファイルシステムからHDFSへファイルをコピーする
- HDFSからローカルファイルシステムへファイルをコピーする
- ファイルを削除する
- ディレクトリを削除する
- HDFS上でファイルやディレクトリをコピーする
- HDFS上でディレクトリやファイルを移動する
- ディレクトリやファイルのパーミッションを変更する
4-3 ファイルパーミッションを設定する
- パーミッションのチェックを無効にする
- パーミッションをチェックする場合としない場合の動作の違い
4-4 HDFSをメンテナンスする
- 使用率を確認する
- ファイルシステムをチェックする
- メタデータをバックアップする
- メタデータをリストアする
第5章ノンプログラミングでデータを操作する
5-1 Hiveを使ってデータを操作する
- Hiveとは
- Hiveはどのように実行されるのか
- Hiveのアーキテクチャ
- Hiveを使用するための準備
- HiveQLとSQLを比較する
- HiveQLでサポートしているデータ型
- Hiveを操作する準備
- データベースを作成する
- テーブルを作成する
- データをインポートする
- データを検索する
- テーブルを結合する
- データをエクスポートする
- その他Hiveに関する補足事項
- JDBCからHiveを使用する
5-2 Pigを使ってデータを操作する
- Pigとは
- Pigの処理イメージ
- Pigを利用するための準備
- Pigを起動する
- Pig Latinで使う用語
- Pig Latinのデータ型
- Pigの演算子
- データを読み込む
- ロードされたデータを確認する
- データを検索する
- 商品ごとの売上件数をカウントする
- データを結合する
- データをエクスポートする
- ユーザー関数(UDF)を作成する
第6章 プログラミングでMapReduceを使う
6-1 MapReduceの基礎を知る
- MapReduceとは
- MapとReduceの役割
- 分散処理の流れ
- MapReduceジョブに最低限実装すべきもの
- MapReduceジョブにおけるデータフロー
- キーと値のデータ型について
6-2 MapReduce ジョブの実装を理解する
- それぞれのAPIの特色
- 実装するメソッドの種類
- 旧APIと新APIそれぞれでWordCountの実装を見る
6-3 コンパイルから実行までの手順を確認する
- MapReduce実行のための準備
- ソースコードのコンパイルから実行結果の確認まで
- MapReduceジョブ実行時の各デーモンの動作について
- 圧縮ファイルを利用する
- MapReduceジョブで集計する
- 1つのジョブでフォーマットの異なる2つの入力データを扱う
- 分散キャッシュを利用する
- サンプルアプリケーションのソースコード
- サンプルの実行手順
- 結合の種類と注意点
- MapReduceジョブのログを出力する
- 例外処理の注意点
- MapReduceジョブをチューニングする
- データ数に偏りが生じる場合の対処法(Partitioner)
6-4 テストの考え方
- MRUnitを使うための準備
- Mapperをテストする
- Reducerをテストする
- ジョブとしてテストする
- コンパイルと実行
6-5 MapReduceジョブを操作する
- ジョブが終了するまで待つ場合
- ジョブの終了を待たない場合
- 実行中のジョブを確認する
- 実行中のジョブを停止する
6-6 Hadoop Streamingを利用する
- Ruby版WordCountアプリケーション
- サンプルの実行方法
第7章 ランダムアクセスできるデータベースとして使う
7-1 カラム指向データベース「HBase」を活用する
- データベースの今と昔
- 分散データベースとCAP定理
- HBaseの特徴とは
- HBaseとRDBMSを比較する
7-2 HBaseのアーキテクチャとは
- データモデルを理解する
- クラスタのアーキテクチャを把握する
- データフローを追う
- HBaseのデザイン
7-3 HBaseを利用するには
- HBaseをインストールする
- 追加設定のポイント
- HBaseを起動する
- HBaseのWeb UIを利用する
7-4 HBaseシェルとは
- HBaseシェルでできること
- HBaseシェルの起動と終了
- テーブルの作成と確認
- データにアクセスする
- テーブルを変更/削除する
- シェルスクリプティングを活用する
7-5 HBase APIを活用する
- 設定ファイルを読み込む
- テーブルを作成する
- データを挿入する
- データを取得する(get)
- データを取得する(scan)
- Filterで特定のデータに絞り込む
7-6 ブログアプリケーションを作成する
- テーブルを設計する
- JSPを実装する
- デプロイする
第8章 クラスタを構成する
8-1 クラスタの構築を検討する
- 本章での利用環境について
- 構成を検討する
- サーバの配置を決定する
- デーモンを配置する
- ハードウェアの選定とOSのインストール
8-2 CDH3でクラスタを構築する
- 設定ファイルについて
- パラメータを設定する
- 構築作業の手順
- リポジトリを準備する(オプション)
- 共通設定をする
- CDH3をインストールする
- クラスタを設定する
- CDHの起動と停止
- クライアントノードとは
- スレーブノードの追加と削除
8-3 CDH4でクラスタを構築する
- 設定ファイルについて
- パラメータを設定する
- 構築の作業手順
- CDH4をインストールする
- クラスタを設定する
- CDH4の起動と停止
- スレーブノードの追加と削除
8-4 CDH4で高可用性HDFSを構築する
- 構築を検討する
- マスターノードを追加する
- HA HDFSを設定する
- 起動と停止
付録
A-1 Sqoopを利用する
- Sqoopとは
- Sqoopをインストールする
- Sqoopをもちいてデータを転送する
- より高度な機能と注意点
A-2 参考文献
今後の学習のポイント
- MapReduceプログラミングの応