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
반응형