Nifi 1.8.0 - 使用 fetchHDFS 处理器时 nifi 中的线程终止

Nifi 1.8.0 - Thread termination in nifi while using fetchHDFS processor

我正在尝试从 HDFS 中提取一些数据。我是 运行 listHDFS 和 fetchHDFS 处理器。

当我停止 fetchHDFS 处理器时,即使在停止处理器后仍有许多活动线程。为了终止这些线程,我使用了 "terminate" 选项。

只是想知道终止选项的工作原理。

  1. 它是否优雅地关闭了与 FS 的所有连接?
  2. 由于所有线程都已终止,我是否会丢失这些线程消耗的数据?
  3. 是否只有在线程卡住或流程进入冻结状态时才建议终止选项?

当您停止处理器时,它会告诉 NiFi 框架不再 schedule/execute 处理器,但可能已经有线程在执行,需要完成它们正在做的事情。通常这些线程应该完成并且您会看到活动线程消失,但有时线程会被阻塞(通常是在尝试在某处建立网络连接而没有设置适当的超时时)并且该线程可能永远不会完成,因此需要终止.

终止选项将向线程发出中断,然后将其隔离,这会将其从池中取出以供进一步执行。然后线程可能会在后台完成,或者如果它没有响应中断并被阻塞,那么它可能会停留在后台直到下一次重新启动 NiFi。

在 FetchHDFS 案例中,假设它已成功获取数据,它很可能正在从 HDFS 读取文件,只需要几分钟即可完成,不需要使用终止。如果它从不获取数据并且一直连接到 HDFS,那么您将使用终止。