StreamFusion - Flink SQL을 Rust 기반 네이티브 실행기로 가속하는 도구

5 days ago 12
  • Apache Flink가 작성한 실행 계획의 쿼리를 Rust, Apache Arrow, DataFusion 기반 네이티브 실행기로 처리하는 가속기
  • Flink는 SQL 계획과 작업 조정, checkpoint를 계속 담당하며, 애플리케이션 코드를 고치지 않고 기존 streaming SQL 작업에 적용 가능
  • 계획 단계에서 가속 가능 여부를 판단하며, 질의 내부에 지원하지 않는 연산자가 하나라도 있으면 전체 질의를 기존 Flink 실행으로 처리
  • 네이티브 구간은 row 단위 데이터 대신 Arrow batch를 교환해 연산자 사이의 행/열 변환과 JVM 처리 비용을 줄임
  • 필터, projection, 집계, window, join, Top-N, 중복 제거와 changelog 처리 등 주요 streaming SQL 연산 지원
  • Kafka 입출력과 JSON, CSV, Avro, Protobuf 등의 직렬화/역직렬화를 가속하며, offset과 transaction, exactly-once 처리는 Flink가 계속 관리
  • Parquet/ORC 쓰기와 Delta Lake, Apache Paimon 연동에도 네이티브 경로가 있지만, Kafka 외 연동은 실험 단계로 구분
  • 현재 Flink 2.2.0과 2.2.1을 지원하며, Flink의 lib 디렉터리에 JAR를 추가하는 방식으로 설치
  • 배포 JAR에는 Linux x86_64와 macOS Apple Silicon용 네이티브 라이브러리가 포함돼 별도 Rust 빌드 없이 사용 가능
  • 자체 Nexmark 측정에서 메모리 기반 상태 저장은 1.31~1.44배, RocksDB 기반은 2.75~3.41배의 처리량을 기록
    • Apple M1 Max, 병렬도 4, Kafka JSON 이벤트 200만 건을 읽고 exactly-once로 결과를 쓰는 조건
  • Apache Flink나 Apache DataFusion의 공식 하위 프로젝트는 아님
  • Apache-2.0 라이선스
Read Entire Article




피플앤툴즈 네트워크
🛍 샵