0

私は一般的にSparkとHadoopタイプのものにまったく慣れていないので、これが非常に基本的な質問である場合はご容赦ください. 一連のタスクの最初のタスクを実行するために、いくつかのマシンのクラスターを利用するシステムを設計しようとしています。最初のタスクが生成する RDD で実行されるフォローアップ タスクは、すべて同じマシンで実行する必要があります。これは、プログラムの実行中に常にそのマシンである限り、クラスターの任意のマシンである可能性があります。

それが確実に起こるようにするにはどうすればよいですか?クラスター内の単一のマシンを予約して、常にそのマシンでフォローアップ タスクを実行できますか? もしそうなら、それはJavaでどのように見えますか? そうでない場合、これを達成する他の方法はありますか?

4

1 に答える 1

0

一般的に、いいえ。Spark は、Hadoop と同様に、使用可能なノードに多かれ少なかれ恣意的にタスクを分散するように設計されており、使用可能なすべてのノードがその目的に対して同等であると想定しています。それらのどれもが特別に扱われることはありません。

プロセスの後半を (多かれ少なかれ) 大規模な並列方式で実行したくない場合は、ジョブのその半分に並列処理フレームワークを使用したくないでしょう。おそらく、並列計算からのすべてのデータをどこかのディスクに書き込んでから、Spark RDD 変換としてではなく、ファイルを読み取ってそれらを処理する通常の Scala コードとして、データに対してジョブの後半を実行する必要があります。言うのが難しい。

すべての「フォローアップ タスク」を 1 つの特定の場所で実行する必要があるのはなぜですか? この必要性についてもっと説明できれば、誰かがあなたに良い提案をしてくれるかもしれません。

于 2014-10-19T01:31:42.513 に答える