分散ジョブスケジューリング、管理、およびレポート
-
19-09-2019 - |
質問
私は最近、遊びをしました Hadoop MapReduceのジョブのスケジューリング、管理、および報告に感銘を受けました。新しいジョブの配布と実行を非常にシームレスにしているようで、開発者はジョブの実装に集中できるようになります。
MapReduceの問題として簡単に表現されないジョブの分散した実行のために、Javaドメインに何かが存在するかどうか疑問に思っていますか?例えば:
タスクの調整と同期を必要とするジョブ。たとえば、タスクの連続的な実行を伴う場合がありますが、いくつかのタスクを同時に実行することは可能です。
.-- B --. .--A --| |--. | '-- C --' | Start --| |-- Done | | '--D -------------'
配布したいが、削減するための出力を提供しないCPU集中タスク - たとえば、画像変換/サイズ変更。
それでは、このような分散コンピューティング環境を提供するJavaフレームワーク/プラットフォームはありますか?または、この種のことはHadoopを使用して受け入れられる/達成可能ですか?もしそうなら、これらの種類の仕事にパターン/ガイドラインはありますか?
解決
私はそれ以来見つけました スプリングバッチ と スプリングバッチ統合 私の要件の多くに対処しているようです。私がどのように乗っているかをお知らせします。
他のヒント
を見てみましょう 石英. 。ジョブをリモートで管理したり、いくつかのマシンをクラスタリングしてジョブを実行するなどのものをサポートしていると思います。
CPU集中タスク用のワークフローエンジンを探していると思います(「科学的ワークフロー」も知っています。 http://www.extreme.indiana.edu/swf-survey)。しかし、私はあなたがそれをどのように分配したいのかわかりません。通常、すべてのワークフローエンジンには「単一の障害点」があります。
私は、かなりの数の問題が地図のreduceの問題として表現できると信じています。
構造に合わせて変更できない問題について executorservice. 。しかし、それは1つのJVMに制限され、非常に低いレベルになります。ただし、簡単な調整と同期が可能になります。
プロアクティブスケジューラ 要件、特にタスクの調整で言及した複雑なワークフローに合っているようです。オープンソースとJavaベースです。それを使用して、Hadoopジョブ、スクリプト、Javaコードを実行するために使用できます。
免責事項:私はのために働いています 会社 その背後
試す redisson フレームワーク。実行してスケジュールするための簡単なAPIを提供します java.util.concurrent.Callable
と java.lang.Runnable
タスク。分散に関するドキュメントは次のとおりです 執行者サービス と スケジューラサービス