3

Hadoop MapReduceで次のアーキテクチャが可能ですか?

分散Key-Valueストアが使用されます(HBase)。したがって、値とともに、値に関連付けられたタイムスタンプがあります。Map&Reduceタスクは繰り返し実行されます。マップは、各反復で、前の反復でストアに追加された値(おそらく最新のタイムスタンプを持つ値)を取り込む必要があります。Reduceは、Mapの出力と、reduceが現在の反復で処理する必要のあるキーと一致するキーを持つストアからのペアを取り込む必要があります。reduceの出力はストアに送られます。

これが可能な場合は、通常の操作の代わりに上記の操作が行われるように、どのクラス(たとえば、InputFormat、Reduceのrun())を拡張する必要があります。これが不可能な場合、同じことを達成するための代替手段はありますか?

4

2 に答える 2

0

したがって、あなたが正しいことを本当に理解している場合は、次のように設計します。IdentityMapperを使用します。ここでは、特別なロジックは必要ありません。

キーとタイムスタンプをペアのキーとしてまとめます。ペアの値としてあなたの値を残します:

  • HadoopKey = {key | timestamp}
  • HadoopValue = {値)

ここで、独自のコンパレータを実装する必要があります。これにより、同じ元のキーを持つペアが、異なるタイムスタンプが同じキーを持つものとして認識されるため、一緒になります。(GroupingComparator)

また、レデューサーのペアがタイムスタンプの降順で並べられていることが重要です。(KeyComparator)

を見てください

  • RawComparatorクラス、
  • JobconfのsetOutputValueGroupingComparator()&
  • setOutputKeyComparatorClass()メソッド
  • および「Hadoop-決定的なガイド」、第4章、100ページ
  • または、支援が必要かどうか尋ねてください;-)

レデューサーは、同じキーを持つすべてのペアを受け取ります-おっと、スポイラー...、これらはタイムスタンプでソートされているはずです。最初の(そして最も若い)タイムスタンプがこの反復に適格である場合、このレデューサー呼び出しのすべてのKey-Valueペアが発行されます。タイムスタンプが失格の場合、このキーとのペアは発行されません。

私はこれがそれをするべきだと思います。

于 2010-02-16T16:56:24.077 に答える
0

したがって、反復 n-1 の「ストア」は次のようになります。

キー (タイムスタンプ | 値)

a 1|x、b 2|x、c 3|x、d 4|x

反復 n では、次のペアが追加されます: ... b 5|x、d 6|x

タイムスタンプ > 4 であるため、マッパーはこれら 2 つのレコードを見つけて中間結果に入れます。

レデューサーは、これらの 2 つのレコードに対して、n-1 ストアに別の 2 つの一致するレコードがあることを検出します: b 2|x、d 4|x

したがって、reduce フェーズの出力は (順序に関係なく)、b 5|x、d 6|x、b 2|x、d 4|x になります。

それはあなたが望むものですか?

于 2010-02-16T16:29:30.303 に答える