[Infra]아파치 나이파이(Apache Nifi)

업데이트:

아파치 나이파이(Apache Nifi)

아파치 나이파이란

아파치 나이파이(Apache NiFi, 나이아가라파일즈/NiagaraFiles의 준말)는 소프트웨어 시스템 간 데이터 흐름을 자동화하도록 설계된 아파치 소프트웨어 재단의 소프트웨어 프로젝트이다. 과거에 NSA에 의해 개발되었고 2014년 기술 전송 프로그램의 일부로서 오픈 소스화된 나이아가라파일즈(NiagaraFiles) 소프트웨어에 기반을 둔다.

개발자 가이드

FlowFile

플로우파일(FlowFile) 이란 data와 attribute를 뜻한다. 플로우파일은 Attribute의 집합을 포함하는 데이터 조각이라는 논리적인 개념입니다. 여기서 Attribute는 데이터의 이름, 크기, uuid 같은 유일한 식별수단(unique identifier)을 포함합니다. 플로우파일의 내용이나 attribute는 바꿀수 있지만 플로우파일 오브젝트 그 자체는 불변합니다. 플루우파일의 수정은 ProcessSession을 통해 가능합니다.

Processor API

프로세서(Processor)는 나이파이에서 가장 다양한 범위에서 쓰이는 요소 입니다. 프로세서를 이용하면 플로우파일의 생성(create), 제거(remove), 수정(modify), 검사(inspect)가 가능합니다.

설명서

Working With Attributes

Attribute를 이용해서 할 수 있는 일

  1. FlowFile의 라우팅을 결정할 수 있다. 이 작업은 “RouteOnAttribute”를 이용해 수행할 수 있다. RouteOnAttribute의 결과값은 boolean이다.

  2. Attribute는 프로세서가 프로세서 환경설정이 데이터 그 자체에 의존하는지 설정하는데 사용된다. 예를 들어, PutFile 프로세서가 있을때, directory Attribute, filename Attribute를 보고 서로 다른 FlowFile을 어디로 보내는지 결정한다.

  3. Attribute는 데이터의 맥락을 제공한다.

소프트웨어 구성요소

나이파이는 호스팅 대상 서버의 자바 가상 머신 안에서 실행되는 자바 프로그램이다. 나이파이의 주된 구성 요소는 다음과 같다.

  • 웹서버(Web server)
    발생되는 이벤트를 모니터링하고 소프트웨어를 시각적으로 제어하기 위해 사용되는 HTTP 기반 구성요소

  • 플로 컨트롤러(Flow Controller)
    나이파이 동작의 뇌 역할을 담당한다. 나이파이 확장 기능의 실행을 통제하고 이를 위한 자원 할당을 스케줄링한다.

  • 확장 기능(Extensions)
    나이파이가 다양한 종류의 시스템과 통신할 수 있게 하는 다양한 플러그인

  • 플로파이어 저장소(FlowFile repository)
    나이파이가 현재 실행 중인 플로파이어(FlowFile)의 상태를 추적하고 정비하기 위해 사용.

  • 콘텐츠 저장소(Content repository)
    여기에서 전송 대상의 데이터가 관리된다.

  • 프로버넌스 저장소(Provenance repository)
    여기에서 시스템을 경유하는 데이터의 프로버넌스와 관련한 데이터가 관리된다.

Nifi CLI 커맨드

Usage

The CLI toolkit can be executed in standalone mode to execute a single command, or interactive mode to enter an interactive shell.

To execute a single command:

./bin/cli.sh <command> <args>

To launch the interactive shell:

./bin/cli.sh

To show help:

./bin/cli.sh -h

The following are available commands:

demo quick-import
nifi current-user
nifi cluster-summary
nifi connect-node
nifi delete-node
nifi disconnect-node
nifi get-root-id
nifi get-node
nifi get-nodes
nifi offload-node
nifi list-reg-clients
nifi create-reg-client
nifi update-reg-client
nifi get-reg-client-id
nifi pg-import
nifi pg-start
nifi pg-stop
nifi pg-get-vars
nifi pg-set-var
nifi pg-get-version
nifi pg-change-version
nifi pg-get-all-versions
nifi pg-list
nifi pg-status
nifi pg-get-services
nifi pg-enable-services
nifi pg-disable-services
registry current-user
registry list-buckets
registry create-bucket
registry delete-bucket
registry list-flows
registry create-flow
registry delete-flow
registry list-flow-versions
registry export-flow-version
registry import-flow-version
registry sync-flow-versions
registry transfer-flow-version
session keys
session show
session get
session set
session remove
session clear
exit
help

To display extensive help for a specific command:

./bin/cli.sh <command> -h

참고: 위키백과