IT 정보/Hadoop Eco System

너무 쉬운 Apache NiFi 설치 방법

린아저씨 2024. 7. 13. 18:07

1. Apache NiFi란 무엇인가?

1.1. 개요

Apache NiFi는 데이터 흐름의 관리, 조정 및 자동화에 특화된 오픈 소스 소프트웨어입니다. 데이터 수집, 전송, 변환 및 처리의 전 과정에서 강력한 기능을 제공하여 기업의 데이터 통합 요구 사항을 충족시킵니다. NiFi는 직관적인 사용자 인터페이스와 다양한 프로토콜을 지원하여 데이터 엔지니어와 분석가들이 데이터를 효과적으로 관리할 수 있도록 돕습니다.

 

1.2. 역사와 배경

Apache NiFi는 원래 미국 국가안보국(NSA)에서 개발되었으며, 2014년에 Apache Software Foundation에 기부되었습니다. 이후 커뮤니티의 활발한 참여와 기여를 통해 지속적으로 발전해 왔으며, 현재는 데이터 흐름 관리의 대표적인 도구로 자리 잡았습니다.

 

 

 

2. Apache NiFi의 주요 기능

2.1. 데이터 흐름의 시각화

NiFi의 가장 큰 장점 중 하나는 데이터 흐름을 시각적으로 관리할 수 있다는 점입니다. 사용자는 드래그 앤 드롭 방식으로 프로세서를 배치하고, 이를 연결하여 복잡한 데이터 흐름을 쉽게 구성할 수 있습니다. 이러한 시각화는 데이터 흐름의 이해를 돕고, 문제 발생 시 빠르게 해결할 수 있도록 합니다.

 

2.2. 다양한 프로토콜 및 포맷 지원

NiFi는 HTTP, FTP, SFTP, Kafka, MQTT 등 다양한 프로토콜을 지원하며, CSV, JSON, XML, Avro 등 여러 데이터 포맷을 처리할 수 있습니다. 이를 통해 이기종 시스템 간의 데이터 통합이 용이해집니다.

 

2.3. 데이터 변환 및 처리

NiFi는 데이터를 변환하고 처리하는 다양한 프로세서를 제공합니다. 예를 들어, 데이터 필터링, 포맷 변환, 집계, 분할 등의 작업을 손쉽게 수행할 수 있습니다. 이러한 기능을 통해 데이터 정제 및 분석 준비 과정을 자동화할 수 있습니다.

 

2.4. 보안 및 데이터 보호

NiFi는 데이터 암호화, 사용자 인증 및 권한 관리, 데이터 전송 시의 보안 등을 통해 데이터 보호에 신경 씁니다. 이를 통해 민감한 데이터를 안전하게 처리하고 전송할 수 있습니다.

 

2.5. 확장성 및 신뢰성

NiFi는 클러스터링 기능을 통해 확장성과 신뢰성을 보장합니다. 여러 노드를 통해 부하를 분산시키고, 데이터 손실을 최소화할 수 있습니다. 또한, 데이터 흐름의 변경 이력을 추적하고, 특정 시점으로 롤백할 수 있는 기능을 제공합니다.

 

 

3. Apache NiFi 사용 사례

3.1. 실시간 데이터 스트리밍

NiFi는 실시간 데이터 스트리밍에 적합합니다. IoT 센서 데이터, 웹 로그, 소셜 미디어 피드 등의 실시간 데이터를 수집하고 처리하여 분석 플랫폼으로 전달할 수 있습니다. 이를 통해 빠른 데이터 처리와 의사 결정을 지원합니다.

 

3.2. 데이터 통합

기업 내부의 다양한 시스템에서 생성되는 데이터를 통합하는 데 NiFi가 활용됩니다. 예를 들어, ERP 시스템, CRM 시스템, 데이터베이스 등의 데이터를 중앙 집중식으로 모아 분석하고 보고하는 데 유용합니다.

 

3.3. ETL(Extract, Transform, Load) 작업

