아파치 카산드라에서 삭제 표시의 수명주기 검사

이 게시물은 삭제 표시의 수명주기 및 관리에 관한 일련의 블로그 게시물의 첫 번째 부분입니다.

카산드라에서 데이터를 삭제하고 만료하는 것은 신중하게 계획해야 할 사항입니다. 특히 한 번에 엄청난 양의 데이터를 삭제하려는 경우. 적절한 계획이 없으면 읽기 대기 시간 및 디스크 사용 공간 증가와 같은 클러스터에 문제가 발생할 수 있습니다. 이 게시물 전반에 걸쳐,나는 이것과 그주의 사항을 다루는 방법을 설명 할 것이다.

먼저 기본 사항을 살펴 보겠습니다. 카산드라에서 디스크에 존재하는 데이터 파일은 변경할 수 없는 파일입니다. 카산드라에서 무언가를 삭제할 때 마커가 포함 된 새로운 테이블이 생성됩니다. 이 마커는 해당 삭제에 대한 타임 스탬프와 함께 제거 된 파티션,행 또는 셀을 나타냅니다. 이 삭제 마커를 삭제 표시라고합니다.

삭제된 데이터 및 삭제 표시는 기본적으로 10 일이라는 기간 동안 디스크에 공존할 수 있습니다. 이 시간 동안 데이터는 여전히 드라이브에 존재할 수 있지만 쿼리하면 클라이언트로 반환되지 않습니다. 즉,클라이언트 관점에서 데이터가 삭제 문을 실행하는 즉시 삭제됩니다. 그러나 운영 관점에서 볼 때 데이터와 삭제 표시 모두 여전히 존재할 수 있으며 디스크의 공간을 차지할 수 있습니다. 여전히 디스크에 존재하는이 삭제 된 데이터는”그림자 데이터라고합니다.”

: 이전 단락에서 나는 압축 데이터 및 삭제 표시를 포함하는 발생하는 경우,다음 데이터가 제거되기 때문에(“수”에 대한 강조)데이터와 삭제 표시”여전히 디스크에 공존 할 수있다”고 말한다. 그러나 삭제 표시는 유지 됩니다.

삭제 표시에 숨겨진 데이터의 복제본이 있는 모든 노드에 복제할 수 있는 충분한 시간이 있는지 확인하는 안전 메커니즘입니다. 이 안전 메커니즘이 성공하려면 클러스터를 복구할 수 있어야 합니다. 즉,기본 10 일을 사용하는 경우 10 일마다 복구를 시작하고 완료해야 합니다. 이 복구는 클러스터에서 좀비 데이터를 방지하는 용도로 사용됩니다. 나는 이것이 어떻게 일어날 수 있는지에 대한 세부 사항에 들어가지는 않겠지 만,기본적으로 좀비 데이터는 데이터를 삭제할 때 발생하지만 나중에 언젠가 반환됩니다.

후 gc_grace_seconds 이 경과하면,데이터 삭제할 수 있습 마지막으로 제거한 디스크에서 재기하는 디스크 공간은 이전 사용으로(그림 1). 디스크 공간을 해제하는 도착 예정 시간은이 게시물에서 명확히 할 첫 번째 포인트 중 하나입니다. 카산드라를 사용할 때 많은 사람들이이 메커니즘을 놀랍게 생각합니다.즉,데이터를 삭제 한 후에도 데이터가 여전히 디스크에 존재합니다. 이 혼란은 일반적으로 사람들이 삭제 표시와 삭제 표시에 대해 배우 자마자 빠르게 명확 해집니다. 그러나 연산자는 데이터와 삭제 표시가 삭제된 후 바로 삭제된다고 생각하는 경향이 있습니다. 사실,이것이 사실이 아닐 수도 있고 그렇지 않은 경향이 있다는 것을 인식하는 것이 필수적입니다. 일반적으로 이 제거가 발생하고 디스크 공간이 복구되는 데 걸리는 시간은 1 초보다 오래 걸립니다.

그림 1-만료된 삭제 표시와 만료되지 않은 삭제 표시로 숨긴 데이터 압축

위에서 언급한 삭제 표시는 숨긴 데이터와 삭제 표시가있는테이블을 포함하는 압축이 발생할 때 발생합니다. 그런 다음에 만 데이터를 효과적으로 제거하고 디스크 공간을 복구합니다. 그것은 주목하는 것이 중요하는 경우에도 gc_grace_seconds 을 통과했고 SSTable 으로의 숨겨진 데이터가 압축을 가진 다른 SSTable 없는 표시,다음 숨겨진 데이터가 제거되지 않습니다. 즉,삭제된 데이터가 있는 모든 삭제 테이블과 함께 삭제된 테이블이 압축되지 않으면 삭제 표시가 디스크에서 제거되지 않습니다. 이런 일이 발생하는 이유는 압축 중에 카산드라가 압축에 관여하지 않는 스테이블에 무엇이 있는지 알지 못하기 때문입니다. 그래서 그것은 삭제 표시를 볼 수 없기 때문에 데이터를 버릴 수 있다는 것을 알 수있는 방법이 없습니다. 그림 2 에서 볼 수 있습니다.

그림 2-그림자가있는 데이터와 삭제 표시를 별도로 압축

데이터 및 삭제 표시 마커의 디스크 사용으로 인해 삭제 표시의 누적은 읽기 대기 시간에 영향을 줄 수 있습니다.

이러한 삭제가 작고 드문 드문 경우 데이터 삭제는 일반적으로 문제가되지 않습니다. 때문에,자연 압축 수명주기 동안,카산드라는 결국 디스크 공간과 제거 삭제 표시를 복구합니다. 그러나 한 번에 많은 양의 데이터를 삭제하는 경우 많은 삭제 표시가 생성되어 읽기 대기 시간에 빠르게 영향을 줄 수 있습니다.

대량의 데이터를 임시로 삭제해야 하는 경우 다음 블로그 게시물에서 위험을 완화하기 위해 수행할 수 있는 몇 가지 단계가 있습니다.

이메일

저자

  • 페드로 고르도

페드로와 함께 일하는 것에 관심이 있습니까? 기술 전화를 예약하십시오.

답글 남기기

이메일 주소는 공개되지 않습니다.