誰にも見えないブログ

雑なメモ。まとまってない文章等

Hadoop徹底入門第二版 第二章ノート

Hadoop徹底入門 第2版 オープンソース分散処理環境の構築

Hadoop徹底入門 第2版 オープンソース分散処理環境の構築

第二章は様々なサンプルでmapredeuceを例えようという章でした。

  • アクセスログの集計の例

    • 問題設定
      • 一日単位でIPアドレス、ブログID、要求情報の3つを記録
      • 要求情報で不正閲覧どうかを判断したい
      • 各ブログの閲覧者から重複IPを排除し、ユニークユーザーをカウントしたい。
    • MapReduceの処理の流れ
      • ジョブ1で不正閲覧と重複IPの排除(フィルタ)
      • ジョブ2でブログ閲覧者数のカウント
    • 詳細
      • Mapフェーズ
        • map関数で不正な要求を処理対象から除外
        • ブログIDとIPの組み合わせをキー、1をバリューとした中間データの出力
      • Shuffleフェーズ
        • ブログIDとIPの組み合わせをキーとしてShuffle(これで重複排除になるらしい)
      • Reduceフェーズ
        • ブログIDをキー、IPアドレスをバリューとしてカウントするとブログのユニークな閲覧者数をカウントできる
  • 似ている人を見つける例

    • 概要
      • 似たもの同士にコミュニケーションを取らせたい
      • 特徴を計算し、同じ特徴を持つユーザーごとにグルーピングする。
      • 同じグループの中から友達を推薦する
    • MapReduceの処理の流れ
      • Mapフェーズ
        • <特徴、ユーザー>のキーバリューを生成し、中間データとして出力
      • Shuffleフェーズ
        • 同じ特徴を持つ中間データをまとめる
        • <特徴,同じ特徴を持つユーザーの集合>のKVをつくる
      • Reduce
        • 推薦処理をする
  • MapReduceまとめ

    • Mapでキーを付与
    • Shuffleでキーの集約
    • Reduceで同じキーのデータを処理
  • 入力に対して、集計が必要ない場合、Map処理のみで十分である。

    • 例:大量の画像に対して特定部位にモザイクをかける
      • 別の入力の画像の情報が一切いらないのでMap処理だけで十分
  • Mapフェーズだけで完結できる処理は中間データの転送などが不要というメリットがある。

  • map関数reduce関数を使い分ける

    • map:全てのデータ一つひとつが渡される
    • reduce:キーに紐付いたデータがキーでソートされた状態で渡される。
  • どのような軸で集約・分類するのかShuffleで定義する
  • 複数のMapReduce処理を組み合わせる
    • 複雑な処理を一度のMapReduceに詰め込まない。