Nifi 1.8.0 - 使用 fetchHDFS 处理器时 nifi 中的线程终止
Nifi 1.8.0 - Thread termination in nifi while using fetchHDFS processor
我正在尝试从 HDFS 中提取一些数据。我是 运行 listHDFS 和 fetchHDFS 处理器。
当我停止 fetchHDFS 处理器时,即使在停止处理器后仍有许多活动线程。为了终止这些线程,我使用了 "terminate" 选项。
只是想知道终止选项的工作原理。
- 它是否优雅地关闭了与 FS 的所有连接?
- 由于所有线程都已终止,我是否会丢失这些线程消耗的数据?
- 是否只有在线程卡住或流程进入冻结状态时才建议终止选项?
当您停止处理器时,它会告诉 NiFi 框架不再 schedule/execute 处理器,但可能已经有线程在执行,需要完成它们正在做的事情。通常这些线程应该完成并且您会看到活动线程消失,但有时线程会被阻塞(通常是在尝试在某处建立网络连接而没有设置适当的超时时)并且该线程可能永远不会完成,因此需要终止.
终止选项将向线程发出中断,然后将其隔离,这会将其从池中取出以供进一步执行。然后线程可能会在后台完成,或者如果它没有响应中断并被阻塞,那么它可能会停留在后台直到下一次重新启动 NiFi。
在 FetchHDFS 案例中,假设它已成功获取数据,它很可能正在从 HDFS 读取文件,只需要几分钟即可完成,不需要使用终止。如果它从不获取数据并且一直连接到 HDFS,那么您将使用终止。
我正在尝试从 HDFS 中提取一些数据。我是 运行 listHDFS 和 fetchHDFS 处理器。
当我停止 fetchHDFS 处理器时,即使在停止处理器后仍有许多活动线程。为了终止这些线程,我使用了 "terminate" 选项。
只是想知道终止选项的工作原理。
- 它是否优雅地关闭了与 FS 的所有连接?
- 由于所有线程都已终止,我是否会丢失这些线程消耗的数据?
- 是否只有在线程卡住或流程进入冻结状态时才建议终止选项?
当您停止处理器时,它会告诉 NiFi 框架不再 schedule/execute 处理器,但可能已经有线程在执行,需要完成它们正在做的事情。通常这些线程应该完成并且您会看到活动线程消失,但有时线程会被阻塞(通常是在尝试在某处建立网络连接而没有设置适当的超时时)并且该线程可能永远不会完成,因此需要终止.
终止选项将向线程发出中断,然后将其隔离,这会将其从池中取出以供进一步执行。然后线程可能会在后台完成,或者如果它没有响应中断并被阻塞,那么它可能会停留在后台直到下一次重新启动 NiFi。
在 FetchHDFS 案例中,假设它已成功获取数据,它很可能正在从 HDFS 读取文件,只需要几分钟即可完成,不需要使用终止。如果它从不获取数据并且一直连接到 HDFS,那么您将使用终止。