2017-02-17 4 views
1

HDP-2.5.3.0, NiFi 1.1.1맞춤형 NiFi 프로세서에 필요한 데이터 저장

NiFi에 맞춤 프로세서를 작성하고 있습니다. 어딘가에 저장해야하는 여러 String 및 Timestamp 필드가있어 모든/모든 노드에서 사용할 수 있습니다.

@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 ; 
. 
. 
. 
} 
} 

NiFi가 Hadoop 설치없이 실행될 수 있으므로 HDFS는 옵션이 아닙니다.

이 작업을 수행 할 수있는 옵션은 무엇입니까? Zookeeper가 크기가 작고 ZFi가 지원되므로이 데이터를 저장할 수 있는지 궁금합니다. Zookeeper API를 사용하여 이러한 필드를 유지하는 방법을 찾지 않으려 고 노력했습니다.

답변

3

NiFi는 이와 같은 정보를 저장하는 프로세서에 "상태 관리자"라는 개념을 제공합니다. 독립형 NiFi를 실행하는 경우 로컬 상태 관리자가 있으며 클러스터 된 상태에서 ZooKeeper 상태 관리자가 있습니다.

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/developer-guide.html#state_manager

이 NiFi의 소스 프로세서의 많은 그래서 당신은 코드에서 예를 찾을 수있는이 사용합니다

여기에 개발자 가이드를 살펴보세요

: 상태 공급자의 구성

관리 가이드