SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
NiFi
시작하기
로엔 윤병화
이후 NiFi는 저로 표현합니다.
저는요?
저는 Apache에 소속된 오픈 소스에요. 분산 환경에서 대량의 데이터를 수집,
처리하기 위해 만들어 졌죠. NSA(National Security Agency)에서 태어 났어요.
실시간 ETL 정도로 쉽게 생각하실 수 있지만, 저는 FBP(flow-based programming)라는 개념을
가지고 더 많은 일을 할 수 있어요.
제가 잘하는 건요?
전 실시간 처리를 정말 잘해요. 예를들어 특정 디렉토리에 파일이 생성되면 바로
다른 DB에 저장할 수도, 다른 곳으로 FTP로 보낼 수도 있죠. 요즘 빅데이터 시대가
되면서 더 많은 일을 하게 되었죠.
장애가 나도 저는 복구 될때까지 데이터를 처리를 못할 수는 있지만, 잃어버리는
일은 없어요.
Zero Master 클러스터 환경을 제공하고, 확장도 쉽게되요.
그 밖에 HTTPS를 지원해 통신에 대한 보안도 잘 되어있고요. 웹 기반에 비교적
직관적인 인터페이스를 가지고 있어 사용하기도 쉬워요. 데이터의 이동 경로를
추적할 수 있어요. 마지막으로 클러스터간의 Site-to-Site라는 것을 이용해 데이터를
교환할 수 있어요.
제가 못하는 것은?
배치 작업은 잘 못해요. 예를들어 하둡 환경에서 대용량 파일을 빠르게 전송해야
한다면 DistCP가 더 좋아요. 그리고 원본 소스의 있는 파일들이 목적지까지 다
전달되었는지도 알기 힘들어요.
스케줄러가 있다고 저를 (배치) 스케줄러라고 생각하시면 안 되요. Jenkins와 같이
현재 실행되는 내용을 확인할 수 없어요. 오직 실행이 끝나고 성공과 실패, 출력
결과를 알 수 있어요.
저는 간단한 데이터 조작만 가능하지, 복잡한 연산은 잘 못 해요. 하지만 Spark,
Storm 등과 연동해 할 수 있죠.
저를 구성하는 요소
Processor Connection FlowFile
FlowFile는 제가 인식하는 데이터 단위에요. Processor는 FlowFile을 수집, 변형,
저장하는 기능을 해요. Connection은 Processor와 Processor를 연결해,
FlowFile을 전달하죠.
FlowFile
속성(Attribute)과 내용(Content)로 구성되어 있어요. 속성은 키/값 형태로
데이터의 이동 및 저장 시 필요한 정보들이 들어 있고요. Expression Language가
지원되서 값을 다양하게 제어할 수 있어요. Processor와 Processor를 이동할
때마다 복사본이 만들어져서 추적이 가능하죠. 근데 내용은 복사하지 않고, 어디에
있는지 포인트 정보만 복사해 크게 부담되지는 않아요.
여기서 잠깐! 저장소(repository)
FlowFile 정보가 어디에 저장되고, 또 어떻게 이것을 추적 가능할 까요?
FlowFile은 생성되면 FlowFile Repository에 속성값과 내용이 어디에 있는지
저장되고, Content Repository에 내용이 저장되요. 그리고 Processor가 처리될
때마다 Provenance Repository에 FlowFile 이력(이벤트)이 남아요.
FlowFile 흐름
간단하게 FlowFile이 어떻게 저장소에 있는지 알아볼께요. 최대한 쉽게 설명할텐데 솔직히 이해하기 쉽지 않아요. 그냥
그렇구나 하고 받아드리셔도 되고, 꼭 아시고 싶으시면 공식 설명서인 Apache NiFi In Depth를 참고하세요.
Processor
150개가 넘는 Processor를 제공하고, 확장 가능해요. ExecuteScript
Processor까지 활용한다면 훨씬 더 많은 일들을 할 수 있어요.
근데, 자주 쓰는거는 몇개 안되요. HTTP, Kafka, DB, FTP 관련 Processor와 속성을
변경하는 UpdateAttribute, 데이터를 합치는 MergeContent, 데이터를 특정 개수로
분할하는 Split* 시리즈, 데이터 타입을 변경하는 Convert* 시리즈 등을 많이
사용한답니다.
Connection
FlowFile의 대기열(Queue)라고 생각하면 되요. 이 대기열은 FlowFile의 우선순위,
만료, 부하 조절 기능 제공해요. 우선순위는 어떤 순(Prioritization)으로 FlowFile을 다음
Processor에게 제공할 지, 만료는 얼마까지만 대기열에 머물지(expiration), 부하 조절
기능은 얼마 만큼 차면 FlowFile 생성을 더디게 만들지(Back Pressure)를 말해요.
기타 구성 요소
Flow Controller는 제가 사용하는 스케줄러를 말해요. 특정 간격 또는 Cron 표현식으로 스케줄링을 할 수 있고요. 클러스터
환경에서 동시에 실행되는 것을 막기 위해 Primary Node에서만 실행할 수도 있죠.
Controller Service를 이용해 Processor간 자원을 공유할 수 있어요. 예를들어 DBCPConnectionPool을 이용해서 DB 연결
정보를 Processor간에 공유할 수 있어요.
Process Group을 통해 관련있는 Processor들을 묶어서 관리할 수 있어요. 계층적으로 사용할 수 있어 Processor들이 많을
때도 잘 관리할 수 있어요. Input Port와 Output Port를 이용해 Process Group간에 데이터를 주고 받을 수 있어요.
Remote Process Group을 이용해 또 다른 NiFi 시스템과 Site-to-site 프로토콜을 이용해 데이터를 주고 받을 수 있어요.
Remote Input Port와 Output Port를 이용해 데이터를 주고 받을 수 있어요.
Web Server가 내장되어 있어요. Jetty 서버를 사용하고, 스프링 기반의 웹 애플리케이션이죠. 모두 비동기 방식으로
처리해서 비교적 높은 성능을 내요(SEDA: An Architecture for Highly Concurrent Server Applications).
그래서 저는 이런 모양이에요.
저는 이렇게 사용될 수 있어요. (Change Data Capture)
Phoenix 저장
저는 이렇게 사용될 수 있어요. (로그 수집)
HDFS 저장
Phoenix 저장

