SlideShare a Scribd company logo
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 저장

More Related Content

What's hot

Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
AWSKRUG - AWS한국사용자모임
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101
DaeMyung Kang
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Kouhei Sutou
 
로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법
Jeongsang Baek
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
if kakao
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
YoungHeon (Roy) Kim
 
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
SANG WON PARK
 
카프카, 산전수전 노하우
카프카, 산전수전 노하우카프카, 산전수전 노하우
카프카, 산전수전 노하우
if kakao
 
Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기
SangWoo Kim
 
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Seongyun Byeon
 
Fast analytics kudu to druid
Fast analytics  kudu to druidFast analytics  kudu to druid
Fast analytics kudu to druid
Worapol Alex Pongpech, PhD
 
Hadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントHadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイント
Cloudera Japan
 
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
Amazon Web Services Korea
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
SeungYong Oh
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
 
Apache Hiveの今とこれから
Apache Hiveの今とこれからApache Hiveの今とこれから
Apache Hiveの今とこれから
Yifeng Jiang
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lake
DaeMyung Kang
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영
NAVER D2
 
Apache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic DatasetsApache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic Datasets
Alluxio, Inc.
 

What's hot (20)

Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
 
로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
 
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
 
카프카, 산전수전 노하우
카프카, 산전수전 노하우카프카, 산전수전 노하우
카프카, 산전수전 노하우
 
Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기
 
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
 
Fast analytics kudu to druid
Fast analytics  kudu to druidFast analytics  kudu to druid
Fast analytics kudu to druid
 
Hadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントHadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイント
 
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
Apache Hiveの今とこれから
Apache Hiveの今とこれからApache Hiveの今とこれから
Apache Hiveの今とこれから
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lake
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영
 
Apache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic DatasetsApache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic Datasets
 

Similar to 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 프로토콜 지원)
옥시즌
 
Svn
SvnSvn
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
옥시즌
 
9
99
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와 infra
Je 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_springloops
SungMin OH
 
Hadoop설명
Hadoop설명Hadoop설명
Hadoop설명Ji Hoon Lee
 

Similar to 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설명
 

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 저장