2017-04-14 6 views
1

私はCP3.2を分散モードで実行しており、 "tasks.max": "1"で定義されているコネクタの中にはタスクが "UNASSIGNED"状態です。私は作業者に割り当てられたメモリを増やして、作業者を再起動して問題を解決したり、もう1人追加することでこれを解決しました。コネクタ内のタスクは、いつ割り当てられていない状態になりますか?

"tasks.max"> 1のタスクが「UNASSIGNED」の状態になっていても、1つのタスクしか定義していない場合は、「RUNNING」状態にする必要があります。

しかし、私はすべての条件が "UNASSIGNED"状態になり、どのようにこれを解決するか(実行させる)ということを理解する必要があります。

よろしく、

Aradhya

答えて

1

タスク成功シャットダウンがこのコネクタのタスクを実行するために割り当てられている作業員のタスクに発生した場合UNASSIGNED状態になります。これは、このコネクタがスポーンする予定のタスクの総数に関係なく(tasks.maxプロパティ)です。 onShutdownメソッドへの呼び出しをAbstractHerderに記載してコード内で追跡することができます。 UNASSIGNED状態に移行するには、障害が発生していないか、実行中のワーカータスクによって例外がスローされ、通常のシャットダウンが発生している必要があります。

通常の繰り返しループの開始時にコネクタタスクが停止している可能性がありますか?もう少し情報を与えることができますか?ソースかシンクですか?

+0

作業者が起動していても、シンクコネクタがUNASSIGNED状態になることがあります。私は少ない労働者のマシンでより多くのコネクタを実行するように感じることができますこれも。現在、私は3つのワーカーマシンを持っていて、6〜7つのタスクを実行しています。総タスクを10以上に増やすと、UNASSIGNED状態が確認できました。 – Renukaradhya

+0

もう一度、私たちがどんなタイプのコネクタについて話しているか知っておくと良いでしょう。また、このトピックでは、従業員が何であるかについて具体的に役立つでしょう。あなたの記述に基づいて、各ノードで開始されたJavaプロセスを* worker *として参照することを理解します。それは正しいです。しかし、それはワーカー・タスクとは異なります。ワーカー・タスクは、特定のワーカー*のタスク実行者に送信される実行可能なタスクです。現在、このexecutorはスレッドをキャッシュしていますが、無制限です。これは、作業者の現在の負荷に関係なく、スレッドがコネクタのタスクを実行することを意味します。 –

+0

また、上記のように、起動時にシャットダウンが正しく通知された場合、* RUNNING *状態になる前に* UNASSIGNED *状態に移行します。いずれにしても、フレームワークのために意図しない状態遷移があるかどうかを判断するには、作業者に対して何を実行しようとしているかについての詳細情報が必要です。 –

関連する問題