NiFi 의 HA 는 이 글을 쓰는 현재 (2021.1.15) 까지 지원이 되지 않음

그럼에도 불구하고 HA 를 어떻게 다르게 구현해볼 수 없을까 하고 정보를 찾아봄

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 


NiFi 내부에서 데이터를 가공하는 부분이 많고 Flow 가 많으면

중간에 Disk 에 저장하는 데이터들(중간산출 데이터라고 하자)이 생김.

천재지변, Disk connection 끊김 등 다양한 이유로 물리 서버가 사용불가능한 상태가 되면

Disk 에 저장된 중간 산출 데이터는 무조건 잃어버리게 됨.

 

NiFi 는 서버가 사용불가능하게 되어도 repo 데이터만 있다면 복구가 가능

하지만 자체적으로 데이터를 이중화해서 저장한다거나 자동으로 복구하는 기능은 없음.

따라서 데이터(repo, flow.xml.gz 등) 가 살아있도록 하기 위해,

해당 데이터들을 HA가 되는 저장소, 예를 들면 HDFS 같은 분산 환경 저장소에 저장을 하고

failover 시 활용할 수 있도록 하면 HA 를 비슷하게나마 따라할 수 있을 것.

위에 말한대로 중간산출 데이터를 Kafka, HDFS 등에 보관하면 어떨까 생각했음

근데 중간산출 데이터는 오래 저장되어야하는 성격의 데이터가 아니고

모든 중간산출 데이터를 HDFS 에 넣으면 IO 시간이 많이 걸릴 것 같음

 

그래서 가공하는 중간에 Kafka, HDFS 등에 백업을 하는게 어떨까 함.

만약 NiFi가 
"데이터읽기 - 1차가공 - 2차가공 - 3차가공 - 데이터쓰기"
의 flow를 갖는다면, 
"데이터읽기 - 1차가공 - 백업 - 2차가공 - 백업 - 3차가공 - 데이터쓰기"
이런식으로

 

그냥 생각해 본 것

 

 

참고

cwiki.apache.org/confluence/display/NIFI/High+Availability+Processing

justkook.blogspot.com/2018/02/nifi-clustering-hahigh-availability.html

 

 

+ Recent posts