플러그인 레퍼런스
플러그인 레퍼런스 (Plugin reference)
Apache Pinot의 플러그인 패밀리(family) 전체에 대한 구성·사용 레퍼런스를 다루는 문서예요. Pinot에 내장된 각 플러그인 패밀리의 구성 측면을 촘촘하게 정리해서, 어떤 구현이 Pinot와 함께 제공되는지, 어떤 구성 키를 받아들이는지, 어떻게 활성화하는지를 알 수 있어요.
출처: 문서
본문
Apache Pinot는 열 개의 플러그인 패밀리로 구성된 플러그 앤 플레이(plug-and-play) 아키텍처를 갖추고 있어요. 각 패밀리는 특정 확장성 요구를 겨냥해요 — 다른 형식의 데이터를 읽는 것부터 메트릭을 모니터링 스택으로 내보내는 것까지 다양하죠.
이 섹션에서는 각 플러그인 패밀리의 구성 측면을 다뤄요: Pinot와 함께 제공되는 구현, 받아들이는 구성 키, 활성화 방법 등이요. 자체 플러그인을 작성하려면 개발자 가이드의 플러그인 아키텍처 섹션을 보세요.
플러그인 패밀리 한눈에 보기 (Plugin Families at a Glance)
| 플러그인 패밀리 | 하는 일 | 구성 레퍼런스 | 작성 가이드 |
|---|---|---|---|
| 스트림 수집 (Stream Ingestion) | 실시간 스트리밍 플랫폼(Kafka, Kinesis, Pulsar)에서 데이터 소비 | 스트림 수집 커넥터 · 버전 매트릭스 | 스트림 수집 플러그인 |
| 입력 형식 (Input Format) | 수집 중 파일·스트림에서 레코드 읽기 (Avro, JSON, Parquet, ORC, CSV, …) | 입력 형식 | 입력 형식 플러그인 |
| 파일 시스템 (Filesystem) | 플러그 가능한 저장소 백엔드(S3, GCS, HDFS, ADLS)에서 세그먼트 저장·가져오기 | 파일 시스템 플러그인 | 파일 시스템 플러그인 |
| 배치 수집 (Batch Ingestion) | 다양한 실행 프레임워크(Standalone, Hadoop, Spark)에서 데이터 수집 잡 실행 | 배치 수집 | — |
| 메트릭 (Metrics) | 내부 JMX 메트릭을 Dropwizard, Yammer, 또는 합성 백엔드로 수집·노출 | 메트릭 플러그인 | 메트릭 플러그인 |
| 세그먼트 라이터 (Segment Writer) | 전체 배치 수집 잡 없이 프로그래밍 방식으로 Pinot 세그먼트 구축 | — | 세그먼트 라이터 플러그인 |
| 세그먼트 업로더 (Segment Uploader) | 완성된 세그먼트 tar 파일을 Pinot 클러스터에 업로드 | — | 세그먼트 업로더 플러그인 |
| 미니언 태스크 (Minion Tasks) | Pinot 미니언 노드에서 백그라운드 처리 태스크 실행 (merge, purge, compaction, …) | 미니언 · Merge/Rollup 태스크 | 미니언 태스크 플러그인 |
| 환경 (Environment) | 장애 도메인 인식 배치를 위한 클라우드별 인스턴스 메타데이터 발견 | 환경 공급자 | — |
| 시계열 언어 (Time Series Language) | 커스텀 시계열 쿼리 언어(M3QL, PromQL) 지원 | — | 시계열 언어 플러그인 |
스트림 수집 커넥터 (Stream Ingestion Connectors)
Pinot는 Apache Kafka(3.x와 4.x), Amazon Kinesis, Apache Pulsar용 커넥터를 제공해요. 각 커넥터는 StreamConsumerFactory 구현을 제공해요.
입력 형식 (Input Format)
입력 형식 플러그인은 수집 중 파일·스트림에서 데이터를 읽어요. 배치 수집은 RecordReader 구현을, 실시간 수집은 StreamMessageDecoder 구현을 사용해요. Pinot는 Avro, CSV, JSON, ORC, Parquet, Thrift, Protobuf, Arrow, CLP-Log, Confluent Schema Registry 변형용 리더와 함께 제공돼요.
파일 시스템 (Filesystem)
파일 시스템 플러그인은 PinotFS 저장소 추상화를 제공해서 세그먼트를 S3, GCS, HDFS, ADLS 같은 다양한 백엔드에 저장할 수 있게 해줘요.
배치 수집 (Batch Ingestion)
배치 수집 플러그인은 Standalone, Hadoop, Spark 3 같은 다양한 실행 프레임워크에서 수집 잡을 실행해요.
메트릭 (Metrics)
메트릭 플러그인은 Pinot가 내부 JMX 메트릭에 사용할 메트릭 라이브러리를 제어해요. Pinot는 Yammer(기본), Dropwizard, 그리고 여러 레지스트리로 팬아웃하는 합성(Compound) 구현과 함께 제공돼요.
세그먼트 라이터 (Segment Writer)
세그먼트 라이터 플러그인은 전체 배치 수집 잡을 거치지 않고 GenericRow 레코드를 프로그래밍 방식으로 모아 Pinot 세그먼트를 구축할 수 있는 API를 제공해요. 내장된 파일 기반 구현은 로컬 디스크에 행을 Avro 레코드로 버퍼링해요.
세그먼트 업로더 (Segment Uploader)
세그먼트 업로더 플러그인은 완성된 세그먼트 tar 파일을 Pinot 클러스터에 업로드하는 작업을 처리해요. 기본 구현은 테이블 구성의 batchConfigMaps로 설정된 모든 푸시 모드를 지원해요.
미니언 태스크 (Minion Tasks)
미니언 태스크 플러그인은 Pinot 미니언 노드에서 실행되는 백그라운드 처리 태스크를 정의해요. 내장 태스크에는 MergeRollup, Purge, RealtimeToOfflineSegments, SegmentGenerationAndPush, UpsertCompaction, UpsertCompactMerge, RefreshSegment가 있어요.
환경 공급자 (Environment Provider)
환경 플러그인은 시작 시 클라우드별 인스턴스 메타데이터를 발견해서 장애 도메인 인식 데이터 배치를 가능하게 해줘요. Azure 공급자가 유일한 내장 구현이에요.
시계열 언어 (Time Series Language)
시계열 언어 플러그인은 Pinot가 M3QL, PromQL 같은 커스텀 시계열 쿼리 언어를 지원하게 해줘요.
커스텀 플러그인 개발 (Developing Custom Plugins)
플러그인은 pinot-spi의 인터페이스를 구현해요. 전체 플러그인 작성 워크플로우는 개발자 가이드를 보세요:
플러그인 패밀리 레퍼런스 (Plugin Families Reference)
구성 트리를 촘촘하게 유지하고 작성 가이드는 다른 곳에 둘 수 있도록, 상세 패밀리 페이지들은 이 하위 트리에 모여 있어요.
| 패밀리 | 용도 | 페이지 |
|---|---|---|
| 스트림 수집 커넥터 | Kafka, Kinesis, Pulsar 소비자 팩토리 | 스트림 수집 커넥터 |
| 스트림 커넥터 버전 매트릭스 | Broker, 커넥터, Kafka 메이저 버전 간 호환성 | 스트림 커넥터 버전 매트릭스 |
| 메트릭 플러그인 | JMX 메트릭 백엔드와 레지스트리 팬아웃 | 메트릭 플러그인 |
| 환경 공급자 | 인스턴스 배치를 위한 클라우드 메타데이터 발견 | 환경 공급자 |