0

EMRを正しく理解していることを確認したい。私が話していることは、EMR / Hadoop で意味がありますか?

私は現在、MySQL と MongoDB の両方 (別々の EC2 インスタンス上) に保存されているデータを調べるアプリにレコメンデーション エンジンを持っており、その結果、ユーザーにコンテンツを提案することができます。これは問題なく動作しましたが、現在、スクリプトの実行に必要な間隔よりも長い時間がかかっているところまで来ています。これは明らかに問題です。

このスクリプトを EMR に移行することを検討しています。マッピング スクリプトから MongoDB と MySQL に接続できることを理解しています (つまり、S3 上のファイルである必要はありません)。私が疑問に思っているのは、MySQL / S3 でデータの調査を開始した場合、Hadoop には、スクリプトが各インスタンスで同じレコードを調査しないことを確認する方法がありますか? Hadoop の概念をまったく理解していますか? この質問が本当に初心者の場合は申し訳ありません。

4

1 に答える 1

1

はい、hadoop は、DB からの入力レコードが分割され、マッパーにのみ渡されることを確認します。つまり、同じレコードが異なるマッパーによって読み取られることはありません (同じインスタンスで実行されていても)。

一般的に言えば、データを分割するタスクは、ここInputFormatから引用するために、選択されたもの次第です:

InputFormat のもう 1 つの重要な役割は、入力データ ソース (入力ファイルなど) を、個々のマップ タスクへの入力を構成するフラグメントに分割することです。これらのフラグメントは「スプリット」と呼ばれ、InputSplit インターフェイスのインスタンスにカプセル化されます。たとえば、ほとんどのファイルは HDFS の基礎となるブロックの境界で分割され、FileInputSplit クラスのインスタンスによって表されます。アプリケーション固有のデータによっては、他のファイルが分割できない場合があります。他のデータ ソース (データベースのテーブルなど) をスプリットに分割することは、別のアプリケーション固有の方法で実行されます。データを入力分割に分割する場合、このプロセスが迅速かつ安価であることが重要です。

すでにお読みになっているかもしれませんが、これは Hadoop の DBInputFormat に関する優れた初期リソースです。

于 2013-04-30T03:12:21.367 に答える