복붙노트

[HADOOP] HBase가 얼마나 많은 regions 서버를 분할합니까?

HADOOP

HBase가 얼마나 많은 regions 서버를 분할합니까?

HBase가 얼마나 많은 regions 서버에 테이블을 분할하는지 말해주십시오.

예를 들어, 내 행 키가 0에서 10M 사이의 정수이고 10 개의 영역 서버가 있다고 가정 해 봅시다. 이것은 첫 번째 regionserver가 0 - 10M, 두 번째 1M - 2M, 세 번째 2M - 3M, ... 열 번째 9M - 10M의 키를 가진 모든 행을 저장한다는 것을 의미합니까?

내 행 키를 타임 스탬프로하고 싶습니다만 대부분의 쿼리가 최신 날짜에 적용되며 모든 쿼리는 하나의 regionserver에 의해 처리됩니다. 사실입니까?

아니면이 데이터가 다르게 전파 될 수 있습니까? 아니면 어떻게 든 지역 서버를 보유하고있는 것보다 더 많은 지역을 만들 수 있습니다. 서버 1은 키 0 - 0.5M 및 3M - 3,5M을 가지므로 내 데이터가보다 균등하게 분산됩니다. 가능한?

최신 정보

방금 hbase.hregion.max.filesize 옵션이 있다는 것을 알았습니다. 이것이 제 문제를 해결할 것이라고 생각합니까?

해결법

  1. ==============================

    1.WRT 파티션을 사용하면 HBase의 아키텍처에 대한 Lars의 블로그 게시물이나 HBase의 "복제본"인 Google의 Bigtable 문서를 읽을 수 있습니다.

    WRT 파티션을 사용하면 HBase의 아키텍처에 대한 Lars의 블로그 게시물이나 HBase의 "복제본"인 Google의 Bigtable 문서를 읽을 수 있습니다.

    행 키가 시간 소인 일 경우, 가장 큰 키가있는 지역은 새 요청으로 항상 히트됩니다 (region은 단일 region 서 v에서만 제공되기 때.에).

    짧은 스캔을하기 위해 타임 스탬프를 사용 하시겠습니까? 그렇다면 키를 소금으로 처리하는 것을 고려해보십시오 (Google에서 Mozilla가 Sorocco로 어떻게했는지 검색하십시오).

    접두사에 ID가있는 타임 스탬프를 사용할 수 있습니까? 예를 들어, 특정 사용자에 대해서만 데이터를 요청한 경우 ts에 해당 사용자 ID를 접두사로 추가하면 부하 분산이 훨씬 잘됩니다.

    그렇지 않다면 UUID 또는 무작위로 키를 배포 할 다른 것을 사용하십시오.

    hbase.hregion.maxfilesize 정보

    해당 테이블에서 maxfilesize를 설정하면 (쉘을 사용하여 수행 할 수 있음) 각 영역이 정확히 XMB (X는 사용자가 설정 한 값 임)가 큰 것은 아닙니다. 이제 행 키가 모두 타임 스탬프라고 가정 해 봅시다. 즉, 새 행 키가 이전 행 키보다 크다는 것을 의미합니다. 이것은 빈 끝 키 (마지막 것)가있는 영역에 항상 삽입된다는 것을 의미합니다. 어떤 시점에서 파일 중 하나가 압축을 통해 maxfilesize보다 커지고 그 영역은 가운데로 분할됩니다. 하위 키는 자신의 영역에 있고 다른 키의 상위 키는 다른 영역에 있습니다. 그러나 새 행 키가 항상 이전보다 크므로이 새로운 영역 (및 기타 등등)에만 쓸 것임을 의미합니다.

    tl; dr이 1,000 개 이상의 지역을 보유하고 있지만이 스키마에서는 가장 큰 행 키가있는 영역에 항상 쓰기가 발생하므로 호스팅 영역 서버에 병목 현상이 발생합니다.

  2. ==============================

    2.옵션 인 hbase.hregion.max.filesize는 기본적으로 256MB이며,이 제한 영역에 도달하면 최대 영역 크기가 설정됩니다. 즉, 내 데이터는 256MB의 여러 영역에 저장되며, 하나는 더 작은 영역에 저장됩니다. 그래서

    옵션 인 hbase.hregion.max.filesize는 기본적으로 256MB이며,이 제한 영역에 도달하면 최대 영역 크기가 설정됩니다. 즉, 내 데이터는 256MB의 여러 영역에 저장되며, 하나는 더 작은 영역에 저장됩니다. 그래서

    최신 데이터는 256MB 크기의 영역으로 분할되어 다른 영역 서버에 저장되기 때문에 사실이 아닙니다.

  3. from https://stackoverflow.com/questions/3410896/how-hbase-partitions-table-across-regionservers by cc-by-sa and MIT license