Nifi 1.8.0 - 在使用fetchHDFS处理器时,Nifi的线程终止

3

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

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

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

  1. 它是否优雅地关闭与FS的所有连接?
  2. 由于所有线程都被终止,那么这些线程消耗的数据是否会丢失?
  3. 建议仅在线程卡住或流程进入冻结状态时使用终止选项吗?
1个回答

3
当您停止处理器时,它会告诉NiFi框架不再调度/执行该处理器,但可能已经有正在执行需要完成其工作的线程。通常这些线程应该完成并且您将看到活动线程消失,但有时候线程被阻塞(通常是在尝试在没有设置适当超时的情况下连接到某个地方的网络时),这个线程可能永远无法完成,因此需要终止它。
终止选项将向线程发出中断信号,然后对其进行隔离,使其退出池以进行进一步执行。然后,该线程可以在后台完成,或者如果它没有响应中断并且被阻塞,则可能一直保持在后台,直到下次重新启动NiFi。
在FetchHDFS案例中,假设它成功获取了数据,则很可能正在从HDFS读取文件,并且只需要几分钟即可完成,不需要使用终止。如果它从未获取数据并且被卡在连接到HDFS上,则应使用终止。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接