# Remote Engineでタスクを並列実行

Talend Remote Engineはこれまで、さまざまなタスクの並列実行が可能でした。v2.12.0以降では、同一タスクの同時実行もサポートするようになりました。

つまり、v2.12.0以降では1台のRemote Engineで同じタスクの複数のインスタンスを並列実行できます。

このセクションは、1台のRemote Engine ( Remote Engineクラスターの一部であるかどうかに関わらず)の並列実行機能を管理するための設定について説明しています。

## 始める前に

* エンジンの最新バージョンがインストールされていることをご確認ください。
* 特に1台のRemote Engineでタスクの並列実行を有効させたい場合は、タスクがスレッドセーフであるよう、つまり並列実行に適応しているように、ジョブデザインと実装に並列プログラミング技術が適用されていることを確認します。たとえば、並列実行が共有リソースに一貫してアクセスできることが必要です。

## 手順

1. エンジンを停止します。
2. &lt;RemoteEngineInstallationDirectory&gt;/etcフォルダーに移動します。
3. org.talend.ipaas.rt.deployment.agent.cfgファイルを開き、次のようにパラメーターを編集します:

   次のテーブルは、org.talend.ipaas.rt.deployment.agent.cfgファイルで編集可能なパラメータを示しています次のテーブルは、org.talend.ipaas.rt.deployment.agent.cfgorg.talend.ipaas.rt.deployment.agent.cfgファイルで編集可能なパラメータを示しています
   | 同一タスクの並列実行 | <ul> <li>このサポートを有効にする必要がある場合は、次の行が存在することを確認します。                                        <pre><code><pre><code><code>job.deployment.direct=true</code></code></pre></code></pre><p>Remote Engine v2.12.4以降では、ダイレクトデプロイメントがエンジンが使用するデフォルトかつ唯一のデプロイメントになりました。この<span>job.deployment.direct</span>パラメーターは設定する必要がなくなったため、削除されました。</p><div>同時に、最後にこのエンジン設定が活用されるよう(つまり次のいずれかの操作が実行されるよう)、このタスクの並列実行を許可する必要があります。<ul> <li><span>Talend Management Console</span>でタスクの設定を行う際に、<span>[Allow parallel execution of this task] (このタスクの並列実行を許可)</span>オプションを選択します。</li> <li>API経由でタスクを作成またはアップデートするリクエストを発行する際に、<span>parallelExecutionAllowed</span>パラメーターを<kbd>true</kbd>に設定します。</li> </ul></div>それ以外の場合は、このエンジン設定にかかわらず並列実行は適用されません。</li> </ul> |
   | --- | --- |
   | 最大同時実行数 | デフォルトでは、実行するタスクが異なる場合も同一の場合も、並列実行が3つのみ許可されます。<br><br><ul> <li>十分なリソースがあれば、この制限を拡張し、異なるタスクを必要な数だけ並列実行できます。<pre><code><pre><code><code>max.deployed.flows=3</code></code></pre></code></pre>同時タスク制限数を<kbd>0</kbd>に設定すると、リソースが十分にある限り、Remote Engineで並行して実行できるタスクの数は無制限になります。 </li> </ul> |
   | Remote Engineクラスターでは | Remote Engineがクラスターに追加されると、同一または異なるタスクの並列実行はデフォルトでクラスター全体に分散されます。<br><br>ただし、実行するタスクが同一である場合は、次のパラメーターをtrueに設定することで1台のRemote Engineで並列実行を向上できます。<br><br>```<br>cluster.engine.same.task.parallel.run=true<br>``` |
4. エンジンを再起動します。

## タスクの結果

Talend Management Consoleで再び[Available] (利用可能)になったら、Talend Remote Engineでタスクの実行を開始できます。

トラブルシューティング: タスクのスレッドが複数デプロイされている場合、あるスレッドが誤って他のスレッドを上書きしてしまい、全体のデプロイメントが失敗してしまうことがあります。

この問題を修復するためには、次の操作を実行します。

1. org.talend.ipaas.rt.deployment.agent.cfgファイルを開きます。
2. このファイルに次のパラメーターを追加します。
   ```
   lock.same.task.jobs.parallel.deployment=true
   ```
3. ファイルを保存し、お使いのエンジンを再起動します。

同じジョブの他の並列スレッドによって上書きされないよう、このパラメーターは展開中のスレッドをロックします。