Hadoop徹底入門第二版 第二章ノート
Hadoop徹底入門 第2版 オープンソース分散処理環境の構築
- 作者: 太田一樹,岩崎正剛,猿田浩輔,下垣徹,藤井達朗,山下真一,濱野賢一朗
- 出版社/メーカー: 翔泳社
- 発売日: 2013/07/09
- メディア: 大型本
- この商品を含むブログ (5件) を見る
第二章は様々なサンプルでmapredeuceを例えようという章でした。
アクセスログの集計の例
- 問題設定
- 一日単位でIPアドレス、ブログID、要求情報の3つを記録
- 要求情報で不正閲覧どうかを判断したい
- 各ブログの閲覧者から重複IPを排除し、ユニークユーザーをカウントしたい。
- MapReduceの処理の流れ
- ジョブ1で不正閲覧と重複IPの排除(フィルタ)
- ジョブ2でブログ閲覧者数のカウント
- 詳細
- Mapフェーズ
- map関数で不正な要求を処理対象から除外
- ブログIDとIPの組み合わせをキー、1をバリューとした中間データの出力
- Shuffleフェーズ
- ブログIDとIPの組み合わせをキーとしてShuffle(これで重複排除になるらしい)
- Reduceフェーズ
- ブログIDをキー、IPアドレスをバリューとしてカウントするとブログのユニークな閲覧者数をカウントできる
- Mapフェーズ
- 問題設定
似ている人を見つける例
- 概要
- 似たもの同士にコミュニケーションを取らせたい
- 特徴を計算し、同じ特徴を持つユーザーごとにグルーピングする。
- 同じグループの中から友達を推薦する
- MapReduceの処理の流れ
- Mapフェーズ
<特徴、ユーザー>
のキーバリューを生成し、中間データとして出力
- Shuffleフェーズ
- 同じ特徴を持つ中間データをまとめる
<特徴,同じ特徴を持つユーザーの集合>
のKVをつくる
- Reduce
- 推薦処理をする
- Mapフェーズ
- 概要
MapReduceまとめ
- Mapでキーを付与
- Shuffleでキーの集約
- Reduceで同じキーのデータを処理
入力に対して、集計が必要ない場合、Map処理のみで十分である。
- 例:大量の画像に対して特定部位にモザイクをかける
- 別の入力の画像の情報が一切いらないのでMap処理だけで十分
- 例:大量の画像に対して特定部位にモザイクをかける
Mapフェーズだけで完結できる処理は中間データの転送などが不要というメリットがある。
map関数reduce関数を使い分ける
- map:全てのデータ一つひとつが渡される
- reduce:キーに紐付いたデータがキーでソートされた状態で渡される。
- どのような軸で集約・分類するのかShuffleで定義する
- 複数のMapReduce処理を組み合わせる
- 複雑な処理を一度のMapReduceに詰め込まない。