Purumir's Blog

Machine Learning, SW architect, Management, favorites

오픈 소스 ETL 툴 비교(Apache NiFi vs StreamSets)

빅데이터, AI 시대에 데이터가 존재하는 origin으로부터 데이터를 가져오고 이를 처리후 적재하기 위한 ETL(Extract-Transformation-Load) Tools가 존재합니다. 대표적인 것이 Apache NiFi, Apache Airflow, StreamSets등이 존재합니다.

과거 분석을 위해서는 BI(Business Intelligence)와 이를 위한 저장소로 DW(DataWare House)가 사용되었습니다. 최근에는 이러한 아키텍처 보다는 데이터 orgin으로부터 데이터를 수집해 저장하고, R이나 머신러닝/딥러닝등을 이용한 Analyze가 주류를 이루고 있습니다.

구분 설명
Past Apps/RDBMS(계정계)-> ETL -> DW(Data WareHouse) -> ETL -> BI(Business Intelligence)(정보계)
Emerging
(Current)
Data Sources(Log/Device/Streams/Apps) -> Ingest -> Data Stores -> Analyze -> Data Consumers(R/ML, Search, BI, Apps)


이 글에서는 Apache NiFi와 StreamSets를 비교해 보고자 합니다.

Apache NiFi StreamSets Data Collector (SDC)
SW개발처 - donation : NSA (2014)
- current : Hortonworks
- California 기반의 startup(2014)
- open source ETL project
URLs https://nifi.apache.org/ https://github.com/streamsets/datacollector
개발에 사용된 Language Java Java
License Apache 2.0 license Apache 2.0 license
Usages Stream Data 혹은 Regular Periodic Batches를 위한 Long Running Job용도 Stream Data 혹은 Regular Periodic Batches를 위한 Long Running Job용도
데이터 FlowFile(original data + meta-information) record format
(데이터를 규격화된 포맷으로 변환 처리)
origin type CSV, Other Record-Based Data 등 CSV, Other Record-Based Data 등
Components [Data Provenance]
- dataflow내에서 거의 모든 것을 기록하는 Big Brother service
- dataflow 수행 history 기록

[Controller Service]
-processor를 위한 유용한 정보를 제공
- SSL certificates, JDBC 설정등,
schema definition
- 동일 configuration의 동시 설정을 지원

[Process Groups] (이것 자체가 dataflows가 됨)
- 개별 dataflow를 Process Group으로 묶는 것이 가능

[Processor Outputs]
- Original : FlowFile의 origin
- Failure : FlowFile이 처리 오류 발생시
- Success : FlowFilw이 정상적으로 처리시
[Origins]
- 데이터가 존재하는 external sources.
- dataflow내에서 한개의 origin만이 존재가능

[Processors]
- data transformers.

[Destinations]
- 데이터 저장 stores

[Executors]
- 다른 processor들에 의해 생성된 event처리
- Email처리 시 Error발생시 이를 처리 → EMail Executor
특징 - Processor간에 Queue가 존재하여 Flow Control
- 핸들링 하는 데이터 포맷에 맞춰 다른 버전의 Processor를 가져야 함.(CSV, XLS별도식)
- Processor간에 Queue가 존재하지 않음
- binary file을 processing가능함
- kakfa conumer가 processor에 binary를 그대로 전송 가능함
장단점 장점)
- dataflow programming concept을 효율적 구현
- binary data 처리 가능
Data Provenance
단점)
-Spartan User Interface
-record단위 모니터링, 디버깅, 통계 제공 안함.
장점)
- record단위 모니터링, 디버깅, 통계 제공
- record단위 data와 streaming을 위한 갈끔한 UI

단점)
- 단일 processor 수정을 위해 전체 dataflow의 stop필요
- No reusable configuration for processors

위 비교표에서 볼수 있듯이 큰 차이점은 StreamSets의 경우 한개의 processor의 configuration을 수정하기 위해 전체 dataflow를 정지시켜야 합니다. UI상 Stop버튼을 눌러야 수정을 할 수 있도록 구성 되어 있습니다.

StreamSets의 경우 Startup에서 지속적으로 관리하는 형태라 UI의 구성 자체가 NiFi대비 우수하다고 볼 수 있습니다. 또한, 설치도 docker 형태를 제공하고 있어 편리하게 구성후 테스트를 진행 할 수 있습니다.