본문 바로가기
데이터 엔지니어링

[Druid] indexing service / Overlord

by 내기록 2023. 7. 16.
반응형

 

목차 LIST

     

     

    Druid indexing service

    Apache druid의 indexing service는 인덱싱 관련 작업을 실행하는 고가용 분산 서비스 입니다.

     

    인덱싱 작업은 드루이드 세그먼트를 생성하거나 destroy(파괴)합니다.

    인덱싱 서비스는 master/slave 와 같은 아키텍처를 가지고 있습니다.

     

    인덱싱 서비스는 세개의 주 구성요소로 이루어져 있습니다.

    1) Peon component : 단일 task 실행

    2) Middle Manager component : peon 관리

    3) Overlord component : middle manager에게 작업 분배

     

    Overlord와 MiddleManager는 동일한 프로세스 또는 여러 프로세스에서 실행될 수 있지만, Middle Manager와 Peon은 항상 동일한 프로세스에서 실행됩니다.

     


    동일한 프로세스 / 여러 프로세스란?

    Apache Druid에서 "동일한 프로세스"라는 말은 같은 프로그램 인스턴스 내에서 MiddleManager와 Peon이 실행된다는 것을 의미합니다. 이는 그들이 서로 간에 메모리 공간을 공유하고 직접적으로 서로와 소통할 수 있음을 의미합니다.

    반면에, Overlord와 MiddleManager가 "여러 프로세스"에서 실행된다는 것은 그들이 각각 다른 프로그램 인스턴스로 실행되며, 일반적으로는 네트워크 통신을 통해 서로와 소통한다는 것을 의미합니다. 이는 그들이 더 많은 동시성을 가질 수 있고, 하나의 프로세스에 문제가 발생하더라도 다른 프로세스에 영향을 주지 않는다는 장점이 있습니다.


     

    작업은 Overlord의 API 엔드포인트를 사용하여 관리됩니다.

     

    https://druid.apache.org/docs/latest/design/indexing-service.html

     

    Overlord Process

    개요

    Overlord는 새로운 작업(task)를 수락하고 작업 분배를 조정하며, 작업 주위에 lock을 설정하고, 호출자에게 상태를 반환하는 일을 수행합니다.

    Overlord는 로컬/원격 두 가지 모드 중 하나로 설정하여 실행이 가능합니다. (default: 로컬)

    Overlord가 로컬 모드로 실행될 때, 모든 미들매니저와 peon 설정도 함께 제공되어야 합니다. 로컬모드는 일반적으로 간단한 워크플로우에 사용됩니다.

    원격 모드에서는 overlord와 middlemanager가 개별프로세스에서 실행되며 각각 다른 서버에서 실행할 수 있습니다. 원격 모드는 모든 드루이드 인덱싱에 대해 단일 endpoint 로 인덱싱 서비스를 사용하려는 경우에 추천됩니다.

     

    블랙리스트된 워커들

    Middlemanager가 임계값(threshold) 이상으로 작업을 실패하면, overlord는 이 middlemanater를 블랙리스트에 올립니다. middlemanager의 20% 이상이 블랙리스트에 올라갈 수는 없습니다. 블랙리스트된 middlemanager들은 일정시간이 지나면 주기적으로 다시 화이트리스트에 포함됩니다. 

    아래의 설정들로 임계점과 블랙리스트 타임아웃을 설정할 수 있습니다.

    druid.indexer.runner.maxRetriesBeforeBlacklist
    druid.indexer.runner.workerBlackListBackoffTime
    druid.indexer.runner.workerBlackListCleanupPeriod
    druid.indexer.runner.maxPercentageBlacklistWorkers

     

    Overlord API

    작업 목록을 검색

    GET /druid/indexer/v1/tasks

    Query Parameter Description
    state tasks 리스트를 상태로 필터링합니다.

    running/complete/waiting/pending
    datasource Druid datasource로 task 필터링
    createdTimeInterval 지정된 timeInterval 내에 생성된 작업 필터링
    max 반환할 `complete` 작업의 최대 수
    state가 `complete`로 설정된 경우에만 적용
    type task type으로 필터링 
    See task documentation for more details.

     

     

    작업 제출

    POST /druid/indexer/v1/task

    Overlord에 tasks와 supervisor 스펙을 제출하는 엔드포인트로 제출된 작업의 taskId를 반환합니다.

     

     

     

     

     

    References

    https://druid.apache.org/docs/latest/design/overlord.html

    https://druid.apache.org/docs/latest/operations/api-reference.html#overlord

    반응형

    댓글