存储自定义NiFi处理器所需的数据

时间:2017-02-17 08:50:58

标签: apache-zookeeper apache-nifi

HDP-2.5.3.0,NiFi 1.1.1

我正在用NiFi编写自定义处理器。我需要存储多个字符串和时间戳字段,以便在所有/任何节点上都可以使用这些字段。

@Tags({ "example" })
@CapabilityDescription("Provide a description")
@SeeAlso({})
@ReadsAttributes({ @ReadsAttribute(attribute = "", description = "") })
@WritesAttributes({ @WritesAttribute(attribute = "", description = "") })
public class MyProcessor extends AbstractProcessor {
.
.
.
private List<PropertyDescriptor> descriptors;
private Set<Relationship> relationships;

 /* Persist these, probably, in ZK */
private Timestamp lastRunAt;
private String startPoint;
.
.
.

@Override
public void onTrigger(final ProcessContext context,final ProcessSession session) throws ProcessException {FlowFile flowFile = session.get();

/*Retrieve lastRunAt & startPoint and use*/
lastRunAt ;
startPoint ;
.
.
.
}
}

请注意,HDFS不是一个选项,因为NiFi可以在没有任何Hadoop安装的情况下运行。

有什么选择可以做到这一点 - 我想知道Zookeeper是否可以用来存储这些数据,因为它的尺寸很小而且NiFi是由ZK支持的。我试图找到使用Zookeeper API来保存这些字段的方法,徒劳无功。

1 个答案:

答案 0 :(得分:4)

NiFi揭示了一个名为&#34;州经理的概念&#34;处理器存储这样的信息。运行独立的NiFi时,有一个本地状态管理器,当运行集群时,有一个ZooKeeper状态管理器。

在这里查看开发人员指南:

https://nifi.apache.org/docs/nifi-docs/html/developer-guide.html#state_manager

此外,NiFi中的许多源处理器都使用了这一点,因此您可以在代码中查找示例:

https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-hadoop-bundle/nifi-hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/ListHDFS.java#L249

配置州提供商的管理员指南:

https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html#state_management