2012-06-26 2 views
0

두 개의 노드 카산드라 링이 있습니다. 서버 중 하나에서 일부 대량 쓰기 작업을 수행하고 있습니다. 파일 목록의 폴더를 스캔하고 목록을 로컬 카산드라로 작성합니다. 거기에 약 50 만 개의 파일이 있습니다. 저는 하나의 돌연변이 당 250 개의 값을 넣을 것입니다.두 개의 노드 링에서 카산드라 대량 데이터 쓰기가 실패합니다.

문제점 :로드하는 동안 m.p.h.a.e.HUnavailableException이 발생합니다. 또한 다른 노드에서 이상한 점을 발견했습니다.

[email protected]:~$ nodetool -h localhost ring 
Address   DC   Rack  Status State Load   Owns    Token 
                       85070591730234615865843651857942052864 
10.1.18.51  datacenter1 rack1  Up  Normal 221.3 KB  50.00%    0 
10.1.18.55  datacenter1 rack1  Up  Normal 185.65 KB  50.00%    85070591730234615865843651857942052864 

[email protected]:~$ nodetool -h localhost ring 
Note: Ownership information does not include topology, please specify a keyspace. 
Address   DC   Rack  Status State Load   Owns    Token          
                          85070591730234615865843651857942052864  
10.1.18.51  datacenter1 rack1  Up  Normal 124.44 MB  50.00%    0           
10.1.18.55  datacenter1 rack1  Up  Normal 303.39 KB  50.00%    85070591730234615865843651857942052864  

쓰기 작업 후에는 어떻게 든 내 부하를 충돌 하는가 : 쓰기 작업하기 전에

: 부하가 크게 증가?

카산드라 버전 1.1.0, 일관성 유형 쿼럼. 여기

는 뮤 테이터 구현 비트입니다 :

mutator.addInsertion("items", columnFamily, HFactory.createColumn(
     i.getAndIncrement(), xml, LongSerializer.get(), 
     StringSerializer.get())); 

하나의 큰 "항목"행에 기록되는 데이터 솔기가 ...

+0

내가 카산드라에 대량로드에 대한 몇 가지 게시물을 발견 http://www.datastax.com/dev/blog/bulk-loading . 내 사건에 대한 유일한 해결책인가? –

답변

1

당신이 하나의 큰 행, 돈 '과 같은 일을 모델링하는 경우 그렇게하지 마라. 행은 파티셔닝과 복제의 단위이기 때문에 링에 노드가있는 것보다 많은 행이 필요하므로 부하 분산을 잘 수행 할 수 있습니다.

UnavailableException은 아마도 클러스터에 과부하가 걸렸다는 것을 의미합니다. 쓰기를 조절할 수 있습니다. "nodetool tpstats"를 사용하여 얼마나 뒤떨어져 있는지 확인할 수 있습니다. 또는 Dalius가 연결된 벌크 로더로 전환 할 수 있습니다.이 기능은 이러한 상황을 처리하도록 설계되었습니다.

+0

뮤 테이터 구현으로 업데이트했습니다. 그것은 하나의 큰 행에 쓰여진 세부 사항을 솔기 ... 고마워요 jbellis –

0

행 파티션의 크기가 100MB를 초과하지 않아야합니다. cfstats를 사용하여 동일하게 확인할 수 있습니다.

아래의 열 패밀리의 경우 통계가 중요하며 값은 100MB 미만이어야합니다. 제한을 초과하면 압축 오버 헤드가 발생하고 노드는 오프라인이됩니다.

압축 된 파티션 최대 바이트 : [값] 압축 된 파티션 바이트를 의미 : [값]

관련 문제