7

私はしばらく MapReduce を検討してきましたが、これはフォールト トレラントな分散コンピューティングを実装するための非常に優れた方法のようです。このトピックに関する多くの論文や記事を読み、一連の仮想マシンに Hadoop をインストールし、いくつかの非常に興味深いテストを行いました。Map と Reduce の手順を理解していると思います。

しかし、ここに私の問題があります。http サーバーのログ分析にどのように役立つかわかりません。

私の理解では、大企業 (たとえば Facebook) は、http ログを計算する目的で MapReduce を使用して、これらからオーディエンス統計を抽出するプロセスをスピードアップします。私が働いている会社は、Facebook よりも小さいですが、毎日計算する大量の Web ログを持っています (100Go は毎月 5 から 10% の間で成長しています)。現在、これらのログを単一のサーバーで処理していますが、問題なく動作しています。しかし、コンピューティング ジョブの分散は、すぐに役立つ最適化としてすぐに頭に浮かびます。

現時点でお答えできない質問は次のとおりです。

  • MapReduce の概念は本当にブログ分析に適用できるのでしょうか?
  • MapReduce はそれを行うための最も賢い方法ですか?
  • さまざまなコンピューティング インスタンス間で Web ログ ファイルをどのように分割しますか?

ありがとうございました。
ニコラス

4

2 に答える 2

16

MapReduce の概念は本当にブログ分析に適用できるのでしょうか?

はい。

ハッジログファイルをたとえば10,000行または1,000,000行のチャンクに分割できます(ログファイルのタイプに適したチャンクは何でも-Apacheログファイルの場合はより大きな数を使用します)、特定のものを抽出するいくつかのマッパーにそれらをフィードします(各ログ行から Browser,IP Address, ..., Username, ... など) を取得し、それぞれの出現回数を数えて減らします (簡略化):

  192.168.1.1,FireFox x.x,username1
  192.168.1.1,FireFox x.x,username1
  192.168.1.2,FireFox y.y,username1
  192.168.1.7,IE 7.0,username1

マップ操作を使用して、バージョンを無視してブラウザーを抽出し、このリストを取得できます。

FireFox
FireFox
FireFox
IE

次に、これを取得するために削減します: FireFox,3 IE,1

MapReduce はそれを行うための最も賢い方法ですか?

それは賢いですが、利益を得るには非常に大きくする必要があります... PETABYTES のログを分割しています。

この種のことを行うには、キューから作業を引き出し、ジョブを実行し、結果を別のキューにプッシュする処理クライアントを備えた、メッセージ キューと一貫したストレージ エンジン (データベースなど) を使用することを好みます。ある時間枠で実行され、他の人が処理できるようになります。これらのクライアントは、特定のことを行う小さなプログラムです。

1 つのクライアントから始めて、1000 に拡張することもできます... LAN 上のすべての PC でスクリーンセーバーとして実行されるクライアントを使用して、8 コア サーバーで 8 つのクライアントを実行し、デュアル コア PC で 2 つのクライアントを実行することもできます。 ...

プルの場合: 100 個または 10 個のクライアントを動作させることができ、マルチコア マシンでは複数のクライアントを実行させることができ、クライアントが完了したものはすべて次のステップで利用できます。また、作業を行うためにハッシュや割り当てを行う必要はありません。100% ダイナミックです。

http://img355.imageshack.us/img355/7355/mqlogs.png

さまざまなコンピューティング インスタンス間で Web ログ ファイルをどのように分割しますか?

テキストベースのログファイルの場合は要素数または行数。

MapReduce をテストするには、Hadoop で遊ぶことをお勧めします。

于 2009-06-02T12:26:32.497 に答える
1
  • MapReduceの概念は本当にウェブログの分析に適用できますか?

もちろん。どのようなデータを保存していますか?

  • MapReduceはそれを行う最も賢い方法ですか?

これにより、一度に多くのコモディティマシン間でクエリを実行できるため、便利な場合があります。または、シャーディングを試すこともできます。

  • さまざまなコンピューティングインスタンス間でWebログファイルをどのように分割しますか?

通常、コンシステントハッシュアルゴリズムを使用してデータを分散するため、後で簡単にインスタンスを追加できます。通常のデータベースの主キーとなるものは何でもハッシュする必要があります。ユーザーID、IPアドレス、リファラー、ページ、広告などが考えられます。ロギングのトピックは何でも。

于 2009-06-02T12:12:42.167 に答える