개요

Apache Nifi에 대한 간략한 소개는 윤병화님의 NiFi 시작하기로 알 수 있다.

이번 글에서는 Apache Nifi를 로컬에서 다운로드해서 설치해보고 기본 사용법을 익혀보기로 한다.
해당글은 Apache Nifi의 기본 개념 및 목적성은 이해하고 있다는 가정에서 진행한다.

Nifi 설치 및 실행

바이너리 다운로드

Apache Nifi 다운로드 페이지에서 다운로드 한다. 필자는 현재 기준 최신인 1.7.1 버전을 다운로드 하였다.

기본 실행 포트번호 변경

Nifi에서는 기본 포트를 8080로 사용한다.
8080포트는 Web Application에서 많이 쓰니 8000포트로 바꿔 보았다.

$ vi conf/nifi.properties

아래의 항목 포트를 바꿔준다.

nifi.web.http.port=8000

데몬 실행

데몬 실행은 아래와 같이 수행한다.

lks21c@lks21c-laptop:nifi ()$ ./bin/nifi.sh start

Java home: /usr/lib/jvm/java-8-oracle
NiFi home: /home/lks21c/nifi-1.7.1

Bootstrap Config File: /home/lks21c/nifi-1.7.1/conf/bootstrap.conf

데몬 종료는 아래와 같이 수행한다.

lks21c@lks21c-laptop:nifi ()$ ./bin/nifi.sh stop

Java home: /usr/lib/jvm/java-8-oracle
NiFi home: /home/lks21c/nifi-1.7.1

Bootstrap Config File: /home/lks21c/nifi-1.7.1/conf/bootstrap.conf

2018-07-22 17:20:17,187 INFO [main] org.apache.nifi.bootstrap.Command Apache NiFi has accepted the Shutdown Command and is shutting down now
2018-07-22 17:20:17,201 INFO [main] org.apache.nifi.bootstrap.Command Waiting for Apache NiFi to finish shutting down...
2018-07-22 17:20:19,212 INFO [main] org.apache.nifi.bootstrap.Command NiFi has finished shutting down.

접속

http://localhost:8000/nifi/ 로 접속하면 아래와 같은 Nifi 화면을 볼 수 있다.

테스트 해보기

Nifi가 이벤트를 받아서 Flow File을 생성하는 모습을 테스트를 통해 확인 해보자.
구체적으로 이번 글에서 해볼 방법은 파일을 Tailing하는 프로세서를 만들어서 실제 Tailing된 Flow File을 살펴보자.

프로세서 추가

특정 파일을 Tailing 하기 위해 TailFile 프로세서를 추가한다.

마찬가지 방식으로 Log를 출력할 때 쓰는 Log Attribute를 불러온다.

Tail File 설정하기

두 프로세서를 생성만 하면 아직 사용할 준비가 되지 않아 아래와 같이 느낌표 아이콘이 뜬다.

세부 설정을 진행해보자. 우선 TailFile부터 마우스 오른쪽을 눌러 Configure를 클릭한다.

아직은 Nifi에 익숙하지 않으니 다른 설정들을 무시하고 세부 설정에서 어떤 파일을 Tailing할지만 설정하고 저장한다.

Relationship 연결하기

각 프로세서는 서로 Relationship을 맺을 수 있는데 쉽게 설명해서 파일을 Tailing해서 이 Flow File을 어디로 보낼지 Relationship으로 설정 할 수 있다. 이번 예제에서는 Log Attribute로 보내보자.

정상적으로 연결되면 Tail File 프로세서는 이제 사용할 준비가 되었고 현재 Stop되었다고 표시가 된다.
또한 Tail File에 성공한 Flow File들은 앞으로 success 큐에 쌓이게 되고 이를 Log Attribute 프로세서가 소비하게 되면 succes 큐에서 Flow File들이 빠진다.

Log Attribute 설정하기

Log Attribute는 Logging을 위한 용도인데 이번 글에서는 Flow File이 이동하는것을 보여주기 위한 용도로 생성한다. 아래와 같이 간단한 설정을 통해 만들 수 있다.

프로세서 실행

이제 Tail 프로세서를 작동시킬 차례이다. 아래와 같이 프로세서를 실행해준다.

Tail 이벤트 발생시키기

프로세서에서 바라보는 /home/lks21c/nifi/tailing 위치에 아래와 같이 의도적의로 파일에 내용을 append 해본다.

$ echo "hello world" >> a

더 와닿게 이해하기 위해 /home/lks21c/nifi/tailing 위치에 a파일을 만드는 과정을 서러명하면 아래와 같다.

이벤트 결과 확인해보기

위와 같이 /home/lks21c/nifi/tailing/a 파일에 hello world가 append되었으므로 nifi에서 확인을 해보면 하나의 이벤트가 발생되어 flow file이 생성되었음을 확인 할 수 있다.

Flow File에 대한 자세한 정보를 확인해보기 위해 큐 위치에서 마우스 오른쪽을 눌러 List queue를 선택해본다.

List Queue 이후 아래왁 같이 Flow File에 대한 정보를 확인 할 수 있다.

Info 아이콘을 눌러보면 아래와 같이 Flow File에 대한 정보가 나온다. 이중에서 view를 클릭해보자.

용량이 작인 Flow File은 view만으로 내용을 볼 수 있는데 테스트를 위해 입력한 Hello World가 확인됨을 알 수 있다.

맺음말

이번 글에서는 간단히 Nifi를 직접 설치해 보고 Event Driven으로 Flow File이 옮겨다니는 간단한 예제를 살펴보았다.

이 Nifi를 이용하면 ETL처리를 Flow File 기반으로 마치 순서도를 만들듯이 간단하면서도 강력하게 제어할 수 있다.