ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인덱스 샤드 설정에 대해
    Elasticsearch 2025. 3. 22. 02:04

    유튜브 데이터에 특화된 분석기가 업데이트되어 데이터를 재색인 해야하는 일이 생겼다. 

     

    이로인해 새로운 인덱스를 생성해야 했는데

    이 과정에서 샤드를 어느정도 설정해야 이상적일까에 대해 생각해보았다. 

     

     

    사용환경 : 크론탭
    유튜브 데이터의 하루 색인량은 약 1000건이며 기능 명세상 사용자 쿼리에 의해 업데이트되는 기능은 아니다.

     

     

    Elasticsearch Shard에 대해

    • Elasticsearch 쿼리는 샤드당 단일 스레드로 실행된다. 
    • 각각의 Shard는 Lucene 인덱스의 인스턴스이며 Lucene 인덱스는 내부적으로 다수의 세그먼트로 구성되어 있다.
    • 노드가 더 많은 힙공간을 가질수록 처리할 수 있는 데이터와 샤드가 늘어난다.
    • 시계열 데이터 기준 적정 샤드 크기는 10GB~50GB이다. 
    • 하나의 노드에 저장할 수 있는 샤드의 개수는 가용한 힙의 크기와 비례 하지만 Elasticsearch에서 그 크기를 제한하고 있지는 않다.

    * Elasticsearch 공식 블로그에서 제시한 샤드의 개수는 힙 1GB당 20개 미만이다. ( 30GB -> 최대 600 샤드)

     

    위 사용환경을 고려해본다면 색인량도 작고, 크론탭도 5분마다 실행되므로 부담가는 프로세스는 아니다. 

    2년치 데이터를 색인해 보았을 때 샤드당(pri, rep) 6GB를 사용하므로 샤드 구성을 1:1(pri, rep), 속도를 조금 더 생각한다면 2:1 정도를 생각하고 있다. (물론 이상적인 수치가 아니라 개인적인 의견입니다.)

     

    혹시나 헷갈리실까봐 적습니다..!
    프라이머리 샤드 2개, 레플리카 샤드 1개가 있다고 가정한다면 총 샤드 수는 4개입니다.

     

    혹 속도 개선을 위해 샤드 수 변경 요청이 오거나 적정 샤드 크기를 넘어선다면 (20GB)

    추후 alias 설정과 ILM을 통해 새로운 인덱스를 만들어 묶어주기로 했다.


    참고
    공식 사이트 : https://www.elastic.co/guide/en/elasticsearch/refzerence/current/size-your-shards.html
    블로그 : https://www.elastic.co/kr/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster

     

Designed by Tistory.