Nifi 1.8.0 - завершение потока в nifi при использовании процессора fetchHDFS - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь извлечь некоторые данные из HDFS.Для этого я использую listHDFS и процессор fetchHDFS.

Когда я остановил процессор fetchHDFS, даже после остановки процессора было несколько активных потоков.Чтобы уничтожить эти потоки, я использовал опцию «terminate».

Просто хотел узнать, как работает опция terminate.

  1. Изящно ли закрыты все соединения с FS?
  2. Поскольку все потоки уничтожены, могу ли я потерять данные, которые были использованы этими потоками?
  3. Рекомендуется ли использовать вариант завершения только тогда, когда потоки застряли или поток переходит в замороженное состояние?

1 Ответ

0 голосов
/ 27 ноября 2018

Когда вы останавливаете процессор, он сообщает платформе NiFi больше не планировать / выполнять процессор, но, возможно, уже есть выполняющиеся потоки, которые должны завершить то, что они делали.Обычно эти потоки должны завершаться, и вы увидите, что активные потоки уходят, но иногда поток блокируется (обычно при попытке установить сетевое соединение где-то без установки правильных тайм-аутов), и этот поток может никогда не завершиться, и поэтому его необходимо прервать.,

Параметр terminate создает прерывание для потока, а затем помещает его в карантин, который выводит его из пула для дальнейшего выполнения.Затем поток может завершиться в фоновом режиме или, если он не ответил на прерывание и заблокирован, он может остаться в фоновом режиме до следующего перезапуска NiFi.

В случае FetchHDFS, если предположить, что это былопри успешном извлечении данных, это было, скорее всего, в середине чтения файла из HDFS, и для его завершения требуется всего несколько минут, и не нужно использовать завершение.Если он никогда не извлекал данные и зависал при подключении к HDFS, вы должны использовать терминатор.

...