問題タブ [amazon-emr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hive - EMR Hive で動的 dynamoDB 列をマッピングする方法
Amazon dynamoDB に次のようなレコード構造を持つテーブルがあります
ここで、products プロパティはユーザーに属する製品のリストであり、expires nプロパティはリスト内の製品に関連しています。製品のリストは動的であり、多数あります。このデータを次のような形式で S3 に転送する必要があります
ハイブ外部テーブルを使用すると、dynamoDB でユーザー名と製品の列をマップできますが、動的列をマップできません。ハイブがデータを取り込む前に、dynamo から取得したデータを解釈して構造化するために、org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler を拡張または適応させる方法はありますか? または、ダイナモデータを最初の正規形に変換する代替ソリューションはありますか?
私の重要な要件の 1 つは、dynamodb.throughput.read.percent 設定によって提供されるスロットリングを維持して、テーブルの運用上の使用を損なわないようにすることです。
amazon-s3 - Amazon EMRでジョブフローを終了/削除するにはどうすればよいですか?
Amazon Elastic MapReduce(Amazon EMR)を使用してジョブフローを作成しましたが、いくつかの不明な理由により失敗しました。次に、AWS Management Consoleを介してジョブフローを終了しようとしましたが、[終了]ボタンが無効になりました。次に、CLIを使用してジョブフローを終了しようとしましたが、ジョブフローが終了していることが示されましたが、CLIおよび管理コンソールの[Elastic MapReduce]タブで表示すると、ジョブフローリストに失敗として表示されます。
リストからジョブフローを削除する方法を教えてください。
ジョブフローをデバッグしようとすると、2つのエラーが表示されます。
- 作成時にAmazonS3ログパスを指定しなかったため、このジョブフローではデバッグ機能を使用できません。
- ジョブフローが次の理由で失敗しました:無効なバケット名'testBucket':バケット名には、小文字、数字、ピリオド(。)、およびダッシュ(-)のみを含める必要があります。
hadoop - Elastic Mapreduce Map の出力が失われる
Amazon Elastic MapReduce で大規模な (100 ノードを超える) 一連の mapreduce ジョブを実行しています。
削減フェーズでは、既に完了したマップ タスクが失敗し続けます。
これが発生するマッパーの割合は十分に少ないので、問題が発生した場合を除いて、レデューサーはすべて一時停止し、1 つのマップタスクが再実行されるのを待つため、ジョブ全体が毎回 1 ~ 5 分間一時停止し続けます。 .
これはこのバグに関連していると思います -> https://issues.apache.org/jira/browse/MAPREDUCE-2980 これが起こらずに EMR ジョブを実行する方法を知っている人はいますか?
編集:それが助けになるなら、ここにいくつかの詳細があります。入力形式はSequenceFileInputFormat
. 出力形式は、 のわずかに変更されたバージョンですSequenceFileOutputFormat
。キーと値のペアはユーザー定義です (値は大きく、 を実装しますConfigurable
)。はありませんとCombiner
だけです。入力と出力にブロック圧縮を使用しています (また、中間の kv ペアに対してレコード圧縮が行われています。これは EMR のデフォルトです)。コーデックは、私が信じているデフォルトです。最後に、実際には順番に実行される一連のジョブであり、それぞれが前のジョブの出力を次のジョブへの入力として使用します。最初のいくつかのジョブは小さく、問題なく実行されます。これが起こるのは、仕事が本当に大きくなり始めたときだけです。Mapper
Reducer
SnappyCodec
java - AmazonEMRでのHive/Sqoopの実行に関連するクエリ?
私のユースケース:
EC2からSQOOPを介してHiveに大きなデータをインポートしたいと思います。Hiveにインポートされたデータは、いくつかのアルゴリズムを適用することによってHiveで処理され、いくつかの結果を生成します(テーブル形式、Hiveのみ)。また、生成された結果は、SQOOPのみを介してEc2に再度エクスポートされます。
私はアマゾンウェブサービスを初めて使用し、AWSEMRを使用してこのユースケースを実装したいと考えています。ローカルマシンに実装しました。
インスタンスを起動するためのAWSEMRに関連するリンク、EMRとは何か、動作方法などについて読んだことがあります。
私はEMRについて次のような疑問を持っています:
1)EMRは、入力データと出力データのHadoop処理(オブジェクトの形式)を保持するS3バケットを使用します。---> S3でオブジェクトの形式でデータを保存する方法を取得できませんでした(私のデータはファイルになります)
2)すでに述べたように、Javaでユースケースのタスクを実装しました。したがって、プログラムのJARを作成し、カスタムJARを使用してジョブフローを作成するとします。このように実装することは可能ですか、それともそのために何か特別なことをする必要がありますか?
3)ユースケースで述べたように、SQOOPを使用して結果をEc2にエクスポートし直したいと思います。EMRはSQOOPをサポートしていますか?
--編集パート4)また、SQL Serverのデータは毎日/毎週更新されるため、SQLServerから毎日/毎週データをインポートします。そのデータをS3にインポートして、Hiveに渡すとしたら、どうすればよいですか?(HiveはデータをHDFSの/ user / hive / Warehouseディレクトリに保存するため)。HDFSのS3および/user/ hive/warehouseディレクトリにリンクするにはどうすればよいですか。
できるだけ早くあなたの答えを私に返信してください。できるだけ早くこれをやりたいです。
どうもありがとう。
amazon-web-services - Amazon EMR ジョブの実行時に「ファイルが存在しません」というエラーが発生する
データをアップロードしました genotype1_large_ind_large.txt phenotype1_large_ind_large_1.txt
S3 システムに接続し、EMR UI で以下のようにパラメーターを設定します。
RunDear.run s3n://scalability/genotype1_large_ind_large.txt s3n://scalability/phenotype1_large_ind_large_1.txt s3n://scalability/output_1phe 33 10 4
私のクラスRunDear.runでは、ファイルgenotype1_large_ind_large.txtとphenotype1_large_ind_large_1.txtをキャッシュに配布します
しかし、EMR を実行した後、次のエラーが発生します: java.io.FileNotFoundException: ファイルが存在しません: /genotype1_large_ind_large.txt
ファイル名の前にスラッシュ「/」があるのはなぜですか? それを機能させる方法は?
私も以下のように使用しようとしましたが、私のプログラムは -cacheFile を引数として取るため、これも動作しません。
RunDear.run -cacheFile s3n://scalability/genotype1_large_ind_large.txt#genotype.txt -cacheFile s3n://scalability/phenotype1_large_ind_large_1.txt#phenotype.txt s3n://scalability/output_1phe 33 280 4
amazon-s3 - Amazon EMR/S3 で出力を表示するには?
私は Amazon サービスを初めて使用し、Amazon EMR でアプリケーションを実行しようとしました。
そのために、次の手順に従いました。
1) --> create table を含む Hive スクリプトを作成し、いくつかのファイルを使用して Hive にデータ ステートメントをロードし、コマンドから * を選択します。
2) S3 バケットを作成しました。そして、オブジェクトを次のようにロードします: Hive スクリプト、テーブルにロードするファイル。
3) 次に、ジョブ フローを作成します (サンプルの Hive プログラムを使用)。入力、出力、およびスクリプト パス (s3n://bucketname/script.q、s3n://bucketname/input.txt、s3n://bucketname/out/ など) を指定します。out ディレクトリを作成しませんでした。自動的に作成されると思います。
4) その後、ジョブ フローが実行を開始し、しばらくすると、STARTING、BOOTSTRAPING、RUNNING、SHUT DOWN の状態が表示されます。
5) SHUT DOWN 状態の実行中に、SHUT DOWN の FAILES ステータスを表示して自動的に終了します。
次に、S3 で、out ディレクトリが表示されませんでした。出力を見るには?デーモン、ノードなどのディレクトリを見ました......
また、Amazon EMR で HDFS からのデータを表示する方法も教えてください。
hadoop - Elastic MapReduce の Mahout: Java ヒープ領域
Amazon Elastic MapReduce クラスターのコマンドラインから Mahout 0.6 を実行して、1500 個までの短いドキュメントをキャノピー クラスター化しようとしていますが、ジョブは「エラー: Java ヒープ スペース」メッセージで失敗し続けます。
ここや他の場所での以前の質問に基づいて、見つけられるすべてのメモリノブを上げました。
conf/hadoop-env.sh: すべてのヒープ スペースを、小さなインスタンスでは最大 1.5 GB、大きなインスタンスでは 4 GB に設定します。
conf/mapred-site.xml: mapred.{map, reduce}.child.java.opts プロパティを追加し、それらの値を -Xmx4000m に設定
$MAHOUT_HOME/bin/mahout: JAVA_HEAP_MAX を増やし、MAHOUT_HEAPSIZE を 6GB に設定します (大規模なインスタンスの場合)。
そして、問題は解決しません。私はこれに対してあまりにも長い間頭を悩ませてきました - 誰か提案はありますか?
完全なコマンドと出力は次のようになります (問題が軽減されることを期待して、Large インスタンスのクラスターで実行します)。
java - Amazon EMR での私の JobFlow (JobFlow は Hive と JDBC で構成されています) の実行パフォーマンス
さまざまなリンクやブログを読んだ後、Amazon Elastic Map Reduce でジョブをセットアップしました。現在、Hive と JDBC でタスクを持つ Java コードを実行しています。
ローカル マシン (単一クラスター) でプログラムをテストしました。エラーなく正常に実行されています。しかし、実行速度を上げるために。今、Amazon EMR でそのプログラムの実行を開始しましたが、単一のクラスター マシンと比較して実行が遅すぎます。中規模のインスタンスを 2 つ使用してプログラムを実行しています。
なぜそうなのですか?これについて教えてください。
ありがとう。
amazon-emr - Amazon Elastic Mapreduce での Job の実行速度関連
私のタスクは 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サーバーについてあまり詳しくないので、これについて教えてください。
ありがとう。
amazon-emr - Amazon Elastic Mapreduce インスタンスを既存の Amazon Elastic Mapreduce インスタンスに追加できますか?
私は Amazon サービスを初めて利用し、いくつかの問題に直面しています。
合計 3 つのインスタンスを使用して Amazon Elastic Mapreduce でジョブ フローを実行しているとします。ジョブ フローを実行しているときに、ジョブの実行に時間がかかっていることがわかりました。そのような場合、インスタンスを増やしてジョブを高速に実行できるように、さらにインスタンスを追加する必要があります。
私の質問は、そのようなインスタンスを既存のインスタンスに追加する方法は? 既存のインスタンスを終了して、より多くの数の新しいインスタンスを再度作成すると、時間がかかるためです。
とにかくそれを行うことはありますか?はいの場合は、私に提案してください。このすべてのタスクを CLI で実行しています。そのため、AWS マネジメント コンソールでの GUI 手順とともに、コマンドの回答も共有してください。
ありがとう。