0

私のタスクは 1) 最初に、SQOOP を使用して MS SQL Server から HDFS にデータをインポートしたいと考えています。2) Hive を介してデータを処理し、結果を 1 つのテーブルに生成します。3) Hive からの結果を含むテーブルは、再び MS SQL SERVER にエクスポートされます。

Amazon Elastic Map Reduce を使用して、これらすべてを実行したいと考えています。

MS SQL Server からインポートしているデータは非常に大きいです (1 つのテーブルに約 5,00,000 エントリ近くあります。同様に 30 個のテーブルがあります)。このために、クエリのみを含むタスクを Hive で作成しました (各クエリでは多くの結合が使用されています)。そのため、私の単一のローカル マシンではパフォーマンスが非常に悪くなります (完全に実行するには約 3 時間かかります)。

その時間を少しでも減らしたい。そのために、Amazon Elastic Mapreduce を使用することにしました。現在、3 つの m1.large インスタンスを使用していますが、ローカル マシンと同じパフォーマンスを維持しています。

パフォーマンスを向上させるには、いくつのインスタンスを使用する必要がありますか? 使用するインスタンスの数は自動的に構成されますか、または実行のために JAR を送信するときに指定する必要がありますか? 私は2台のマシンを使用しているため、時間は同じです。

また、パフォーマンスを改善したり、インスタンスの数を増やしたりする他の方法はありますか。それとも、JAR の実行中に何か間違ったことをしていますか?

私はAmazonサーバーについてあまり詳しくないので、これについて教えてください。

ありがとう。

4

1 に答える 1

2

ブートストラップ アクションを使用して EMR クラスターにインストールできる Ganglia を試すことができます。これにより、クラスター内の各ノードのパフォーマンスに関するいくつかのメトリックが得られ、適切なサイズのクラスターを取得するための最適化に役立つ場合があります: http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_Ganglia.html

ローカル マシンで EMR Ruby クライアントを使用する場合は、SSH トンネルをセットアップして、Firefox で ganglia Web インターフェイスを表示できるようにすることができます (次のhttp://docs.amazonwebservicesに従って FoxyProxy をセットアップする必要もあります)。 .com/ElasticMapReduce/latest/DeveloperGuide/emr-connect-master-node-foxy-proxy.html )

于 2012-12-05T06:09:17.563 に答える