hbase 에서 regionserver 에서 흔히 볼 수 있 는 oom 원인 분석

1043 단어 oomhbase
우선 reginserver 의 메모리 가 어떻게 사용 되 는 지 알 아야 합 니 다.
    reginserver 의 메모 리 는 전체적으로 세 부분 으로 나 뉜 다.blocksize 는 읽 기 전용 메모리,memstore 는 읽 기 전용 메모리,다른 메모리 로 나 뉜 다.
    그 중에서 앞의 두 가지 크기 는 설정 에서 각각 hfile.block.cache.size 와 hbase.regionserver.global.memstore.upperLimit 를 통 해 제어 되 고 이들 의 크기 와 hbase 하 드 인 코딩 은 0.8 보다 크 면 안 됩 니 다.그래서 만약 에 oom 이 발생 한다 면 이곳 의 다른 메모리 가 너무 많이 사용 해서 생 긴 것 입 니 다.
    다른 메모리 에는 어떤 것 이 포함 되 어 있 습 니까?가장 중요 한 부분 은 임시 데이터,flush 를 받 을 때 발생 하 는 snapshot,compact 에서 발생 하 는 메모리 등 이다.현재 나의 운영 경험 으로 볼 때 대부분의 oom 은 compact 기간 에 발생 했다.따라서 oom 이 발생 했 을 때 compact 가 포함 되 어 있 는 지 확인 할 수 있 습 니 다.
    compact 의 원 리 는 hdfs 에 있 는 해당 열 데 이 터 를 줄 에 따라 메모리 에 읽 고 hdfs 를 다시 쓰 는 것 입 니 다.불 행 히 도 version 이나 넓 은 시계 때문에 어떤 rowkey 가 매우 커서 메모리 소 모 를 일 으 킬 때 가 있 습 니 다.이때 컴 팩 트 가 소모 하 는 메모 리 는 최대 rowkey 로 결정 된다.
    또한 코드 org.apache.hadop.hbase.HTableDescriptor 에 방법 이 있 습 니 다.
4.567913.이 방법 은 hbase.hregion.max.filesize 보다 우선 순위 가 높 기 때문에 코드 에서 이 설정 을 하면 코드 의 값 을 우선 사용 합 니 다.oom 이 발생 했 을 때 도 코드 에서 이 설정 이 진행 되 었 는 지 확인 해 야 합 니 다.

좋은 웹페이지 즐겨찾기