SolrCloud 클 러 스 터 Collection 수 동 2 차 Sharding - solr 분할 관련
http://blog.csdn.net/shirdrn/article/details/9770829
일치 성 hash 와 solr 천만 급 데이터 분포 식 검색엔진 에서 의 응용
http://www.lanceyan.com/tech/arch/consistenthashing_and_solr.html
SolrCloud 의 파일 및 Collection 관리
http://www.codeweblog.com/solrcloud파일 및 collection 관리 /
solrCloud 경로
SolrCloud 경로
SolrCloud 에서 두 가지 경로 알고리즘 을 제공 합 니 다.
compositeIdimplicit Collection 을 만 들 때 router. name 을 통 해 경로 정책 을 지정 해 야 합 니 다. 기본 값 은 coposite Id 경로 입 니 다.
compositeId
이 루트 는 일치 성 해시 루트 이 며, shards 의 해시 범 위 는 80000000 ~ 7ffffff f 이다.처음에 collection 을 만 드 는 것 은 numShards 를 지정 해 야 합 니 다. coposite Id 경로 알고리즘 은 numShards 의 개수 에 따라 모든 shard 의 해시 범 위 를 계산 해 야 하기 때문에 경로 정책 은 shard 를 확장 할 수 없습니다.
implicit
이 루트 방식 은 인덱스 가 루트 에서 어느 Shard 로 떨 어 지 는 지 를 지정 합 니 다. 이것 은 composite Id 루트 방식 의 인덱스 가 각 shard 에 고 르 게 분 포 될 수 있 는 것 과 다 릅 니 다.동시에 implicit 루트 정책 에서 만 shard 를 만 들 수 있 습 니 다.
solrJ 새 색인 을 사용 할 때 코드 에 색인 이 어느 shard 에 떨 어 졌 는 지 지정 하고 코드 를 추가 해 야 합 니 다.
doc.addField("_route_", "shard_X");
schema. xml 에 필드 추가
<field name="_route_" type="string"/>
URL 로 implicit 경로 만 들 기 collection:
http://10.21.17.200:9580/solr-5.0.0-web/admin/collections?action=CREATE&name=testimplicit&router.name=implicit&shards=shard1,shard2,shard3
SolrRouter 소스 코드
Solr 소스 코드 에서 볼 수 있 듯 이 Solr 루트 의 기본 클래스 는 DocRouter 추상 클래스 이 고 HashBasedRouter 와 ImplicitDouter 는 DocRouter 에서 계승 하 며 Composite IdRouter 는 HashBasedRouter 추상 클래스 를 계승 하여 하나의 도구 인 Hash 클래스 를 통 해 Document 루트 정책 을 실현 한다.
컬 렉 션 만 들 기
Solr 에서 Collection 을 만 드 는 두 가지 방법:
프론트 인터페이스 Add Core 를 통 해 collection 만 들 기
tomcat, setenv. sh 에 - dnumShards = 7 을 설정 하기 때문에 이 collection 은 7 개의 shards 가 있 습 니 다.
주의해 야 할 것 은 composite Id 루트 를 사용 하여 collection 을 만 들 고 numShards 를 지정 한 후 Shard 를 확장 할 수 없습니다. Shard 를 억지로 추가 하 더 라 도 새 색인 은 이 Shard 에 떨 어 지지 않 습 니 다.clusterstate. json 을 보면 새 shard 의 "range" 를 볼 수 있 습 니 다: null
URL 생 성 collection URL 을 통 해 collection 생 성 조건 만족: num of (shards + replications) < num of live nodes
테스트 환경 에서 solr 기계 3 대, collection URL 만 들 기:
http://10.21.17.200:9580/solr-4.10.0/admin/collections?action=CREATE&name=collection1&router.name=compositeId&numShards=5&replicationFactor=1
실행 결과 오류 보고
org.apache.solr.common.SolrException:org.apache.solr.common.SolrException:Cannot create collection collection1. Value of maxShardsPerNode is 1, and thenumber of live nodes is 3. This allows a maximum of 3 to be created. Value ofnumShards is 5 and value of replicationFactor is 1. This requires 5 shards tobe created (higher than the allowed number)
오류 원인 불 만족 5 + 1 < 3
데이터 이동
어떤 장면 에 서 는 SolrCloud 를 확장 하거나 데이터 이전 을 해 야 한다.
상기 에서 논의 한 두 가지 경로 알고리즘 에 따 르 면 implicit 는 이 수 요 를 실현 하 는 것 이 비교적 간단 합 니 다. Shard 를 만 들 면 됩 니 다. 새 색인 을 만 들 때 색인 을 새 Shard 에 만 들 고 조회 작업 을 하 며 collection 이름 을 지정 하면 전체 클 러 스 터 가 돌아 오 는 결 과 를 얻 을 수 있 습 니 다.
composite Id 루트 는 상기 수 요 를 실현 하 는 데 조금 번 거 롭 고 분열 (SPLITSHARD) 조작 을 통 해 실현된다.다음 그림 에서 Shard 1 을 분열 시 키 고 URL 을 다음 과 같이 구분 합 니 다.
http://10.21.17.200:9580/solr- 4.10.0 - web / admin / collections? action = SPLITSHARD & collection = log4j 201503 & shard = shard 1 이때 Shard 1 의 데 이 터 는 평균 shard 1 에 분포 합 니 다.0 과 shard 11. DELETESHARD API 를 이용 하여 Shard 1 을 삭제 하면 데이터 가 불필요 하지 않 음 을 보증 할 수 있 습 니 다.
SolrCloud 의 색인 분할 과 조회 에 대한 강 도 를 높 일 수 있 습 니 다.
Solr 4.0 은 분포 식 sorl 솔 루 션 solrCloud 를 포함 하여 sharding 절 분 을 할 수 있 습 니 다. 각 sharding 에서 노드 는 선거 알고리즘 (leader, replica) 을 지원 하고 sharding 에서 query 의 부하 균형 을 지원 합 니 다.클 러 스 터 가 시 작 될 때 shard, collection 등 정 보 를 설명 하고 시작 하 는 과정 에서 클 러 스 터 의 상태 정 보 를 zookeeper 노드 에 유지 해 야 합 니 다.클 라 이언 트 의 요청 에 응답 할 수 있 습 니 다. 색인 작업 과 조회 작업 을 포함 합 니 다.
색인 작업 에 대해 solrCloud 는 현재 색인 에 기 록 된 ID 값 에 따라 hash 작업 을 한 다음 zookeeper 에서 유지 하 는 클 러 스 터 의 관련 상태 (Collection, RangeInfo, Range < min, max >) 에 따라 hash 값 이 어느 Range 에 있 는 지 찾 아 해당 하 는 shard 를 찾 습 니 다.이 shard 에서 leader 에 색인 을 만 들 고 Leader 노드 업데이트 가 끝 났 으 며 마지막 으로 버 전 번호 와 문 서 를 같은 Shard 에 속 하 는 replicas 노드 에 전달 합 니 다.그러나 색인 을 만 들 때 shard 의 알고리즘 은 부하 균형 을 고려 하지 않 고 shard 에 계속 삽입 할 수 있 기 때문에 shard 의 절 분 부하 균형 을 고려 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.