nifi写入数据失败怎么办?

What if nifi fails to write data?

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

NiFi 通过拍摄快照在各自的 FlowFile Repo 中记录当时每个节点上发生的事情,从而防止硬件和系统故障。

如果节点在发生故障时正在写入内容,则没有任何损坏,因为 FlowFile Repo 是 NiFi 的预写 Log.When 节点重新上线,它可以通过以下方式恢复其状态首先检查 "snapshot" 和“.partial” files.The 节点要么接受 "snapshot" 并删除“.partial”(如果存在),要么将“.partial”文件重命名为"snapshot" 如果 "snapshot" 文件不存在。 系统检查点之间的时间间隔可在 'nifi.properties' 文件中配置,默认为 2 分钟。

因此,它将从第5块开始恢复。

谢谢。

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

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

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

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

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

在 HDFS 处理器中,它写入一个名称以“.”开头的临时文件。因此该文件很可能仍保留在 HDFS 中,这取决于处理器如何处理具有相同名称的现有文件。通常在处理器中有一个策略 属性,您可以在其中 select 在现有文件上选择 "overwrite" 或 "fail"。