問題タブ [gridgain]
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.
java - アプリケーションをグリッド/クラスター対応にするための Java の最適なライブラリは何ですか?
これは、負荷を分散し、追加の冗長性を提供する目的で、サーバーのクラスターでアプリケーションを実行する機能です。
GridGainのプレゼンテーションを見て、非常に感銘を受けました。
他の人を知っていますか?
java - Gridgain エグゼキュータ サービス
GridGain の GridExecutorService を使用してリモートでジョブを実行することと、@Gridify アノテーションを使用することの利点は何ですか?
java.lang.concurrent.ExecutorService のインスタンスをクラスに渡すことができ、グリッド フレームワークに依存しませんが、機能が失われますか?
java - Java ファイル ハンドルの解放
Gridgain パッケージ上で実行されている Java で書かれたかなり大規模で複雑なアプリケーションがあります。私が抱えている問題は、すべてのリクエストが開始される前に、このアプリケーションが約 1 日間リクエストを処理し続け、タイプ java.nio.channels.ClosedByInterruptException の例外が発生することです。
私の推測では、アプリケーションがファイル ハンドルを解放しておらず、1 日連続して使用した後、ファイル ハンドルがなくなり、リクエストの処理を続行できなくなります (各リクエストには、各グリッド ノードから複数のファイルを読み取る必要があります)。ファイル IO 操作のほとんどを、このようなクラスでラップしました。
問題は、この設計がファイル ハンドルを明示的に解放しないことだと思います。私の提案する解決策は、このようなファイナライズ メソッドを追加することです。
これは明示的にこれを行います。(最終的に)問題は、これが何らかの影響を与える可能性があるかどうかです。java.io.BufferedReader などのクラスには、この種の問題に対処するメカニズムが既に備わっているのでしょうか?
編集:また、これが実際に問題であるかどうかを確認する方法も非常に高く評価されています...つまり、実行中のJVMにクエリを実行し、そのファイルハンドルの割り当てについて尋ねる方法はありますか?
java - Java Gridgain アプリケーションは、ストレス テストの 1 日後に失敗し始めます
そのため、gridgain の上で実行されているアプリケーションがあり、約 12 ~ 24 時間のストレス テストで問題なく動作し始めました。この期間が過ぎると、アプリケーションは突然、例外 java.nio.channels.ClosedByInterruptException ですべてのクエリに応答し始めます (完全なスタック トレースはhttp://pastie.org/664717にあります)。
失敗している方法は(@stephencフィードバックを使用するように編集されています)
呼び出し元の関数がオブジェクトを正しく閉じる
アプリケーションは基本的に分散ファイル パーサーとして機能するため、これらのタイプの操作を多数実行します (通常、ノードごとのクエリごとに約 10 のチャネルを開きます)。一定期間が経過すると、ファイルを開くことができなくなったようです。なぜこれが起こっているのかを説明するのに途方に暮れています.それを下げて修正します。ファイルハンドルの枯渇に関連している可能性がある場合は、確実に見つけるためのヒントを聞きたいです...つまり、実行中にJVMを照会するか、Linuxコマンドラインツールを使用して、現在開いているハンドルに関する詳細情報を見つけます.
更新:コマンド ライン ツールを使用して lsof の出力を調査しましたが、ファイル ハンドルが開いたままになっているという証拠は確認できませんでした... グリッド内の各ノードには、開いたファイルの非常に安定したプロファイルがあります。上記のコードが実行されると変化が見られます...しかし、常に安定した数の開いているファイルに戻ります。
この質問に関連: Java ファイル ハンドルの解放
java - コンピューティンググリッドプラットフォームを構築または購入する方が良いですか?
文字列照合のために、プロセッサを集中的に使用するブルートフォース処理を実行したいと考えています。プロトタイプをマルチスレッド環境で実行し、パフォーマンスを、いくつかのノード(これもマルチスレッド)でGridgainを使用した実装と比較しました。
私が観察したパフォーマンスは、Gridgain実装のパフォーマンスがマルチスレッド実装よりも遅いことでした。私のグリッドゲインの実装に欠陥があった可能性がありますが、それは単なるプロトタイプであり、結果は示唆的なものだと思いました。だから私の質問はこれです:
特定のグリッドプラットフォーム(ホストされる場合はhadoop、gridgain、またはEC2-他の提案を歓迎します)の実装を学習して構築する必要があることの利点は何ですか?はるかに浅い軽量のコンピューティンググリッドプラットフォームをかなり簡単に組み合わせることができます学習曲線?...つまり、実装する価値のある/トリッキーなこれらのクラウド/グリッドプラットフォームで無料で何が得られるのでしょうか?
(データグリッドは必要ありませんのでご注意ください)
乾杯、
-ジェームズ
(ps必要に応じて、このコミュニティwikiを作成してください)
parallel-processing - GridGain を使用してグリッド クラスタに接続する
GridGain がマルチキャストを介して他のクライアントに接続することはすぐに理解できますが、ローカル ネットワーク外の接続を受け入れるように GridGain を構成する方法はありますか? また、通信の暗号化も有効にする方法はありますか?
eclipse - 以前のバージョンの Scala で Eclipse Scala プラグインを実行する
scala プラグインは、バージョン 2.8 の Scala を自動的にダウンロードするようです。現在 Scala 2.7.7 でのみ動作するGridgain 3.0-betaを試してみたいと思います。Gridgain 3.0-beta はすでに scala-compiler-2.7.7.jar と scala-library-2.7.7.jar を提供しているため、Eclipse Scala Plugin を取得して Scala 2.7.7 にコンパイルすることは可能ですか?
プロジェクトのビルド パスから Scala Library 2.8 を削除して、両方の 2.7 jar を追加しようとしましたが、うまくいかないようでした。
Netbeans に切り替えた場合、これはより簡単になりますか?
scala - 1台のマシン上のマルチスレッドアプリケーションよりも遅いGridGainアプリケーション
最初のGridGainアプリケーションを実装しましたが、期待したパフォーマンスの向上が得られません。悲しいことに、それは遅いです。より速くできるように、実装を改善するための助けが欲しいです。
私のアプリケーションの要点は、関数の評価ごとに数分の1秒かかる数百万の可能なパラメーターを使用して力ずくの最適化を行っていることです。私はこれを、数百万の反復をいくつかのグループに分割することによって実装しました。各グループは1つのジョブとして実行されます。
関連するコードは以下のとおりです。関数maxAppliedRangeは、範囲xのすべての値に対して関数fooを呼び出し、最大値を返します。結果は、各ジョブで検出されたすべての最大値の最大値になります。
私のコードは、1台のマシンでマルチスレッド実行するか、上記のコードを使用して複数のGridGainノードを使用するかを選択できます。gridgainバージョンを実行すると、最初は高速になるように見えますが、その後は常にいくつかのことが起こります。
- (別のマシン上の)ノードの1つがハートビートを逃し、メインコンピューター上のノードがそのノードをあきらめて、ジョブの実行を2回開始します。
- ハートビートを逃したノードは、同じ仕事を続けます。これで、2つのノードが同じことを実行します。
- 最終的には、すべてのジョブがメインマシンで実行されますが、一部のジョブは後で開始されるため、すべてが完了するまでに時間がかかります。
- ノードがタイムアウトし、タスク全体が失敗したために、GridGainによって例外がスローされることがあります。
- イライラします。
多くのジョブを持つように設定してみたので、1つが失敗してもそれほど大きな問題にはなりませんが、これを行うと、各ノードで多くのジョブが実行されることになります。これにより、各マシンに非常に大きな負担がかかり、ノードがハートビートを見逃す可能性が高くなり、すべてがより速く下り坂になります。CPUごとに1つのジョブがある場合、1つのジョブが失敗すると、別のノードを最初からやり直す必要があります。いずれにせよ、私は勝つことができません。
私が最もうまくいくと思うのは、2つのことができるかどうかです。
- ハートビートのタイムアウトを増やす
- 一度に1つのジョブのみを実行するように、各ノードをスロットルします。
これができれば、自分の仕事を多くの仕事に分割することができます。各ノードは一度に1つのジョブを実行し、マシンが過負荷になってハートビートを逃すことはありません。ジョブが失敗した場合、ほとんど作業が失われず、回復は迅速になります。
誰かがこれを行う方法を教えてもらえますか?私はここで何をすべきですか?
scala - GridGain/Scala-既存のジョブ内でジョブを生成する
概念実証として、この非常にシンプルなTwitterフレンズクローラーを作成しています。これが何をするかです:
- Twitterアカウント「twitter-user-1」のCrawlJobを実行する
- 「twitter-user-1」の友達をすべて探す
- 「twitter-user-1」の友達全員にCrawlJobを実行する
これまでの私のコードは次のようになります。
私はすべてのTwitterインタラクションのためにJavaサービスを準備しています。既存のジョブ内に新しいジョブを作成し、それを元のタスクに関連付ける方法を理解するために、いくつかの例が必要です。
ありがとう| スリランガン
mapreduce - マスター (送信側) ノードの Gridgain フェイルオーバー
私はバッチ処理の問題に取り組んでいます。ソリューションは、障害のあるハードウェアを処理する必要があります。
マスター ノード (タスクの実行を開始する) と、ジョブを実行するワーカー ノードがあります。ワーカー ノードのフェイルオーバーのしくみは知っていますが、マスター ノードのフェイルオーバーに関する情報は見つかりませんでした。タスクを開始したマスター ノードが失敗するたびに、タスク全体がキャンセルされます。
タスクの処理を終了する方法はありますか?
マスターノードのフェイルオーバーを実装する最良の方法を提案できますか?
よろしく、クバ