Storage/Druid

druid 구성 요소

Prower 2022. 7. 28. 00:37
728x90
반응형
  • druid의 구조는 process(service)로 구성된다.
  • 각 server는 process가 배포되는 단위이며 process는 운영상의 유연함을 위해 3개 type의 서버로 나눠 배포된다.

process(service)

  • Coodinator
  • Overlord
  • Broker
  • Historical
  • Middleware manager and Peon
  • Indexer
  • Router

server

  • Master
  • Query
  • Data

전체 구조

ref: https://druid.apache.org/docs/latest/design/processes.html

Druid process and server

Master server

  • Master server는 데이터 적재와 가용성을 책임진다.
  • 실질적으로 새로운 적재 작업을 실행시키며 Data server에서 넘어온 데이터의 가용성을 보장한다.
  • Master server의 기능은 Coordinator와 Overload process에 의해 수행된다.

Coordinator process

  • Coordinator process는 실질적으로 segment의관리와 분산에 대한 역할을 수행한다.
  • Data server의 Historical process를 통해 segment를 로드하거나 드랍 시킨다.

Overlord process

  • Overlord process는 Data server의 Middlemanager process를 관제하는 역할과 druid로 들어오는 데이터 적재를 제어한다.
  • 데이터 적재 작업을 Middlemanager에 할당하여 segment를 publish하도록 한다.

Query server

  • Query server는 유저와 클라이언트 프로그램에 endpoint를 제공하고, 요청으로 들어온 쿼리를 Data server나 다른 Query server로 전달하는 역할을 맡는다.
  • Qeury server의 기능은 Broker와 Router process에 의해 수행된다.

Broker process

  • 외부 클라이언트로 부터 쿼리 요청을 받아 Data server로 전달한다.
  • subquery가 요청으로 들어온 경우 모든 결과값을 취합하여 반환한다.
  • 유저는 실질적으로 Historical process나 Middlemanager process에 직접 질의하는게 아니라 Broker를 통해 질의하게 된다.

Router process

  • Druid, Overlord, Coordinator process의 앞단에서 사용자에게 통합된 API gateway를 제공한다.
  • druid를 더 편하게 사용하는데 의의가 있지만, Router process는 optional로 구축하지 않아도 druid를 실행하는데 문제가 없다.

Data server

  • 실질적으로 데이터 적재 작업을 수행하며 질의가 가능한 데이터를 저장한다.
  • Data server의 기능은 Historical과 Middlemanager process에 의해 실행된다.

Historical process

  • 데이터를 저장하고 쿼리를 수행하는 등 데이터에 대한 실질적인 역할을 수행한다.
  • deep storage로 부터 segment를 받아 segment에 대한 쿼리를 수행하고, 결과를 반환한다.

Middlemanager process

  • druid 클러스터에 들어온 새로운 데이터의 적재를 책임진다.
  • 외부로 부터 데이터를 읽어 새로운 segment를 publish한다.

Peon process

  • Middlemanager로 부터 생성된 task 실행 엔진이다.
  • 각 Peon process는 JVM을 통해 하나의 task를 실행시킨다.

External dependency

Deep storage

  • segment가 실질적으로 저장되는 저장소
  • druid와 분리되어 segment가 저장되어 있으므로, druid node가 다운되더라도 데이터가 유실되지 않는다.
  • 다만, deep storage에 있는 데이터가 삭제된다면 영구적으로 조회될 수 없다.
  • deep storage는 외부 의존성으로 local, s3, HDFS 등을 통해 구축할 수 있다.

Metadata storage

  • 시스템에 대한 metadata가 저장되는 저장소
  • druid cluster 구동을 위한 필수 데이터가 저장되며, segment 같은 실질적인 데이터는 저장하지 않는다.
  • 일반적인 RDBMS로 구축한다.

저장하는 데이터

  • Segments records
  • Rule records
  • Configuration records
  • Task-related tables
  • Audit records

Zookeeper

  • apache zookper를 사용하여 구축하며, druid cluster의 상태, 설정 정보를 관리하고 전체 cluster로 공유한다.
728x90
반응형