hbase 에서 regionserver 에서 흔히 볼 수 있 는 oom 원인 분석
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 이 발생 했 을 때 도 코드 에서 이 설정 이 진행 되 었 는 지 확인 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
hadoopjob 메모리 넘침mapreduce 작업 성능 테스트를 진행할 때, Shuffle에서 자바를 보고합니다.lang.OutOfMemoryError 메모리 오류가 발생했습니다.스택 정보는 다음과 같습니다. 해결 방법: 프로필mapred-s...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.