Más contenido relacionado

La actualidad más candente

[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항Ji-Woong Choi
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영NAVER D2
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리YoungHeon (Roy) Kim
 
Exactly-once Stream Processing with Kafka Streams
Exactly-once Stream Processing with Kafka StreamsExactly-once Stream Processing with Kafka Streams
Exactly-once Stream Processing with Kafka StreamsGuozhang Wang
 
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...AWSKRUG - AWS한국사용자모임
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101DaeMyung Kang
 
Massive service basic
Massive service basicMassive service basic
Massive service basicDaeMyung Kang
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)Hyojun Jeon
 
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축Juhong Park
 
Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기SangWoo Kim
 
Zabbix による ms sql監視 ~データベースモニタリング~ odbc
Zabbix による ms sql監視 ~データベースモニタリング~ odbcZabbix による ms sql監視 ~データベースモニタリング~ odbc
Zabbix による ms sql監視 ~データベースモニタリング~ odbc真乙 九龍
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기Ji-Woong Choi
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)NAVER D2
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advanceDaeMyung Kang
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lakeDaeMyung Kang
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Ken SASAKI
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 

La actualidad más candente (20)

[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
 
Exactly-once Stream Processing with Kafka Streams
Exactly-once Stream Processing with Kafka StreamsExactly-once Stream Processing with Kafka Streams
Exactly-once Stream Processing with Kafka Streams
 
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101
 
Massive service basic
Massive service basicMassive service basic
Massive service basic
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
 
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
 
Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기
 
Zabbix による ms sql監視 ~データベースモニタリング~ odbc
Zabbix による ms sql監視 ~データベースモニタリング~ odbcZabbix による ms sql監視 ~データベースモニタリング~ odbc
Zabbix による ms sql監視 ~データベースモニタリング~ odbc
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lake
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 

Similar a NiFi 시작하기

파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호Jiho Lee
 
build a linux webhosting server
build a linux webhosting serverbuild a linux webhosting server
build a linux webhosting server정현 윤
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version옥시즌
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version옥시즌
 
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료BOMI KIM
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version옥시즌
 
이디스커버리 솔루션의 구조
이디스커버리 솔루션의 구조이디스커버리 솔루션의 구조
이디스커버리 솔루션의 구조Park Youngsoo
 
파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)
파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)
파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)옥시즌
 
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)옥시즌
 
