2013-04-10 4 views
0

방금 ​​테이블에 행을 추가했는데 행이 여전히 memstore에 있다고 가정합니다. 이 시점에서 나는 그것을 삭제했다. 삭제에 어떤 문제가 발생 했습니까? 내 이해가 맞는지 확실하지 않습니다. 마 스토어의 행에 마커가 추가되었습니다. memstore가 플러시 될 때 행과 마커는 HFile에 기록됩니다. 그러나 그렇다면 행이 memstore에서 제거되지 않는 이유는 무엇입니까?HBase는 행이 memstore에있는 동안 행을 어떻게 삭제합니까?

답변

0

동일한 행키가있는 행이 디스크의 저장소 파일에 이미 존재할 수 있습니다.이 경우 동일한 행 키가있는 다른 추가는 기존 행의 업데이트가되어 해당 행의 새 버전이됩니다. 새로 추가 된 행을 memstore에서 삭제 마커로 저장하면 주요 압축을 통해 삭제 마커가있는 버전까지 모든 행의 이전 버전을 제거 할 수 있습니다.

1

HBase의 작동 방식은 모든 변경 사항이 새로운 "삽입물"이라는 것입니다. 이것은 효율적인 방식으로 hbase 작업을 보자. 많은 경우 HBase는 각 값의 x 버전을 저장하도록 설정되어 있음을 명심해야합니다. 그래서 행이 memstore에있는 시간과 행의 한 버전 만 유지해야하는 시간은 매우 특정한 경우입니다. 시스템이 그 엣지 경우를 처리하는 것보다 예측되고 테스트 된 단일 방식으로 작업하는 것이 더 좋습니다.

관련 문제