NiFi 와 TensorflowOnSpark를 활용한 이미지 프로세싱

NiFi 와 TensorflowOnSpark를 활용한 이미지 프로세싱

전 회사에서 다뤘던 Apache NiFiTensorflowOnSpark를 활용해서 이미지 프로세싱까지 해보는 내용을 다루겠습니다.

Apache NiFi

Apache NiFi supports powerful and scalable directed graphs of data routing, transformation, and system mediation logic.

Apache NiFi DataFlow, ETL을 구성하는데 필요하는데 필요한 데이터 트랜스포메이션, 전송, flow 로직등을 제공하는 오픈소스 프로젝트입니다.

NiFi는 다음과 같은 특징을 가지고 있습니다.

  • 직관적인 웹 인터페이스 제공
    • 모든 데이터 흐름 로직에 대한 디자인, 조절, 모니터링 등을 브라우저를 통해서 조작할 수 있다.
  • 데이터 flow
    • 데이터의 source 에서 target까지의 흐름을 제어할 수 있습니다.
  • 다양한 source 지원
    • HDFS, S3, HBase 등의 다양한 데이터 저장소와 데이터를 불러올 수 있는 API를 제공하며, processor를 통해 다양한 로직을 개발할 수 있습니다.
  • 보안
    • SSL, SSH, HTTP, 데이터 암호화 등의 보안기능 제공

홈페이지에 기제된 특징대로 다양한 데이터 원천(source)로 부터 데이터 트랜스포메이션을 제공하며 특정 이벤트를 추가하여 다양한 용도로 활용가능합니다.

NiFi 웹 인터페이스 화면 예시

NiFi를 활용하여 HDFS로부터 이미지 추출부터 TensorflowOnSpark를 활용한 이미지 프로세싱에 대해서 다뤄보겠습니다.

NiFi는 Niagara File을 줄임말입니다.

NiFi 설치

Centos7 에서 설치를 진행합니다.

NiFi 다운로드 페이지에서 NiFI Binaries 버전을 확인합니다. 저는 1.10.0 버전을 기준으로 진행하겠습니다.

centos에서 적당한 위치로 이동한 후 wget 명령으로 다운로드 받겠습니다.

1
2
# cd /some/where/nice/
wget https://archive.apache.org/dist/nifi/1.10.0/nifi-1.10.0-bin.tar.gz

tar xvf 명령으로 압축을 해제해줍시다.

1
tar xvf nifi-1.10.0-bin.tar.gz

JVM 설정

NiFi는 JVM 기반으로 동작하므로 JAVA_HOME 경로를 ~/.bashrc에 넣어줍니다.

1
2
3
echo "export JAVA_HOME=/where/to/java" >> ~/.bashrc

source ~/.bashrc

편의성을 위해 $NIFI_HOME 과 바이너리 파일들을 PATH에 추가합시다.

1
2
echo "export NIFI_HOME=/where/to/nifi" >> ~/.bashrc
echo "export PATH=$PATH:$NIFI_HOME/bin" >> ~/.bashrc

NiFi 설정

NiFi를 구동하면 웹 브라우저에서 해당 서버의 IP와 특정 포트를 통해 접근할 수 있습니다.

서버 URL과 포트등의 설정을 변경하고자 하면 $NIFI_HOME/conf/nifi.properties를 수정합니다.

1
vi $NIFI_HOME/conf/nifi.properties

아래에 보면 `# web properties #`에서 포트와 호스트주소를 수정할 수 있습니다.

1
2
nifi.web.http.host=
nifi.web.http.port=8080

JVM 메모리 설정은 $NIFI_HOME/conf/bootstrap.conf에서 java.arg.2=-Xms부분을 수정하여 조절할 수 있습니다.

NiFi 실행

NiFi 실행 및 종료는 $NIFI_HOME/bin/nifi.sh 스크립트로 관리합니다.

1
2
$NIFI_HOME/bin/nifi.sh
# Usage nifi {start|stop|run|restart|status|dump|diagnostics|install|stateless}

필자는 해당 bin 디렉토리를 PATH에 등록했으므로 쉘에서 nifi.sh start로 nifi 서버를 실행하겠습니다.

1
2
3
4
5
$ nifi.sh start
# Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64
# NiFi home: /opt/nifi

# Bootstrap Config File: /opt/nifi/conf/bootstrap.conf

ps -ef | grep nifi로 NiFi 데몬을 확인하실 수 있습니다.

NiFi 로그는 $NIFI_HOME/logs에 저장됩니다. 설정파일을 수정하여 경로를 수정할 수 있습니다.

이제 브라우저를 통해서 NiFi에 접속합니다.

1
http://<ip>:<port>/nifi

IP와 포트를 포함한 URL을 입력후 /nifi를 추가하여 NiFi에 접속합니다.

unsplash-logoVince Veras

댓글