2009-11-20 2 views
6

Cassandra에는 순서가 지정된 분할자를 사용할 때 볼 수있는 자동로드 균형 조정이 없습니다 (한 그룹의 값의 특정 공통 범위는 상대적으로 적은 기계에 저장되어 대부분의 쿼리).
What's The Best Practice In Designing A Cassandra Data Model?Cassandra는 주문 된 파티셔와로드 밸런싱을합니까?

저는 아직 카산드라에게 새로운 것이고 어떻게 작동 하는지요. 이 문제를 피하는 방법은 무엇일까? 그렇다면 범위 쿼리는 여전히 가능합니까? 열쇠에 해시를 추가하는 것에 대한 위의 답변 (링크 된 URL) 아이디어를 얻지 못했습니다.

+0

이 블로그에서 '키에 추가되는 해시'아이디어에 대한 자세한 정보를 찾았습니다. http://blog.evanweaver.com/articles/2009/07/06/up-and-running-with-cassandra/ – deepblue

답변

4

이 문제는 cassandra 사용자 메일 링리스트에서 가장 잘 받아 들여지는 것으로 생각됩니다. 그것은 사람들이있는 곳입니다.

카산드라는 자동로드 밸런싱이 없습니다 아직이지만 너무 먼 미래에 그렇게 할 수 있습니다. 이제 0.5 지점에서이 기능을 사용할 수 있습니다.

기본적으로 이미 실행중인 시스템에서 노드를 부트 스트랩하면 링에서 가장 좋은로드 균형을 유지하면서 그 노드를 배치해야합니다. 노드를 한 번에 하나씩 추가하면 (즉, 한 노드가 다른 노드를 추가하기 전에 부트 스트랩을 마칠 때까지 기다리십시오), 키 배포가 시간이 지남에 따라 너무 많이 변경되지 않으면 꽤 잘 작동합니다.

그러나 키가 시간에 따라 변경 될 수 있으며 (특히 시간 기반 인 경우) 임시 해결책이 필요할 수 있습니다.

범위 스캔을 원하는 대상에 따라 다릅니다. 키의 PART 범위 스캔 만 필요하면 범위 스캔을 원하지 않는 비트를 해시 한 다음 키의 첫 번째 부분으로 사용할 수 있습니다.

주어진 파티션 내에서 키를 스캔 범위하려는 경우 지금 스캔

function makeWholeKey(partition, key) { 
    return concat(make_hash(partition), partition, key); 
} 

범위 싶지 않아 나는 키의 일부를 참조하려면 여기를 용어 "파티션"을 사용합니다

makeWholeKey (p, start)와 makeWholeKey (p, end) 사이를 스캔 할 수 있습니다.

그러나 파티션을 스캔하려면 운이 없어요.

하지만 노드가 make_hash() 출력 범위에 고르게 분포 된 토큰을 가질 수 있으며, 균등하게 분산 된 데이터를 얻을 수 있습니다 (모든 파티션이 하나 또는 두 개의 해시 값)

8

다른 포스팅에서 언급했듯이 Cassandra 0.5는 반자동로드 밸런싱을 지원합니다. 노드가로드 밸런싱하도록 말하면 토큰 링에서 가장 바쁜 곳으로 자동 이동합니다.

이는 cassandra.yamlpartitioner 매개 변수에 의해 제어됩니다 클러스터에서 데이터의 http://wiki.apache.org/cassandra/Operations

+0

링크가 더 이상 작동하지 않습니다. 문서가 옮겨졌고 그 목적지가 문서의 근원에 우리를 데려 간다고 말하는 페이지로 우리를 보낸다. 또한, 나는로드 밸런싱 (nodebaloadance)을하기 위해 노드를 말하면서 무슨 뜻인지 이해하지 못한다. 왜 아무 한테도 말해야 만 해?! 또한 바쁜 곳으로 이동하려는 이유가 명확하지 않지만 부하 분산은 일반적으로 반대 방향입니다. 어쩌면 당신은 명확히하려고 할 수 있습니까? –

1

파티션에 덮여 : 행 키에 대한 임의의 해시 코드를 생성하고로드 밸런싱을 수행합니다 Murmur3Partitioner를 사용

partitioner: org.apache.cassandra.dht.Murmur3Partitioner 

.

Cassandra 2.0에서는 단일 서버에 여러 토큰 (256)을 저장할 수 있으므로로드 균형 조정에 도움이됩니다. OrderPreservingPartitioner을 사용하는 것은 좋지 않으며 더 이상 사용되지 않습니다.

+0

2009 년 카산드라 0.5 시쯤에 물어 보았던 점에 유의하십시오. 저는 파티셔너가 일반적으로 카산드라 클러스터의로드 균형을 조정할 것으로 예상됩니다. –