2017-04-14 2 views
1

분산 모드에서 CP3.2를 실행 중이고 "tasks.max": "1"로 정의 된 커넥터 중 일부가 "UNASSIGNED"상태의 작업을 가지고 있습니다. 작업자에게 할당 된 메모리를 늘리고 작업자를 다시 시작하면 문제가 해결되거나 한 명 더 추가 작업자가이를 해결했습니다.커넥터의 작업이 할당되지 않은 상태로 전환되는 시점은 언제입니까?

"tasks.max"> 1에 "UNASSIGNED"상태의 작업이 하나 있지만 하나의 작업 만 정의하면 "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 * 상태로 이동합니다. 어쨌든, 거기에 프레임 워크로 인해 의도하지 않은 상태 천이가 있는지 알아 내려면 작업자에 대해 실행하려고 시도한 것에 대해 더 많은 정보가 필요합니다. –