2016-06-14 2 views
0

두 개의 노드로 구성된 카산드라 클러스터가 있습니다. 키 범위 [A-D]가있는 데이터가 클러스터에 삽입됩니다. 대략적으로 노드 1은 키 범위 [A-B]를 갖는 데이터를 저장하고 노드 2는 키 범위 [C-D]를 갖는 데이터를 저장한다고 가정 할 수있다. 얼마 후 노드 2 개를 더 추가합니다. 균형을 유지하려면 파티션을 다시 할당해야합니다. 맞습니까? 이제는 각 노드가 정확히 1 개의 키에 대한 데이터를 저장한다고 예상합니다. Cassandra는 기존 데이터를 새 노드로 다시 할당합니까 (예 : 노드 1에서 노드 3까지 키 B가있는 기존 데이터)? 그리고 어떻게?Cassandra는 파티션을 어떻게 다시 할당합니까?

답변

0

Cassandra uses vnodes or virtual nodes 기본적으로 각 노드에는 단일 범위 (예 : [A-C])가 없지만 수백 (기본적으로 256, num_tokenscassandra.yaml)입니다. 버전에 따라 이러한 토큰 범위는 무작위로 할당되거나 이전 버전으로 할당되어 균등 분배를 극대화합니다. 이렇게하면 한 노드가 떨어지거나 노드를 추가하면 클러스터의 모든 노드가 해당 노드 범위 중 하나 옆에있어 부담을 공유하게됩니다.

관련 문제