Skip to content

Instantly share code, notes, and snippets.

@cheerupdi
Last active May 12, 2021 07:58
Show Gist options
  • Save cheerupdi/7cb4b22b2fcb6b6f0664d99b794cfc15 to your computer and use it in GitHub Desktop.
Save cheerupdi/7cb4b22b2fcb6b6f0664d99b794cfc15 to your computer and use it in GitHub Desktop.
5. NiFi Componenet & Terminology

NiFi Component & Terminology

그냥 공식문서 번역한 글 ★by SDI

DataFlow Manager: 데이터플로우 매니저(DFM)은 나이파이 데이터플로우의 컴포넌트를 추가, 삭제, 수정할수 있는 권한을 가진 유저를 말합니다.

FlowFile: 플로우파일은 나이파이의 데이터 조각으로 표현될 수 있습니다. 플로우파일은 두개의 컴포넌트로 이루어져 있는데 FlowFile Attributes와 FlowFile Content 이 그것들입니다. Content는 FlowFile에 의해 표현되는 데이터이며 Attribute는 데이터에 대하여 맥락이나 정보를 제공하는 특성값이라고 할 수 있습니다. Attribute는 Key-Value 쌍으로 이루어져 있습니다. 모든 플로우 파일들은 기본적으로 다음과 같은 Standard Attribute들을 가지고 있습니다.

  • uuid: 보편적으로 플로우파일들이 구별되는 식별값입니다.

  • filename: 외부 서비스나 디스크로 보관하게 될때 쓰는 Human-Readable 식별자입니다.

  • path: 데이터가 디스크 또는 외부 서비스에 저장되어 데이터가 단일 디렉토리에 저장되지 않을 때 사용할 수 있는 계층 구조로 구성된 값을 말합니다.

Processor: 나이파이의 구성요소인 Processor는 들어오는 데이터를 리슨하거나 외부소스로 데이터를 pull하거나 publish 할때 사용합니다. 이 외에도 플로우파일에서 라우팅, 변환, 추출 등의 작업을 하는것이 가능합니다.

Relationship: 각각의 프로세서들은 0 이상의 Relationship을 가지게 됩니다. Relationship은 FlowFile의 작업후 결과를 나타냅니다(ex: success, fail 등). 플로우파일이 작업을 끝내면 Relationship들중 하나로 라우팅을 하게 됩니다. DFM은 플로우파일의 잠재적 작업 결과를 명시하기 위해 각 Relationship들을 다른 컴포넌트들로 연결시켜주는게 가능합니다.

Connection: DFM은 NiFi툴바에 있는 컴포넌트들을 드래깅하여 캔버스로 옮겨주고 Connection을 이용해 컴포넌트을 이어줄 수 있습니다. 각각의 Connection들은 하나 혹은 그 이상의 Relationship을 포함합니다. DFM은 어떤 Relationship이 어떤 Connection을 타고 가야할지를 정해줄 수 있습니다. 이것을 프로세서의 산출물(결과)에 기반하여 데이터를 라우팅 하는것을 허용합니다. 각각의 Connection들은 FlowFile Queue를 가지고 있습니다. 플로우파일들이 각 Relationship으로 전송되면 연관된 Connection에 속하는 Queue에 추가됩니다.

Controller Service: 해당 문서 참고

Reporting Task: Reporting Task는 백그라운드에서 돌아가며 NiFi 인스턴스에서 뭔 일이 발생했는지에 대한 통계적 리포트를 제공합니다. DFM은 사용자 인터페이스의 리포트작업을 원하는대로 추가 및 구성합니다. 공통적인 리포팅 job으로는 ControllerStatusReportingTask, MonitorDiskUsage reporting task, MonitorMemory reporting task, StandardGangliaReporter가 제공됩니다.

Funnel: Funnel은 다양한 Connection에서 하나의 Connection으로 데이터를 병합할때 쓰이는 컴포넌트입니다.

Process Group: 데이터플로우가 복잡해질때 ProcessGroup으로 묶어버리면 높은 추상화가 가능해집니다. Processor와 같은 여러 구성 요소를 Process Group으로 그룹화 할 수 있습니다. NiFi 사용자 인터페이스를 사용하면 DFM이 여러 프로세스 그룹을 논리적 데이터 흐름으로 연결하는 것은 물론 DFM이 프로세스 그룹에 들어가서 프로세스 그룹 내의 구성 요소를 보고 조작 할 수 있습니다.

Port: 하나 이상의 Process Group을 사용하여 생성 된 Dataflow는 ProcessGroup을 다른 Dataflow의 컴포넌트에 연결하는 방법을 필요로합니다. 이는 Port를 사용하여 수행됩니다. DFM은 임의의 수의 입력 포트와 출력 포트를 프로세스 그룹에 추가하고 이들 포트의 이름을 적절하게 지정할 수 있습니다

Remote Process Group: 데이터가 프로세스 그룹 안팎으로 전송되는 것처럼, NiFi의 한 인스턴스에서 다른 인스턴스로 데이터를 전송해야하는 경우가 있습니다. NiFi가 한 시스템으로부터 다른시스템으로 데이터를 전송하는 다양한 매커니즘을 지원합니다만, 데이터를 다른 NiFi인스턴스로 전송할때에는 Remote Process Group은 분명히 가장 쉬운 길을 제시해줄 것입니다.

Bulletin: NiFi User Interface는 응용 프로그램의 현재 상태에 대한 상당한 양의 모니터링 및 피드백을 제공합니다.
롤링 통계 및 각 구성 요소에 대해 제공되는 현재 상태 외에도 구성 요소들은 Bulletin에 리포트 할 수 있습니다. 구성 요소가 Bulleton에 보고 할 때마다 해당 구성 요소에 게시 아이콘이 표시됩니다.

Template: 플로우는 저장되어 재사용되거나 Export될 수 있습니다. 그러한 작업들을 위해 현재 Process Group 단위로 flow을 Template으로 저장할 수 있습니다.

flow.xml.gz: Everything the DFM puts onto the NiFi User Interface canvas is written, in real time, to one file called the flow.xml.gz. This file is located in the nifi/conf directory by default. Any change made on the canvas is automatically saved to this file, without the user needing to click a "Save" button. In addition, NiFi automatically creates a backup copy of this file in the archive directory when it is updated. You can use these archived files to rollback flow configuration. To do so, stop NiFi, replace flow.xml.gz with a desired backup copy, then restart NiFi. In a clustered environment, stop the entire NiFi cluster, replace the flow.xml.gz of one of nodes, and restart the node. Remove flow.xml.gz from other nodes. Once you confirmed the node starts up as a one-node cluster, start the other nodes. The replaced flow configuration will be synchronized across the cluster. The name and location of flow.xml.gz, and auto archive behavior are configurable. See the System Administrator’s Guide for further details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment