확장

확장 (Extensions)

Druid는 런타임에 기능을 추가할 수 있는 확장 시스템을 제공해요. 이 문서는 코어 확장과 커뮤니티 확장의 목록, 그리고 확장을 로드하는 방법을 다룹니다.

출처: 문서

본문

Druid는 런타임에 기능을 추가할 수 있는 확장 시스템을 구현합니다. 확장은 주로 딥 스토리지(HDFS, S3 등), 메타데이터 스토어(MySQL, PostgreSQL 등), 새 집계자(aggregator), 새 입력 포맷 등을 지원하기 위해 사용돼요.

운영 클러스터는 일반적으로 최소 두 개의 확장을 사용합니다. 하나는 딥 스토리지용, 하나는 메타데이터 스토어용이에요. 많은 클러스터가 추가 확장을 더 사용하기도 합니다.

코어 확장 (Core extensions)

코어 확장은 Druid 커미터가 유지 관리합니다.

이름 설명 문서
druid-avro-extensions Apache Avro 데이터 포맷의 데이터 지원 link
druid-azure-extensions Microsoft Azure 딥 스토리지 link
druid-basic-security Basic HTTP 인증 및 역할 기반 접근 제어(RBAC) 지원 link
druid-bloom-filter Druid 쿼리에서 Bloom filter 지원 link
druid-catalog Druid의 카탈로그에 저장된 메타데이터를 구성·업데이트·검색·관리할 수 있게 해줌 link
druid-datasketches Apache DataSketches로 근사 카운트와 집합 연산 지원 link
druid-google-extensions Google Cloud Storage 딥 스토리지 link
druid-hdfs-storage HDFS 딥 스토리지 link
druid-histogram 근사 히스토그램 및 quantile 집계자. **비권장(deprecated)**이며, 대신 druid-datasketches 확장의 DataSketches quantiles 집계자를 사용하세요. link
druid-kafka-extraction-namespace Apache Kafka 기반 네임스페이스 lookup. namespace lookup 확장 필요 link
druid-kafka-indexing-service 인덱싱 서비스를 위한 supervised exactly-once Apache Kafka 수집 link
druid-kinesis-indexing-service 인덱싱 서비스를 위한 supervised exactly-once Kinesis 수집 link
druid-kerberos Druid 프로세스용 Kerberos 인증 link
druid-lookups-cached-global lookup에 대한 jvm-전역 즉시 캐싱을 제공하는 모듈. lookup 데이터를 가져오는 JDBC 및 URI 구현 제공 link
druid-lookups-cached-single lookup을 전역 lookup 풀에서 격리해야 하는 유스케이스를 지원하는 per-lookup 캐싱 모듈 link
druid-multi-stage-query Apache Druid용 multi-stage query 아키텍처와 multi-stage query 태스크 엔진 지원 link
druid-orc-extensions Apache ORC 데이터 포맷의 데이터 지원 link
druid-parquet-extensions Apache Parquet 데이터 포맷의 데이터 지원. druid-avro-extensions 로드 필요 link
druid-protobuf-extensions Protobuf 데이터 포맷의 데이터 지원 link
druid-s3-extensions Amazon S3 데이터 연동 및 S3를 딥 스토리지로 사용 link
druid-ec2-extensions middle manager 자동 확장을 위한 AWS EC2 연동 UNDOCUMENTED
druid-aws-rds-extensions AWS RDS DB Cluster에 대한 AWS 토큰 기반 접근 지원 link
druid-stats 분산(variance)과 표준편차(standard deviation)를 포함한 통계 관련 모듈 link
mysql-metadata-storage MySQL 메타데이터 스토어 link
postgresql-metadata-storage PostgreSQL 메타데이터 스토어 link
simple-client-sslcontext 다른 Druid 프로세스와 HTTPS로 통신할 때 Druid 내부 HttpClient가 사용하는 간단한 SSLContext 제공자 모듈 link
druid-pac4j Druid 프로세스용 OpenID Connect 인증 link
druid-kubernetes-extensions ZooKeeper 없이 Kubernetes에 Druid 클러스터 배포 link
druid-kubernetes-overlord-extensions Middle Manager 없이 k8s에서 태스크 실행 지원 link

커뮤니티 확장 (Community extensions)

참고: 커뮤니티 확장은 Druid 커미터가 유지 관리하지 않습니다. 다만 이 확장을 사용하는 커뮤니티 멤버의 패치는 수용합니다. 코어 확장만큼 광범위하게 테스트되지 않았을 수 있어요.

여러 커뮤니티 멤버가 기본 Druid tarball에 포함되지 않는 자신만의 확장을 기여했습니다. 커뮤니티 확장의 유지 관리를 맡고 싶다면 [email protected]에 글을 올려 알려주세요!

이 커뮤니티 확장들은 모두 pull-deps를 -c 좌표 옵션과 함께 사용해 org.apache.druid.extensions.contrib:{EXTENSION_NAME}:{DRUID_VERSION}을 가져오면 다운로드할 수 있습니다.

