如果nifi无法写入数据怎么办?

时间:2018-05-18 05:24:15

标签: apache-nifi

如果nifi使用PutHDFS或PutFile写入磁盘,并且它被杀死或进程发生故障,则在写入4个块之后,将从5个块开始进行nifi写入或重写整个文件再创建重复项?

2 个答案:

答案 0 :(得分:1)

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

如果节点在内容写入时正在写入内容,则没有任何内容被破坏,因为FlowFile Repo是NiFi的预写日志。当节点重新联机时,它首先检查是否可以恢复其状态“snapshot”和“.partial”文件。节点接受“snapshot”并删除“.partial”(如果存在),或者如果“snapshot”文件没有,则将“.partial”文件重命名为“snapshot”不存在。 系统检查点之间的时间段可在'nifi.properties'文件中配置,默认为2分钟。

因此,它将从第5个街区开始恢复。

感谢。

答案 1 :(得分:1)

当处理器执行时,在NiFi中执行交易......

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

在你的PutHDFS或PutFile的例子中,对HDFS或本地文件系统的写操作将是"执行的操作"以上部分。

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

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

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