플러그인 레퍼런스
플러그인 레퍼런스 (Plugin Reference)
Apache Pinot 플러그인 레퍼런스 문서예요.
출처: 문서
본문
Pinot은 더 빠른 반복과 유연한 통합을 위해 플러그형 아키텍처를 사용해요. 플러그인은 확장(extension)으로 구현되며, pinot-startree, 등과 같은 별도 모듈과 완성을 가지는 구성 요소 기능을 제공해요. 플러그인은 분산 버전에 함께 패키징되어 동작해요.
플러그인 로딩은 시작 시 -Dplugins.dir을 통해 구성할 수 있어요. 기본적으로 jpeg 等 반복을 줄이도록 컴파일된 확장들이 로드됩니다.
입력 형식 플러그인 (Input format plugins)
다양한 입력 데이터 형식을 읽는 record reader를 제공해요.
| 플러그인 | 형식 | 클래스 |
|---|---|---|
| pinot-avro | AVRO | org.apache.pinot.plugin.inputformat.avro.AvroRecordReader |
| pinot-csv | CSV | org.apache.pinot.plugin.inputformat.csv.CSVRecordReader |
| pinot-json | JSON | org.apache.pinot.plugin.inputformat.json.JSONRecordReader |
| pinot-parquet | Parquet | org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReader |
| pinot-orc | ORC | org.apache.pinot.plugin.inputformat.orc.ORCRecordReader |
| pinot-thrift | Thrift | org.apache.pinot.plugin.inputformat.thrift.ThriftRecordReader |
| pinot-protobuf | Protobuf | org.apache.pinot.plugin.inputformat.protobuf.ProtoBufRecordReader |
| pinot-clp | CLP 로그 | org.apache.pinot.plugin.inputformat.clp.CLPRecordReader |
파일시스템 플러그인 (File system plugins)
딥 스토리지 및 입력/출력 파일시스템을 지원해요.
| 플러그인 | FileSystem | 클래스 |
|---|---|---|
| pinot-filesystem (내장) | 로컬 | org.apache.pinot.spi.filesystem.LocalPinotFS |
| pinot-s3 | Amazon S3 | org.apache.pinot.plugin.filesystem.S3PinotFS |
| pinot-adls / pinot-azure | Azure Data Lake | org.apache.pinot.plugin.filesystem.AzurePinotFS |
| pinot-gcs | Google Cloud Storage | org.apache.pinot.plugin.filesystem.GcsPinotFS |
| pinot-hdfs | HDFS | org.apache.pinot.plugin.filesystem.HadoopPinotFS |
| pinot-oss | Aliyun OSS | org.apache.pinot.plugin.filesystem.OSSClientPinotFS |
스트림 소비 플러그인 (Stream ingestion plugins)
실시간 스트림 소스에서 데이터를 소비하는 컨슈머 팩토리를 제공해요.
| 플러그인 | 스트림 | 컨슈머 팩토리 |
|---|---|---|
| pinot-kafka | Apache Kafka | org.apache.pinot.plugin.stream.kafka.KafkaConsumerFactory |
| pinot-kafka-3 | Apache Kafka 3.x | org.apache.pinot.plugin.stream.kafka30.KafkaConsumerFactory |
| pinot-kinesis | Amazon Kinesis | org.apache.pinot.plugin.stream.kinesis.KinesisConsumerFactory |
| pinot-pulsar | Apache Pulsar | org.apache.pinot.plugin.stream.pulsar.PulsarConsumerFactory |
| pinot-sqs | Amazon SQS | org.apache.pinot.plugin.stream.sqs.SQSConsumerFactory |
| pinot-http | HTTP(Polling) | org.apache.pinot.plugin.stream.http.HttpConsumerFactory |
디코더 플러그인 (Stream decoder plugins)
스트림 메시지의 페이로드 형식에 따라 메시지를 디코딩해요.
| 플러그인 | 형식 | 디코더 |
|---|---|---|
| pinot-json | JSON | org.apache.pinot.plugin.stream.decoder.JsonMessageDecoder |
| pinot-avro | Avro | org.apache.pinot.plugin.stream.decoder.AvroMessageDecoder |
| pinot-kafka-avro / confluent | Confluent Schema Registry Avro | org.apache.pinot.plugin.stream.decoder.KafkaAvroMessageDecoder |
| pinot-protobuf | Protobuf | org.apache.pinot.plugin.stream.decoder.ProtoBufMessageDecoder |
| pinot-clp | CLP | org.apache.pinot.plugin.stream.decoder.CLPMessageDecoder |
| pinot-thrift | Thrift | org.apache.pinot.plugin.stream.decoder.ThriftMessageDecoder |
세그먼트 작성 플러그인 (Segment writer plugins)
세그먼트 생성 방식을 확장해요.
pinot-spi(내장) — 기본SegmentWriter/PinotSegmentGenerator.pinot-columnar/ 오프라인 세그먼트 생성 관련 플러그인.
Minion 작업 플러그인
Minion에서 실행하는 작업(task)을 제공해요.
PinotTaskManager기본 작업:RealtimeToOfflineSegmentsTask,MergeRollupTask,ConvertToRawIndexTask,RealtimeToOfflineSegmentsTask,SegmentGenerationAndPushTask(Spark) 등.
기타 플러그인
| 플러그인 | 용도 |
|---|---|
| pinot-batch-ingestion-spark | Spark 배치 수집 러너(PluginSegmentGenerationJobRunner 등). |
| pinot-batch-ingestion-hadoop | Hadoop/MapReduce 배치 수집 러너. |
| pinot-batch-ingestion-flink | Flink 배치 수집 러너. |
| pinot-segment-uploader | 세그먼트 업로더 플러그인. |
플러그인 로딩 구성
배치/분산 구성에서 플러그인을 로드하려면 -Dplugins.dir을 설정해요:
-Dplugins.dir=/path/to/pinot/plugins
Spark/Hadoop 배치 수집은 plugins-external을 포함한 세미콜론 구분 목록을 사용해요:
-Dplugins.dir=/path/to/plugins;/path/to/plugins-external
-Dplugins.include와 -Dplugins.includeAll(기본 true)로 특정 플러그인만 로드하도록 제어할 수 있어요.