0

何百万ものレコードがあり、毎日更新され、追加され、特定のロジックに一致するレコードをすべてのデータから探し出し、一致するサブセットを取得して別のデータベースに挿入する必要があるとします。そのようなタスクに Hadoop と MapReduce を使用していますか、それとも不足しているテクノロジーが他にありますか? 標準の RDMS 以外のものを探している主な理由は、すべての基本データが複数のソースからのものであり、均一に構造化されていないためです。

4

4 に答える 4

2

Map-Reduceは、並列化でき、ローカル結果を計算して集計できるアルゴリズム向けに設計されています。典型的な例は、ドキュメント内の単語を数えることです。これを複数の部分に分割して、あるノードの単語や別のノードの単語などを数え、合計を合計することができます(これは簡単な例ですが、問題の種類を示しています)。

Hadoopは、大きなデータファイル(ログファイルなど)を処理するために設計されています。デフォルトのブロックサイズは64MBであるため、何百万もの小さなレコードがあると、Hadoopにはあまり適していません。

不均一に構造化されたデータの問題に対処するために、多くの列がnullであるデータ(MongoDBなど)を処理するように設計されたNoSQLデータベースを検討することができます。

于 2012-06-28T02:58:48.303 に答える
1

Hadoop / MRは、リアルタイム処理ではなく、バッチ処理用に設計されています。したがって、 Twitter StormHStreamingなどの他の代替手段を検討する必要があります。

また、データのリアルタイム処理については、 Hamaをご覧ください。ハマでのリアルタイム処理はまだ粗雑であり、多くの改善/作業を行う必要があることに注意してください。

于 2012-06-28T03:42:33.010 に答える
1

ストームかフルームをお勧めします。これらのいずれかで、入ってきた各レコードを分析し、それをどうするかを決めることができます。

于 2012-06-28T04:17:36.857 に答える
0

データ量が多くなく、数百万のレコードがそれほど適切ではない場合、スキーマが適切に正規化されていなくても、RDMBS から最大限のデータを取得することをお勧めします。K1、K2、K3、Blob の構造のテーブルでさえ、より便利になると
思います。
私が有用と考えることができる唯一のケースは、スキーマレス データをインデックス化する MongoDB/CoachDB 機能です。何らかの属性値でレコードを取得できるようになります。
Hadoop MapReduce について - 処理に多くの CPU を利用したい、大量のデータを持っている、または分散ソート機能が必要でない限り、役に立たないと思います。

于 2012-06-28T07:23:21.287 に答える