3

私は Apache Hadoop に慣れていないので、より多くの機能を探求することを本当に楽しみにしています。基本的なワードカウントの例の後、私はアンティを少し上げたいと思いました。そこで私は、Hadoop In Action ブックを読んで得たこの問題の説明に腰を下ろしました。「Web サーバーのログ ファイルを取得します。MapReduce プログラムを作成して、各 IP アドレスの訪問数を集計します。別の MapReduce プログラムを作成して、訪問数の上位 K 個の IP アドレスを見つけます。これらの頻繁な訪問者は、正当な ISP プロキシである可能性があります (多くのユーザー) またはスクレイパーや詐欺師 (サーバー ログが広告ネットワークからのものである場合) である可能性があります。」どのように始めればよいか、誰か助けてもらえますか? Hadoop は基本的な例として wordcount しか与えないので、実際に独自のコードを書くのはちょっと大変です。どんな助けでも感謝します。ありがとう。

4

1 に答える 1

2

各 IP アドレスの訪問数を集計する MapReduce プログラムを作成します。

wordcount の例は、この例と大差ありません。wordcount の例では、マップは入力から「単語」を抽出した後に ("word",1) を出力します。IP アドレスの場合、マップは ""192.168.0.1" を抽出した後に ("192.168.0.1",1) を出力します。ログ ファイルの IP アドレス。

別の MapReduce プログラムを作成して、訪問数の上位 K 個の IP アドレスを見つけます。

最初の MapReduce ジョブの完了後、このような内容のリデューサーの数に基づいて多くの出力ファイルが作成されます

<visits> <ip address>

これらのファイルはすべて、getmergeオプションを使用してマージする必要があります。getmerge オプションは、ファイルをマージし、ファイルをローカルに取得します。

次に、1 番目の列 (アクセス数) に基づいて sort コマンドを使用して、ローカル ファイルをソートする必要があります。

次に head コマンドを使用すると、最初の n 行を取得して、アクセス数の上位 n 個の IP アドレスを取得できます。

2 番目の MR ジョブには、より良いアプローチがあるかもしれません。

于 2011-09-23T13:34:14.923 に答える