Apache Nifi

실시간 통합 데이터 물류 및 간단한 이벤트 처리 플랫폼

Apache NiFi는 서로 다른 데이터 소스와 시스템 간의 데이터 이동을 자동화하므로 데이터를 빠르고 쉽고 안전하게 수집할 수 있습니다.

Apache NiFi가 수행하는 작업

Apache NiFi는 서로 다른 시스템 간의 데이터 이동을 자동화하는 통합 데이터 물류 플랫폼입니다. 실시간 제어를 통해 모든 소스와 대상 간의 데이터 이동을 손쉽게 관리할 수 있습니다. 데이터 소스에 관계없이 시스템, 지리적 위치 장치, 클릭 스트림, 파일, 소셜 피드, 로그 파일, 동영상 등 형식, 스키마, 프로토콜, 속도 및 크기가 다양한 분산된 소스를 지원합니다. 구성가능한 배관으로서, Fedex나 UPS, 기타 배송 서비스업체에서 소포를 운송하는 것과 유사한 방식으로 데이터를 이동시킵니다. 또한 Apache NiFi를 사용하면 배송 서비스업체에서 배송 상태를 추적하는 것과 마찬가지로 데이터를 실시간으로 추적할 수 있습니다.

Apache NiFi는 과거 "Niagara Files"라고 불린 기술을 기반으로 하며, 지난 8년간 NSA에서 개발되고 규모에 따라 사용되었습니다. 이후 NSA 기술 이전 프로그램(NSA Technology Transfer Program)을 통해 Apache Software Foundation에서 사용이 가능하게 되었습니다. 그리하여 초기 단계부터 실제 사용 단계까지 설계가 이루어졌고, 유연하고 확장 가능하며 Raspberry Pi 등 소형 경량 네트워크 엣지 장치부터 엔터프라이즈 데이터 클러스터 및 클라우드에 이르기까지 다양한 장치에 적합하도록 만들어졌습니다. 또한 Apache NiFi는 통신에 영향을 미칠 수 있는 변동하는 네트워크 연결에 따라 동적으로 조정하여 데이터를 전송할 수 있습니다.

NiFi 개관

데이터 흐름이라는 용어는 다양한 맥락에서 사용되지만, 여기서는 시스템 간에 자동화되고 관리되는 정보의 흐름을 의미합니다. 이 문제 공간은 기업이 시스템을 두 개 이상 보유한 이래로 존재해 왔으며, 시스템 일부는 데이터를 생성하고 다른 일부에선 데이터를 소비하는 양상을 띠었습니다. 이와 같은 문제와 여기에 대한 솔루션 패턴이 등장하며 광범위한 논의와 설명이 이뤄지고 있습니다. 엔터프라이즈 통합 패턴 [eip]에서 포괄적이고 이용이 간편한 형태를 확인할 수 있습니다. 데이터 흐름의 고급 과제 중 일부는 다음과 같습니다.

시스템 오류

네트워크 오류, 디스크 오류, 소프트웨어 충돌, 사용자의 실수.

데이터 액세스가 소비 용량 초과

특정 데이터 소스가 처리 또는 전송 체인의 일부를 앞서는 경우가 있습니다. 따라서 약한 링크가 하나만 있어도 문제가 발생합니다.

경계 조건이 실질적인 효과를 내지 못함

데이터가 너무 크거나 작거나 빠르거나 느리거나 혹은, 손상되거나, 잘못되거나, 형식이 틀린 경우는 언제든 발생합니다.

한 때 소음이던 신호로 자리 잡음

조직의 우선 순위는 빠르게 바뀝니다. 새 흐름을 활성화하는 동시에 기존 흐름은 신속히 변화시켜야 합니다.

시스템은 각기 다른 속도로 진화

특정 시스템에서 사용하는 프로토콜과 형식은 언제든 변경될 수 있으며 주위 시스템에 관계없이 변경되는 일이 흔합니다. 데이터 흐름은 본래 대규모로 분산된 구성요소로 이루어진 시스템을 연결하기 위한 것으로, 이들 구성요소는 설계상 서로 간의 연동을 전혀 고려하지 않았거나 낮은 수준의 연동만 염두에 둔 것입니다.

규제 준수 및 보안

법률, 규제 및 정책은 바뀝니다. 마찬가지로 기업 간 계약도 바뀝니다. 시스템 간 상호작용과 시스템-사용자 상호작용은 안전하고 신뢰할 수 있으며 책임이 수반되어야 합니다.

프로덕션에서 이뤄지는 지속적 개선

랩에서 프로덕션 환경을 비슷하게라도 복제하려는 시도조차 불가능할 때가 많습니다.

수년간 데이터 흐름은 아키텍처에서 필요악이었습니다. 하지만 이제 빠르고 활발하게 진화하는 이전이 늘어나면서 데이터 흐름은 훨씬 흥미로운 주제로 자리 잡으며 기업 성공에서도 대단히 중요한 관건이 되었습니다. 여기에는 Service Oriented Architecture[soa], API[api][api2], 사물인터넷[iot], 빅데이터[bigdata]가 포함됩니다. 또한, 규제 준수, 개인정보 보호 및 보안 요건이 점차 엄격해지고 있습니다. 이러한 새로운 개념 모두를 감안하더라도, 데이터 흐름의 패턴과 요구 사항 대부분은 예전과 다르지 않습니다. 주요한 차이점은 복잡성의 범위, 적응에 필요한 변화의 속도, 그리고 규모에 따른 엣지 사례가 흔한 일이 됐다는 점입니다. NiFi는 이러한 최신 데이터 흐름 과제를 해결할 수 있도록 구축되었습니다.

핵심 개념

NiFi의 기본 설계 개념은 FBP(Flow Based Programming)의 주요 아이디어와 밀접하게 관련되어 있습니다. 다음은 주요 NiFi 개념과 FBP에 매핑되는 방식입니다.

NiFi Term FBP Term Description
FlowFile Information Packet  A FlowFile represents each object moving through the system and for each one, NiFi keeps track of a map of key/value pair attribute strings and its associated content of zero or more bytes.
FlowFile Processor Black Box  Processors actually perform the work. In [eip] terms a processor is doing some combination of data Routing, Transformation, or Mediation between systems. Processors have access to attributes of a given FlowFile and its content stream. Processors can operate on zero or more FlowFiles in a given unit of work and either commit that work or rollback.
Connection Bounded Buffer Connections provide the actual linkage between processors. These act as queues and allow various processes to interact at differing rates. These queues then can be prioritized dynamically and can have upper bounds on load, which enable back pressure.
Flow Controller Scheduler  The Flow Controller maintains the knowledge of how processes actually connect and manages the threads and allocations thereof which all processes use. The Flow Controller acts as the broker facilitating the exchange of FlowFiles between processors.
Process Group Subnet  A Process Group is a specific set of processes and their connections, which can receive data via input ports and send data out via output ports. In this manner process groups allow creation of entirely new components simply by composition of other components.

Your form submission has failed.

This may have been caused by one of the following:

  • Your request timed out
  • A plugin/browser extension blocked the submission. If you have an ad blocking plugin please disable it and close this message to reload the page.