より多くの画像ファイルを作成するためにJavaプログラムを実行する必要がある多くの画像があります-恥ずかしいほど類似したケースです。各入力ファイルは約 500 MB で、処理中に約 4 GB のメモリが必要で、実行には 30 秒から 2 分かかります。Java プログラムはマルチスレッド化されていますが、より多くのスレッドを使用するよりも、入力ファイルを並列化することでより多くの利益が得られます。1 日に数回プロセスを開始する必要があります (クラスターを手動でオン/オフにしたり、24 時間年中無休で支払いをしたりしたくありません)。
私はそこにあるさまざまなクラウドオプションに少し迷っています。
- Amazonラムダのシステム リソースが不足しています (メモリが不足しています)。
- Google Cloud DataFlowの場合、Cloud Storage バケットを使用するには、独自のパイプライン ソースを作成する必要があるようです。わかりましたが、それが適切な解決策でない場合は、時間を無駄にしたくありません (そうかもしれませんが、まだわかりません)。
- Amazonデータ パイプラインは、Google Cloud DataFlow と同等のようです。(完全を期すために編集で追加されました。 )
- Google Cloud Dataproc、これは map/reduce hadoop-y の状況ではありませんが、それでも機能する可能性があります。ただし、自分のクラスターを管理したくありません。
- 自動スケーリングを備えた Google コンピューティング エンジンまたは AWS で、マシンのコアごとにプロセスを開始するだけです。私からの管理は増えますが、学ぶべき API はありません。
- Microsoft Data Lakeはまだリリースされておらず、hadoop のように見えます。
- Microsoft Batchは非常に適しているようです (ただし、他のオプションにまだ興味があるので質問しています)。
これに適切な解決策を教えてくれる人はいますか?