2010-06-28 4 views
1

분산 된 환경에서 매일 50GB의 로그를 저장하는 데 문제가 있습니다. Hadoop HDFS를 살펴 봤지만 Windows 인프라, 다국어 파일 시스템 API가 부족하여 잘 작동하지 않는 문제가 있습니다. 반면 카산드라는 어떤 플랫폼에도 쉽게 설치할 수 있습니다. 내가 직면하고있는 유일한 큰 문제는 디스크 공간 사용이다. 여기 수치는 다음과 같습니다카산드라는 디스크 공간 사용의 관점에서 로그 저장에 충분합니까?

  • 원래 로그 크기가 224MB
  • 입니다
  • 카산드라 데이터 파일은 557Mb
  • 입니다
  • 카산드라 인덱스 파일은에서 로그 라인을 저장할 때 그래서 거의 2 배의 오버 헤드를 가지고

109Mb입니다 로그 파일.

아주 간단한 시나리오에서 Cassandra를 어떤 방식 으로든 조정하여 디스크 공간을 많이 차지하지 않을 수 있습니까?

+0

mamu (위키의 'Cassandra Limitations'페이지에서)를 참조하시기 바랍니다 http://stackoverflow.com/questions/2359175/cassandra-file-structure-how-are-the-files-used/2359282#2359282 – Schildmeijer

답변

3

열 패밀리 안에 한 행 (4 열 포함)이 있다고 생각하십니까? 각 열과 관련된 "오버 헤드"는 long (타임 스탬프, 64 비트) 및 byte [] (열 이름, 최대 64kb)입니다. 따라서 4 배속 디스크 사용은 약간 이상하게 보입니다. 삭제 중입니까? how deletes are done in a distributed, eventually consistent system을 반드시 이해하십시오.

"compactions"도 꼭 읽어보십시오. ("일단 컴팩 션이 끝나면 오래된 SSTable 파일이 삭제 될 수 있습니다")

스트리밍이 어떻게 수행되는지에 관한 두려움 제한을 상기시켜줍니다.

카산드라의 공개 API는 스트리밍 기능을 제공하지 않는 Thrift를 기반으로합니다. 쓰기 또는 가져온 값은 메모리에 적합해야합니다. 이것은 Thrift의 디자인에 내재되어 있으므로 변경할 가능성이 없습니다. 따라서 Cassandra에 대형 객체 지원을 추가하려면 대형 객체를 수작업으로 조각화하는 특수 API가 필요합니다. 잠재적 인 접근법은 http://issues.apache.org/jira/browse/CASSANDRA-265에 설명되어 있습니다. 이 문제를 일시적으로 해결할 수있는 방법은 파일 크기를 수동으로 64MB를 사용하는 사람이 원하는 크기의 파일로 나눌 수 있으며 파일을 행에 대응시키고 그 덩어리를 열 값으로 사용할 수 있습니다.

+0

Schildmeijer, 사실 내 질문을 제출했을 때 Cassandra 디스크 공간 사용에 문제가있었습니다 (당신이 맞습니다, 압축을 실행하지 않았습니다). 원래 로그 크기가 224MB 입니다 - - 카산드라 데이터 파일은 557Mb 입니다 - 카산드라 인덱스 파일은 109Mb 내가 어떤 삭제를하고 있지 않다이다 이 : 그래서 여기에 실제 수치 (I는 또한 원래의 질문을 업데이트)입니다. 나는 모든 로그 라인을 카산드라에 별도로 배치하고 가장 긴 라인은 약 1kb입니다. 아직도 2 배의 오버 헤드가 long 목적을 저장하기에는 다소 큰 편입니다 - 최적화 할 수있는 방법이 있습니까? 감사합니다. – sha1dy

관련 문제