首页 > 解决方案 > 如果nifi写入数据失败怎么办?

问题描述

如果 nifi 正在使用 PutHDFS 或 PutFile 写入磁盘,并且在写入 10 个块中的 4 个块后,它被杀死或进程关闭。恢复后,nifi 会从第 5 个块开始写入还是重新写入整个文件以创建重复项?

标签: apache-nifi

解决方案


当处理器执行时,NiFi 中正在执行事务......

  • 会话开始
  • 获取流文件
  • 执行的操作
  • 流文件被传输或删除
  • 会话已提交

在您的 PutHDFS 或 PutFile 示例中,对 HDFS 或本地文件系统的写入操作将是上面的“执行的操作”部分。

如果 NiFi 在会话提交之前的那一点崩溃,那么当 NiFi 重新启动时,流文件仍将位于同一队列中,处理器将尝试再次处理它。

外部系统(即本例中的 HDFS 或本地文件系统)的状态取决于该外部系统如何处理写入数据。如果外部系统有一些事务机制,那么如果在外部系统中提交事务之前发生崩溃,则可能看不到任何数据,但在文件系统的情况下,可能存在部分写入的文件。

在 HDFS 处理器中,它会写入一个名称以“.”开头的临时文件。所以很可能该文件仍保留在 HDFS 中,这取决于处理器如何处理具有相同名称的现有文件。通常处理器中有一个策略属性,您可以在其中选择现有文件的“覆盖”或“失败”等选项。


推荐阅读