NiFi는 ETL 작업을 자동화하는 데 이상적입니다. 데이터를 추출하고 변환한 후, 분석 플랫폼이나 데이터 웨어하우스에 적재하는 과정을 효율적으로 관리할 수 있습니다. 이를 통해 데이터 준비 시간을 단축하고, 분석의 정확성을 높일 수 있습니다.

 

 

 

4. Apache NiFi 설치 및 설정

4.1. 설치

Apache NiFi는 다양한 운영체제에서 실행할 수 있으며, 설치 과정도 비교적 간단합니다. 공식 웹사이트에서 최신 버전을 다운로드하고, 압축을 해제한 후, 간단한 설정 파일 수정을 통해 바로 사용할 수 있습니다. Nifi 버전은 1버전의 경우 1.26.0 버전이 가장 최신이며, 2버전의 경우에는 2.0.0-M3 버전까지 릴리즈되어 있으나 아직은 성숙된 버전이 아니므로 1버전을 사용할 것을 추천드립니다.

 

NiFi 사용시 Java는 11 버전 이상부터 지원하므로 반드시 11버전 이상에서 설치를 해주어야합니다. OpenJDK를 사용할 경우 다음과 같이 설치해 주면 됩니다.

sudo apt install -y openjdk-11-jdk
 
Nifi 설치 과정 자체는 매우 간단합니다.  바이너리 파일을 다운로드 받은 후 압축을 풀어준 뒤 conf 디렉터리의 nifi.properties 파일만 수정해주고 실행하면 끝입니다.
# NiFi 다운로드 및 압축 해제
wget https://dlcdn.apache.org/nifi/1.27.0/nifi-1.27.0-bin.zip
unzip nifi-1.27.0-bin.zip

# NiFi 실행
cd nifi-1.27.0
./bin/nifi.sh start

 

4.2. 설정

NiFi의 설정 파일은 conf 디렉토리에 위치하고 있습니다. 주요 설정 파일은 nifi.properties이며, 여기서 포트 번호, 메모리 설정, 클러스터 설정 등을 수정할 수 있습니다. 기본 설정으로도 충분히 사용할 수 있지만, 환경에 맞게 조정하는 것이 좋습니다.

# Site to Site properties
nifi.remote.input.host= 
nifi.remote.input.secure=false 
nifi.remote.input.socket.port= 
nifi.remote.input.http.enabled=true
nifi.remote.input.http.transaction.ttl=30 sec
nifi.remote.contents.cache.expiration=30 secs

# web properties #
#############################################
nifi.web.http.host=192.168.235.110
nifi.web.http.port=8483
nifi.web.http.network.interface.default=

############################################
nifi.web.https.host=
nifi.web.https.port=
nifi.web.https.network.interface.default=
nifi.web.https.application.protocols=http/1.1
nifi.web.jetty.working.directory=./work/jetty
nifi.web.jetty.threads=200
nifi.web.max.header.size=16 KB
nifi.web.proxy.context.path=
nifi.web.proxy.host=
nifi.web.max.content.size=
nifi.web.max.requests.per.second=30000
nifi.web.max.access.token.requests.per.second=25
nifi.web.request.timeout=60 secs
nifi.web.request.ip.whitelist=
nifi.web.should.send.server.version=true

 

 

5. 결론

Apache NiFi는 데이터 흐름 관리에 있어 강력하고 유연한 도구입니다. 다양한 프로토콜과 포맷을 지원하고, 시각적인 인터페이스를 통해 사용성을 높이며, 확장성과 신뢰성을 보장합니다. 이렇게 강력한 기능에 비해 설치는 매우 쉽습니다.

 

Apache NiFi에 대해 더 알고 싶다면 공식 문서를 참고하시면 좋습니다. NiFi는 다양한 프로세서를 지원하기 때문에 사용자가 원하는데로 아주 유연한 데이터 파이프라인을 만들기에 적합니다. 또한 WebUI를 통해 파이프라인을 구성하기 때문에 빠르게 익히고 구성할 수 있습니다. 이외에도 Expression Language를 지원하여 원하는 규칙에 따라 파일의 위치나 파일명을 검색할 수 있습니다.

 

손쉬운 데이터 파이프라인을 구성하고 싶으시다면, 꼭 한번 NiFi를 검토해보시길 추천드립니다.