1. 개요
추후 회사 프로젝트에 대비해 NiFi 사용법에 대해 공부중이다.
공부하면서 익힌 부분들을 추후 다시 복습하기 위해 블로그에 남겨본다.
우선 앞의 과정을 통해 NiFi 를 설치했다는 가정 하에 진행한다.
그리고 전체적인 튜토리얼 진행은 kwangsiklee 님의 블로그 에서 발췌한 내용의 흐름을 따라가고 있으며, 발생한 상황에 따라 일부를 좀 더 추가해 보강했다.
2. NiFi 테스트
NiFi에서 이벤트를 받아 Flow File 을 생성하는 모습을 확인한다.
Tailing 프로세스를 만들어 실제 Tailing 된 Flow File 을 볼 예정이다
1) Processor 추가하기
특정 파일 Tailing 을 위해 TagFile 프로세스를 추가한다.
nifi의 경우 특정 프로세스를 만들고 싶은 경우, 아이콘을 클릭하고 화면으로 드래그하면 프로세서가 자동으로 생성된다.
- tail 프로세서와 log 프로세서를 생성해준다
- 그러면 아래와 같이 프로세서 두개를 만들 수 있다
2) Tag File 설정하기
프로세서 생성 후, 사용할 준비가 되지 않은 경우에는 아래 이미지와 같이 느낌표 아이콘이 뜬다.
세부 설정을 위해 TagFile 의 마우스 오른쪽을 눌러 Configure 를 클릭한다
(해당 이미지 일부는 kwangsiklee 님의 블로그에서 일부 발췌해왔다)
- 튜토리얼 과정이므로 다른 설정들은 건너뛰고 난 후, File to Tail 설정에서 우리가 tailing 할 파일을 설정하고 저장한다.
- Log 프로세서의 경우에는 success 일 경우 들어온 데이터를 지울 예정이므로 들어온 데이터가 success 일 경우 자동으로 지워지는 옵션을 클릭해준다
3) Relationship 연결하기
각 프로세서는 서로간 relationship 을 맺을 수 있다.
즉, Tailing 한 Flow File을 어디로 보낼지 relationship 으로 설정 할수 있다는 것이다.
이번에는 Log Attribute 로 보낼 예정이다.
마우스를 올리면 화살표 아이콘이 생긴다. 이를 드래그하여 연결하고자 하는 프로세서에 끌어 놓으면 가운데 relationship 을 나타내는 queue 아이콘이 생긴다.
4) 프로세서 실행하기
아래의 방법으로 프로세서를 실행시켜준다.
5) Tail 이벤트 발생시키기
아까 설정한 /home/nifi/tailing 위치에 a 라는 파일을 생성한다
$ echo "hahahahahahahaha" >> a
6) 이벤트 결과 학인하기
/home/nifi/tailing/a 파일에 hahahahahaha 가 추가되었으므로 nifi 에서 확인할 경우 하나의 이벤트가 생성된 것을 알 수 있다.
현재 logAttribute 를 정지시켜 놓았으므로, 이벤트는 queue 에 머물러 있다. 이벤트가 queue 에 머무른 상태에서는 직접 볼 수 있다.
- queue 의 List queue 을 클릭한 후
- 눈 아이콘을 클릭하면,
- 내가 생성한 이벤트를 볼 수 있다
3. 정리
아무리봐도 현재까지는 kafka, rebbit-mq 와 비슷한 면이 없지않이 있는 것 같으나, 차이점이라면
NiFi 를 이용한다면 ETL 처리를 Flow File 기분으로 순서도를 만들면서 한 눈에 제어할 수 있다는 점이 이 NiFi 의 큰 장점 같았다.
다음에는 마지막으로 NiFi 를 응용해서 Kafka 와 연동을 한 프로세스를 구축해봐야 겠다.
4. 참고사항
만약 can not be enable to open file 이라는 에러가 뜨며 프로세스가 진행이 될 경우가 생길 수 있다, 그럴 때는 파일이 저장된 부분을 nifi 가 권한 문제로 인해 접근을 못하고 있는것일 가능성이 크므로 해당 파일의 권한을 읽고 쓰기가 가능한 수준으로 변경해주면 될 것이다.
나의 경우에는 권한을 변경해 주었더니 nifi 에서 해당 파일에 접근이 가능했었다.
chmod 766 a
# a 파일의 권한을 변경해서 외부에서도 접근가능하게 설정
5. 참고 링크
'Data Engineering > NiFi' 카테고리의 다른 글
[ NiFi ] 5. Api 데이터를 가공하여 MySQL 로 보내기 (0) | 2021.05.07 |
---|---|
[ NiFi ] 4. 리눅스에서 MySql 로 데이터 보내기 (0) | 2021.04.30 |
[ NiFi ] 2-3. NiFi 설치하기 - Docker (0) | 2021.04.27 |
[ NiFi ] 2-2. NiFi 설치하기 - 윈도우 (4) | 2021.04.27 |
[ NiFi ] 2-1. NiFi 설치하기 - 리눅스 (0) | 2021.04.27 |