-
인덱스 샤드 설정에 대해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'Elasticsearch' 카테고리의 다른 글
elasticsearch 한글 형태소 분석사전 (0) 2025.04.01 profile을 통해 실제 쿼리가 어떻게 구성되는지 확인해보기 (0) 2025.03.27 Curator를 활용한 Snapshot 테스트 (4) 2025.01.08 docker-compose.yml 활용하여 Elasticsearch Cluster 만들기 (4) 2024.10.25 Curator에 대해 (5) 2024.10.09