Hadoopのマップタスクでメモリの静的データ(RAMルーゼンインデックス)を共有したいのですか?同じJVMを複数のマップ/リダクションタスクで共有する方法はありますか?複数のマップタスクを1つのJVMで実行できますか?
答えて
ジョブでは、ジョブ構成mapred.job.reuse.jvm.num.tasksを指定することで、タスクJVMを再利用することができます。値が1(デフォルト)の場合、JVMは再利用されません(つまり、JVMごとに1つのタスク)。 -1の場合、(同じジョブの)JVMが実行できるタスクの数に制限はありません。 apiを使って1より大きい値を指定することもできます。 $HADOOP_HOME/conf/mapred-site.xml
で
#
は、JVMは、制限なしのために(デフォルトは1
である)、再利用、または-1
に設定する回数を指定する回数に設定することができ
<property>
<name>mapred.job.reuse.jvm.num.tasks</name>
<value>#</value>
</property>
次のプロパティを追加再利用量。私はあなたがここで説明するものを達成するためにJVMを再利用して静的オブジェクトを使用して上に行く
恥知らずなプラグ
: http://chasebradford.wordpress.com/2011/02/05/distributed-cache-static-objects-and-fast-setup/
別のオプション、より複雑なものの、読み出し専用メモリと分散キャッシュを使用することですマップされたファイル。そうすれば、JVMプロセス全体でリソースを共有することもできます。
複数のマップタスク(Hadoop)が静的なデータ構造を共有するための簡単な方法はありません。
これは実際に現在のMap Reduceモデルの既知の問題です。現在の実装では、マップタスク全体で静的なデータを共有しない理由は、Hadoopが高い信頼性を持つように設計されているためです。その結果、タスクが失敗した場合、タスクは自身のJVMのみをクラッシュさせます。他のJVMの実行には影響しません。
私は現在、単一のJVMの作業を複数のコアに分散できるプロトタイプを作成しています(基本的に、マルチコアを利用するためには1つのJVMが必要です)。このようにして、CPU使用率を損なうことなくメモリデータ構造の重複を減らすことができます。次のステップは、1つのJVM内で複数のMapタスクを実行できるHadoopのバージョンを開発することです。これはまさにあなたが求めているものです。
ここに興味深い記事 https://issues.apache.org/jira/browse/MAPREDUCE-2123
- 1. 複数のPCで1つのjvmを実行することはできますか?
- 2. 1つのコマンドで複数のサービスをdocker-composeで実行できますか?
- 3. 1つのコマンドで複数の制御ファイルを実行できますか?
- 4. 1つのWebサイトで複数のDjangoプロジェクトを実行できますか?
- 5. 1 LAMPで複数のアプリを実行できますか?
- 6. 複数のクエリまたは1つで実行できますか?
- 7. 1つのJVMで複数のプロセスを処理する
- 8. TortoiseHgのコンソールで複数のコマンドを1行で実行できますか?
- 9. 複数のlaravel alter tableの移行クエリを1つで実行しますか?
- 10. 1つのサブドメインで複数のNodeJsサーバーを実行できません
- 11. コードネイターで1つずつ実行できない複数のクエリを実行しています
- 12. JBoss ASのJVM内でMainクラスを実行できますか?
- 13. 複数のコマンドをOracleの1つのExecuteScalarで実行する
- 14. VSTSビルドエージェント - 1台のコンピュータで複数のビルドエージェントを実行できますか?
- 15. 複数のステートメントを1つのSQLiteで実行する
- 16. PhpStorm - 1つのボタンで複数のコマンドを実行する
- 17. 1つのクエリで複数のクエリを実行する方法
- 18. 複数のテンソルフローコードを1つのGPUで実行する方法
- 19. Rethinkdbが1つのクエリで複数のavgを実行する
- 20. 複数のクエリを1つのPSで実行する
- 21. 複数のルートアプリケーションを1つのページで実行する方法
- 22. 複数のDjangoアプリケーションテストを1つのコマンドで実行する
- 23. 1つのコマンドでFFMPEG複数のオーバーレイコマンドを実行する
- 24. 複数のスプレッドシートに1つのボタンで複数のVBAを実行する
- 25. VS2010の1つのファイルでstylecopを実行できますか?
- 26. Sqoopは1つのマップタスク(-m 1)でしか動作しません。
- 27. 1つのApp - >複数のDockerインスタンスを1つのEc2で実行
- 28. 複数のクエリを1つのPHP mysqli_query関数で実行しています
- 29. アクセスデータベーステーブルの1つのクエリで複数の更新を実行
- 30. 複数行の1行をPythonで置き換えますか?
おかげで、もう一つ質問があります。これらのタスクはいくつかのクラスローダーも共有するので、すべての静的リソースは一度だけロードされますか? (あるいは、Tomcatのように動作して、JVMを共有する理由はほとんどありません...) – yura
タスクが完了すると、JVMはクリアされます。このパラメータは、jvmインスタンス化が非常に高価であるため、「長期実行」ではないジョブの実行時間を向上させます。タスクインスタンスに対してすべてのリソースを共有することはできませんでした。 –