2013-11-27 9 views
4

어떤 regionserver 큐 크기를 의미하는지 알고있는 사람이 있습니까? 문서의 정의에HBase 압축 대기열 크기 란 무엇입니까?

:

9.2.5. hbase.regionserver.compactionQueueSize 압축 큐의 크기입니다. 이것은 압축을 목표로 한 의 지역 상점 수입니다.

regionserver의 주요 압축 될 필요가 저장소 (또는 저장소 파일? 나는 그것의 두 버전을 들었습니다)의 수입니다.

순차적 키 (비 분산)를 사용하여 핫스팟 형식으로 데이터를 쓰는 직업이 있습니다. 그리고 나는 한 번에 압축 대기열 크기 = 4가되었음을 알게되었습니다. 언제든지 쓰기가 가능한 저장소가 하나 (순차적 키)이므로 이론적으로 불가능합니다. 모든 주요 압축이 "이 선택은 0 초에 대기열에 있었다"

013-11-26 12 말 : 그런 다음

내가 로그 파고는> 0 큐 크기에 대한 힌트가 발견 : 28 : 00,778 정보 [regionserver60020-smallCompactions-1385440028938] regionserver.HStore :의 myTable.key.md5 .... 의 f1에있는 3 개의 파일의 주요 압축 완료 md5 .... (크기 = 607.8 M), 상점의 총 크기는 645.8 M. 입니다.이 선택 항목은 0sec 대기열에 있습니다이고 3935 초에 이 실행되었습니다.

더 복잡한 점은 이전 버전에서 멀티 스레드를 사용하지 않고 각 압축 작업을 스레드에 할당했기 때문에 압축 큐가있는 이유입니다.

hbase doc에는 자세한 설명이 없습니다.

답변

13

귀하의 질문을 완전히 이해하지 못했습니다. 그러나 최선을 다해 답변을 시도하겠습니다.

먼저 HBase의 용어에 대해 알아 보겠습니다.

Table  (HBase table) 
    Region  (Regions for the table) 
    Store  (Store per ColumnFamily for each Region for the table) 
     MemStore (MemStore for each Store for each Region for the table) 
     StoreFile (StoreFiles for each Store for each Region for the table) 
     Block  (Blocks within a StoreFile within a Store for each Region for the table) 
HBase를

RegionSourceRows 둘 사이 로우의 키로서 정의된다. TableColumnFamily이 하나 이상일 경우 ColumnFamily/RegionStore이 표시됩니다. 모든 StoreMemStore 및 0 이상을 갖습니다. StoreFiles

MemStore가 플러시 될 때 StoreFiles가 만들어집니다. 가끔씩 백그라운드 스레드는 파일 수를 유지하기 위해 압축을 트리거합니다. 컴팩 션에는 major와 minor의 두 가지 유형이 있습니다. Store가 사소한 컴팩 션 대상이되면 인접한 StoreFiles를 하나 선택하여 다시 작성합니다. 사소한 컴팩 션은 삭제되거나 만료 된 데이터를 제거하지 않습니다. 사소한 컴팩 션이 Store의 모든 StoreFiles를 선택하면 주요 압축으로 승격됩니다. 주요 압축에서 저장소의 모든 StoreFiles는 하나의 StoreFile로 다시 작성됩니다.

좋아요 ... 압축 대기열이란 무엇입니까? 압축 대상으로 지정된 RegionServer의 저장소 수입니다. 유사하게 Flush Queue는 flush를 기다리는 MemStores의 수입니다.

큐를 비동기 적으로 처리 할 수있는 이유는 무엇입니까? 이것은 HBase 메일 링리스트에서 질문하는 것이 가장 좋은 질문입니다. 응답 시간이 빨라지는 경향이 있습니다.

편집 : 압축 큐는 RegionServer의 리소스를 100 % 차지하지 않습니다.

+0

@ giridhar 들여 쓰기가 테이블의 구조를 올바르게 반영하기 위해 의도적이었습니다. –