HashiTalk 2021 - Terraform 도입과 파이프라인 구축 및 운영
HashiTalk 2021 - Terraform 도입과 파이프라인 구축 및 운영HashiTalk 2021 - Terraform 도입과 파이프라인 구축 및 운영
HashiTalk 2021 - Terraform 도입과 파이프라인 구축 및 운영JooHyung Kim
 
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)옥시즌
 
파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)
파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)
파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)옥시즌
 
MSA와 infra
MSA와 infraMSA와 infra
MSA와 infraJe Hun Kim
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version옥시즌
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임codenavy
 
Apache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloopsApache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloopsSungMin OH
 
Hadoop설명
Hadoop설명Hadoop설명
Hadoop설명Ji Hoon Lee
 

Similar a NiFi 시작하기 (20)

파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호
 
build a linux webhosting server
build a linux webhosting serverbuild a linux webhosting server
build a linux webhosting server
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
 
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
 
이디스커버리 솔루션의 구조
이디스커버리 솔루션의 구조이디스커버리 솔루션의 구조
이디스커버리 솔루션의 구조
 
파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)
파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)
파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)
 
Svn
SvnSvn
Svn
 
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
 
9
99
9
 
HashiTalk 2021 - Terraform 도입과 파이프라인 구축 및 운영
HashiTalk 2021 - Terraform 도입과 파이프라인 구축 및 운영HashiTalk 2021 - Terraform 도입과 파이프라인 구축 및 운영
HashiTalk 2021 - Terraform 도입과 파이프라인 구축 및 운영
 
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
 
파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)
파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)
파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)
 
MSA와 infra
MSA와 infraMSA와 infra
MSA와 infra
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임
 
Apache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloopsApache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloops
 
Git
Git Git
Git
 
Hadoop설명
Hadoop설명Hadoop설명
Hadoop설명
 

Último

A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 

Último (6)

A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 