이름 설명 문서
aliyun-oss-extensions Aliyun OSS 딥 스토리지 link
ambari-metrics-emitter Ambari Metrics Emitter link
druid-cassandra-storage Apache Cassandra 딥 스토리지 link
druid-cloudfiles-extensions Rackspace Cloudfiles 딥 스토리지 link
druid-compressed-bigdecimal 압축 Big Decimal 타입 link
druid-ddsketch DDSketch 기반 근사 quantile 지원 link
druid-deltalake-extensions Delta Lake 테이블 수집 지원 link
druid-distinctcount DistinctCount 집계자 link
druid-exact-count-bitmap Long 컬럼 위에서 Roaring Bitmap을 사용한 정확한 카디널리티 카운트 지원 link
druid-iceberg-extensions Iceberg 테이블 수집 지원 link
druid-redis-cache Redis 기반 Druid 캐시 구현 link
druid-time-min-max 타임스탬프용 Min/Max 집계자 link
sqlserver-metadata-storage Microsoft SQLServer 메타데이터 스토어 link
graphite-emitter Graphite 메트릭 emitter link
statsd-emitter StatsD 메트릭 emitter link
kafka-emitter Kafka 메트릭 emitter link
druid-thrift-extensions thrift 수집 지원 link
druid-opentsdb-emitter OpenTSDB 메트릭 emitter link
druid-moving-average-query Druid 쿼리에서 Moving Average 및 기타 Aggregate Window Function 지원 link
druid-influxdb-emitter InfluxDB 메트릭 emitter link
druid-momentsketch momentsketch 라이브러리를 사용한 근사 quantile 쿼리 지원 link
druid-tdigestsketch T-Digest 기반 근사 sketch 집계자 지원 link
gce-extensions GCE 확장 link
prometheus-emitter Prometheus용 Druid 메트릭 노출 link
druid-spectator-histogram 효율적인 근사 백분위(percentile) 쿼리 지원 link
druid-rabbit-indexing-service RabbitMQ 인덱싱 태스크 생성·관리 지원 link
druid-ranger-security Apache Ranger를 통한 접근 제어 지원 link

커뮤니티 확장을 코어 확장으로 승격

확장을 코어로 승격시키고 싶다면 [email protected]에 글을 올려주세요. 커뮤니티가 적극적으로 지원하는 커뮤니티 확장이라면, 커뮤니티 피드백에 기반해 코어로 승격할 수 있어요.

자신만의 확장을 만드는 방법은 여기를 참고하세요.

확장 로드하기

코어 확장 로드

Apache Druid는 모든 코어 확장을 기본으로 번들합니다. 옵션 목록은 위 확장 목록을 참고하세요. 번들 확장은 common.runtime.properties의 druid.extensions.loadList 속성에 이름을 추가해 로드할 수 있어요. 예를 들어 postgresql-metadata-storage와 druid-hdfs-storage 확장을 로드하려면 다음 설정을 사용합니다.

druid.extensions.loadList=["postgresql-metadata-storage", "druid-hdfs-storage"]

이 확장들은 배포판의 extensions 디렉터리에 위치합니다.

참고: Druid는 두 가지 설정 세트를 번들합니다. 하나는 quickstart용, 하나는 클러스터 구성용이에요. 자신의 구성에 맞는 올바른 common.runtime.properties를 업데이트하고 있는지 확인하세요.

참고: 라이선스 때문에 mysql-metadata-storage 확장은 필요한 MySQL JDBC 드라이버를 포함하지 않습니다. 이 라이브러리 설치 방법은 MySQL 확장 페이지를 참고하세요.

커뮤니티 확장 로드

Druid에 번들되지 않은 커뮤니티 및 서드파티 확장도 로드할 수 있어요. 그러려면 먼저 확장을 다운로드한 뒤 extensions 디렉터리에 설치해야 합니다. 확장은 배포자에게서 직접 다운로드하거나, Maven에서 제공된다면 포함된 pull-deps가 대신 다운로드해줄 수 있어요. pull-deps를 사용하려면 확장의 전체 Maven 좌표를 groupId:artifactId:version 형식으로 지정하세요. 예를 들어 (가상의) 확장 com.example:druid-example-extension:1.0.0은 다음과 같이 실행합니다.

java \
  -cp "lib/*" \
  -Ddruid.extensions.directory="extensions" \
  org.apache.druid.cli.Main tools pull-deps \
  -c "com.example:druid-example-extension:1.0.0"

확장은 한 번만 설치하면 됩니다. 그런 다음 common.runtime.properties의 druid.extensions.loadList에 druid-example-extension을 추가해 Druid가 확장을 로드하도록 지시합니다.

참고: 여기 나열된 모든 Extension 관련 설정 속성이 올바르게 설정되어 있는지 확인하세요.

참고: 거의 모든 커뮤니티 확장의 Maven groupId는 org.apache.druid.extensions.contrib입니다. artifactId는 확장의 이름이고, version은 최신 Druid 안정 버전입니다.

클래스패스에서 확장 로드

런타임에 확장 jar를 클래스패스에 추가하면 Druid도 그 확장을 시스템에 로드합니다. 이 메커니즘은 이해하기 상대적으로 쉽지만, 클래스패스에 있는 모든 의존성 jar가 호환 가능한지 직접 확인해야 한다는 뜻이에요. 즉 이 방법을 사용할 때 Druid는 클래스 로더 격리(class loader isolation)를 유지하기 위한 어떤 조치도 취하지 않으므로, 클래스패스의 jar들이 서로 호환되는지 직접 확인해야 합니다.

더 알아보기 (Learn more)

  • 확장 관련 설정 속성의 전체 목록은 configuration 문서를 참고하세요.
  • pull-deps 사용법이 궁금하다면 해당 도구 문서를 확인해 보세요.