아파치 카산드라
삭제 표시 감지 및 방지
삭제 표시는 로그 및 특정 메트릭을 모니터링하여 감지 할 수 있습니다. 이 값은 테이블 설정에 의해 정의됩니다.
테이블 설정 조정
기본 설정은 864000(10 일)입니다. 우리에게 그 값을 345600(4 일)으로 낮추는 것이 합리적이었습니다. 유예 기간을 변경 하려는 경우 해당 시간 범위 내에서 수리를 실행 해야 합니다.
기존 테이블의 값을 변경하거나 다음과 같이 새 테이블을 만들 수 있습니다:
테이블 키 공간을 만듭니다.테이블 키 공간을 변경할 수 있습니다.테이블 이름= 345600;
- 지정된 시간 범위를 통과하면 행이 삭제되고 값이 삭제 표시로 바뀝니다. 기본적으로 행/값은 만료되지 않습니다.
삭제 표시 문제가 발생하는 동안 우리는 테이블의 라이브 시간을 늘릴 필요가 있음을 알아 냈습니다. 이 값을 1,000,000 일로 설정하면 쓰기 작업이 실패하면 한 번에 테이블에서 모든 데이터를 삭제하는 효과가 있습니다. 누락 된 업데이트로 인해 모든 행에 삭제 표시가 표시되었습니다. 높은 값을 설정하면 시간에 작업을 다시 실행하고 삭제 표시의 많은 양의 불필요한 생성을 방지 할 수 있습니다.
- 삭제 표시 임계값 경고는 기본적으로 1.000 으로 설정되며 단일 쿼리로 1.000 개 이상의 삭제 표시를 스캔할 경우 로그에 표시됩니다.
- 삭제 표시 실패 임계값은 단일 쿼리로 100.000 개의 삭제 표시를 스캔할 때 도달합니다. 이 경우 쿼리가 중단되므로 영향을 받는 테이블의 데이터를 더 이상 쿼리할 수 없습니다.
이러한 임계값 설정은 변경할 수 있지만 이 설정을 늘리면 노드에 메모리가 부족할 수 있습니다.
정기 수리 실행
카산드라는 높은 내결함성을 제공하며 노드를 일시적으로 사용할 수 없더라도 잘 작동합니다. 그럼에도 불구하고 노드 오류 후 노드 도구 복구를 실행하는 것이 가장 좋습니다. 특히 모든 비용으로 데이터 손실을 방지하려는 경우.
복구 프로세스 중에 사용할 수 없는 노드는 가동 중지 시간 동안 발생한 쓰기를 받습니다.그렇지 않으면 삭제된 데이터가 다시 생성되는 경우가 발생할 수 있습니다.
수리를 자동으로 실행하는 몇 가지 방법이 있습니다. 그들 중 하나는 카산드라 사신입니다. 이 도구는 쉽게 수리를 예약 할 수 있습니다 좋은 사용자 인터페이스와 함께 제공됩니다.
구성 및 압축을 실행
마지막으로 삭제 표시를 제거하고 디스크 공간을 확보하려면 압축을 트리거해야합니다. 다른 종류의 압축이 있습니다. 마이너 압축은 모든 스테이블에 대해 압축을 실행하고 카산드라에서 자동으로 실행됩니다. 유예 기간보다 오래된 모든 삭제 표시를 제거합니다. 모든 스테이블에 대해 수동으로 압축을 트리거하는 경우 주요 압축이라고합니다. 압축은 각 노드에 대해 개별적으로 트리거되어야 합니다. 또한 지정된 테이블 그룹에서만 사용자 정의 압축을 실행할 수도 있습니다.데이터 압축은 일반적으로 하나의 새 테이블로 병합하는 것을 의미합니다. 여러 행에 대해 읽기를 수행할 때 더 많은 테이블을 스캔해야 할수록 프로세스가 느려집니다. 이런 일이 발생하지 않도록하려면 압축을 정기적으로 실행해야합니다.
수동으로 압축을 시작하려면 노드 툴 컴팩트를 사용할 수 있습니다. 키스페이스 또는 테이블을 지정하지 않는 경우 압축은 모든 키스페이스 및 테이블에서 실행됩니다.
노드 도구 압축 키 공간 테이블 이름
이 명령은 지정된 테이블에서 압축을 시작합니다. 테이블에 대해 구성된 압축 전략을 파악하고 대체 전략과 비교해야 합니다. 다른 전략이 더 나은 사용자의 요구를 충족하는지 확인하려면,당신은 데이터 팩스 문서를 확인할 수 있습니다.
모니터 테이블 메트릭
1. 노드 툴
노드 툴은 카산드라의 명령 줄 인터페이스입니다. 당신이 당신의 클러스터 성능에 대한 자세한 내용을 파악하려는 경우에 유용합니다. 당신은 데이터 택스에서 제공하는 가능한 명령의 전체 목록을 확인할 수 있습니다.
노드 도구 명령은 각 노드에 대해 개별적으로 실행되어야 합니다. 우리는 쿠버네티스에서 씨*를 실행하여 실행 중인 카산드라 파드에 대한 쉘을 다음과 같이 열 수 있다:
이 시점에서 노드 툴을 사용하여 테이블에 대한 다양한 정보를 얻을 수 있습니다. 각 키스페이스 또는 테이블에 대한 통계를 인쇄하기 위해 노드 도구 테이블표트 명령을 수행할 수 있습니다:
‘슬라이스 당 평균 삭제 표시’및’슬라이스 당 최대 삭제 표시’값은 지난 5 분 동안 쿼리당 검색된 삭제 표시 수를 알려줍니다. 이 값이 매우 높으면 해당 테이블에 대해 압축을 더 자주 실행해야 할 수 있습니다.
2. 이 작업을 수행하기 전에 카산드라를 중지해야합니다. 이 명령은 특정 테이블에 대해 존재하는 테이블 파일의 목록을 제공합니다. 이러한 파일을 실행하면 지정된 테이블에 대한 유용한 정보를 얻을 수 있습니다.
3. 프로메테우스와 그라파나
프로메테우스와 그라파나에 대한 모니터링은 프로메테우스와 그라파나와 함께 설정됩니다. 삭제 표시 임계값 경고를 받은 후 각 테이블에 대한 삭제 표시 동작에 대한 아이디어를 제공하는 패널을 대시보드에 추가하기로 결정했습니다.
카산드라에는’삭제 표시 히스토그램’이라는 테이블 메트릭이 있습니다.이 메트릭은 쿼리당 검색된 삭제 표시 히스토그램을 표시합니다. 99 번째 백분위수를 보여줌으로써 우리는 무언가가 옳지 않다는 것을 알게 될 것입니다.
- 삭제 표시 실패 임계값은 단일 쿼리로 100.000 개의 삭제 표시를 스캔할 때 도달합니다. 이 경우 쿼리가 중단되므로 영향을 받는 테이블의 데이터를 더 이상 쿼리할 수 없습니다.
- 삭제 표시 임계값 경고는 기본적으로 1.000 으로 설정되며 단일 쿼리로 1.000 개 이상의 삭제 표시를 스캔할 경우 로그에 표시됩니다.