NiFi 시작하기

  • 2. 저는요? 저는 Apache에 소속된 오픈 소스에요. 분산 환경에서 대량의 데이터를 수집, 처리하기 위해 만들어 졌죠. NSA(National Security Agency)에서 태어 났어요. 실시간 ETL 정도로 쉽게 생각하실 수 있지만, 저는 FBP(flow-based programming)라는 개념을 가지고 더 많은 일을 할 수 있어요.
  • 3. 제가 잘하는 건요? 전 실시간 처리를 정말 잘해요. 예를들어 특정 디렉토리에 파일이 생성되면 바로 다른 DB에 저장할 수도, 다른 곳으로 FTP로 보낼 수도 있죠. 요즘 빅데이터 시대가 되면서 더 많은 일을 하게 되었죠. 장애가 나도 저는 복구 될때까지 데이터를 처리를 못할 수는 있지만, 잃어버리는 일은 없어요. Zero Master 클러스터 환경을 제공하고, 확장도 쉽게되요. 그 밖에 HTTPS를 지원해 통신에 대한 보안도 잘 되어있고요. 웹 기반에 비교적 직관적인 인터페이스를 가지고 있어 사용하기도 쉬워요. 데이터의 이동 경로를 추적할 수 있어요. 마지막으로 클러스터간의 Site-to-Site라는 것을 이용해 데이터를 교환할 수 있어요.
  • 4. 제가 못하는 것은? 배치 작업은 잘 못해요. 예를들어 하둡 환경에서 대용량 파일을 빠르게 전송해야 한다면 DistCP가 더 좋아요. 그리고 원본 소스의 있는 파일들이 목적지까지 다 전달되었는지도 알기 힘들어요. 스케줄러가 있다고 저를 (배치) 스케줄러라고 생각하시면 안 되요. Jenkins와 같이 현재 실행되는 내용을 확인할 수 없어요. 오직 실행이 끝나고 성공과 실패, 출력 결과를 알 수 있어요. 저는 간단한 데이터 조작만 가능하지, 복잡한 연산은 잘 못 해요. 하지만 Spark, Storm 등과 연동해 할 수 있죠.
  • 5. 저를 구성하는 요소 Processor Connection FlowFile FlowFile는 제가 인식하는 데이터 단위에요. Processor는 FlowFile을 수집, 변형, 저장하는 기능을 해요. Connection은 Processor와 Processor를 연결해, FlowFile을 전달하죠.
  • 6. FlowFile 속성(Attribute)과 내용(Content)로 구성되어 있어요. 속성은 키/값 형태로 데이터의 이동 및 저장 시 필요한 정보들이 들어 있고요. Expression Language가 지원되서 값을 다양하게 제어할 수 있어요. Processor와 Processor를 이동할 때마다 복사본이 만들어져서 추적이 가능하죠. 근데 내용은 복사하지 않고, 어디에 있는지 포인트 정보만 복사해 크게 부담되지는 않아요.
  • 7. 여기서 잠깐! 저장소(repository) FlowFile 정보가 어디에 저장되고, 또 어떻게 이것을 추적 가능할 까요? FlowFile은 생성되면 FlowFile Repository에 속성값과 내용이 어디에 있는지 저장되고, Content Repository에 내용이 저장되요. 그리고 Processor가 처리될 때마다 Provenance Repository에 FlowFile 이력(이벤트)이 남아요.
  • 8. FlowFile 흐름 간단하게 FlowFile이 어떻게 저장소에 있는지 알아볼께요. 최대한 쉽게 설명할텐데 솔직히 이해하기 쉽지 않아요. 그냥 그렇구나 하고 받아드리셔도 되고, 꼭 아시고 싶으시면 공식 설명서인 Apache NiFi In Depth를 참고하세요.
  • 9. Processor 150개가 넘는 Processor를 제공하고, 확장 가능해요. ExecuteScript Processor까지 활용한다면 훨씬 더 많은 일들을 할 수 있어요. 근데, 자주 쓰는거는 몇개 안되요. HTTP, Kafka, DB, FTP 관련 Processor와 속성을 변경하는 UpdateAttribute, 데이터를 합치는 MergeContent, 데이터를 특정 개수로 분할하는 Split* 시리즈, 데이터 타입을 변경하는 Convert* 시리즈 등을 많이 사용한답니다.
  • 10. Connection FlowFile의 대기열(Queue)라고 생각하면 되요. 이 대기열은 FlowFile의 우선순위, 만료, 부하 조절 기능 제공해요. 우선순위는 어떤 순(Prioritization)으로 FlowFile을 다음 Processor에게 제공할 지, 만료는 얼마까지만 대기열에 머물지(expiration), 부하 조절 기능은 얼마 만큼 차면 FlowFile 생성을 더디게 만들지(Back Pressure)를 말해요.
  • 11. 기타 구성 요소 Flow Controller는 제가 사용하는 스케줄러를 말해요. 특정 간격 또는 Cron 표현식으로 스케줄링을 할 수 있고요. 클러스터 환경에서 동시에 실행되는 것을 막기 위해 Primary Node에서만 실행할 수도 있죠. Controller Service를 이용해 Processor간 자원을 공유할 수 있어요. 예를들어 DBCPConnectionPool을 이용해서 DB 연결 정보를 Processor간에 공유할 수 있어요. Process Group을 통해 관련있는 Processor들을 묶어서 관리할 수 있어요. 계층적으로 사용할 수 있어 Processor들이 많을 때도 잘 관리할 수 있어요. Input Port와 Output Port를 이용해 Process Group간에 데이터를 주고 받을 수 있어요. Remote Process Group을 이용해 또 다른 NiFi 시스템과 Site-to-site 프로토콜을 이용해 데이터를 주고 받을 수 있어요. Remote Input Port와 Output Port를 이용해 데이터를 주고 받을 수 있어요. Web Server가 내장되어 있어요. Jetty 서버를 사용하고, 스프링 기반의 웹 애플리케이션이죠. 모두 비동기 방식으로 처리해서 비교적 높은 성능을 내요(SEDA: An Architecture for Highly Concurrent Server Applications).
  • 12. 그래서 저는 이런 모양이에요.
  • 13. 저는 이렇게 사용될 수 있어요. (Change Data Capture) Phoenix 저장
  • 14. 저는 이렇게 사용될 수 있어요. (로그 수집) HDFS 저장 Phoenix 저장