2012-07-16 1 views

답변

0

memstore는 HFile과 마찬가지로 업데이트를 보관하지만 테이블의 구성에 따라 디스크에 기록합니다 (예 : 테이블에 행 하나만 보유하도록 설정 한 경우 최신 정보 만 기록됨). 디스크에).

memstore이 here

1

없음을 작동하는 방법의 좋은 설명이있다, 그것은 &이 기존 레코드를 대체 삭제되지 않습니다. memstore에 새로운 키 값 (레코드 데이터)을 추가합니다. 첫 번째 이유 : 둘 이상의 셀 (열) 값 버전을 유지하도록 구성되었을 수 있습니다. 그러나 memstore에 보관할 수있는 것보다 많은 버전의 셀이 있어도 덮어 쓰지 않고 (또는 가장 오래된 것을 제거하지 않고) 레코드를 계속 추가합니다.

그러나 HBase (0.92+)의 최신 버전에는 memstore 플러시 프로세스가 최적화되어 있습니다. 너무 오래 된 셀의 버전은 건너 뛸 수 있습니다 (HFiles에 쓰지 마십시오). 유지할 버전의 최대 개수를 고려하여 포함되어야 함). 여기에 더 많은 것 : HBASE-4241. Memstore의 기존 값을 "오버 라이딩"하는 것처럼 보이지만 (적어도 외부 관점에서 볼 때), 정확하게 그렇게하지는 않습니다. 이 최적화는 memstore flush에서만 발생하므로 memstore 크기에는 영향을 미치지 않습니다. 새 값이 기록되면 항상 추가됩니다. 나는. 이 최적화로 인해 플러싱이 거의 발생하지 않습니다.

최적화와 관련된 지속적인 작업이 있으므로 다음 릴리스를 살펴보십시오.

리차드가 언급 한대로 HBase Memstore here을 구성하는 방법에 대해 자세히 배울 수 있습니다.

+0

위대한 설명입니다! btw, habse 소스 코드의 어떤 부분이 언급 한대로 memstore를 유지하고 있습니까? pls는 가능하다면 그것을 가리 킵니다. – Richard

+0

나는 당신이 찾고있는 것이 org.apache.hadoop.hbase.regionserver.MemStore라고 생각한다. –

관련 문제