복붙노트

[HADOOP] hbase.hregion.max.filesize를 사용하여 HBase 영역 자동 분할

HADOOP

hbase.hregion.max.filesize를 사용하여 HBase 영역 자동 분할

HBase (hbase-0.94.6-cdh4.5.0)의 cloudera 배포판과 cloudera 관리자를 사용하여 모든 클러스터 구성을 설정합니다.

HBase에 대해 다음 속성을 설정했습니다.

<property>
<name>hbase.hregion.max.filesize</name>
<value>10737418240</value>
<source>hbase-default.xml</source>
</property>

NB : 10737418240 <=> 10G

따라서, 내가 읽은 모든 문서에 따르면, 데이터는 영역 크기가 10G에 도달 할 때까지 단일 영역에 축적되어야합니다.

그러나, 그것은 작동하지 않는 것 같습니다 ... 어쩌면 나는 뭔가를 놓친다.

내 hbase 테이블의 모든 영역과 크기는 다음과 같습니다.

root @ hadoopmaster01 : ~ # hdfs dfs -du -h / hbase / my_table 719 /hbase/my_table/.tableinfo.0000000001 0 /hbase/my_table/.tmp 222.2 M / hbase / my_table / 08e225d0ae802ef805fff65c89a15de6 602.7 M / hbase / my_table / 0f3bb09af53ebdf5e538b50d7f08786e 735.1 M / hbase / my_table / 1152669b3ef439f08614e3785451c305 2.8 G / hbase / my_table / 1203fbc208fc93a702c67130047a1e4f 379.3 M / hbase / my_table / 1742b0e038ece763184829e25067f138 7.3 G / hbase / my_table / 194eae40d50554ce39c82dd8b2785d96 627.1 M / hbase / my_table / 28aa1df8140f4eb289db76a17c583028 274.6 M / hbase / my_table / 2f55b9760dbcaefca0e1064ce5da6f48 1.5 G / hbase / my_table / 392f6070132ec9505d7aaecdc1202418 1.5 G / hbase / my_table / 4396a8d8c5663de237574b967bf49b8a 1.6 G / hbase / my_table / 440964e857d9beee1c24104bd96b7d5c 1.5 G / hbase / my_table / 533369f47a365ab06f863d02c88f89e2 2.5 G / hbase / my_table / 6d86b7199c128ae891b84fd9b1ccfd6e 1.2 G / hbase / my_table / 6e5e6878028841c4d1f4c3b64d04698b 1.6 G / hbase / my_table / 7dc1c717de025f3c15aa087cda5f76d2 200.2 M / hbase / my_table / 8157d48f833bb3b708726c703874569d 118.0 M / hbase / my_table / 85fb1d24bf9d03d748f615d3907589f2 2.0 G / hbase / my_table / 94dd01c81c73dc35c02b6bd2c17d8d22 265.1 M / hbase / my_table / 990d5adb14b2d1c936bd4a9c726f8e03 335.0 M / hbase / my_table / a9b673c142346014e01d7cf579b0e58a 502.1 M / hbase / my_table / ae3b1f6f537826f1bdb31bfc89d8ff9a 763.3 M / hbase / my_table / b6039c539b6cca2826022f863ed76c7b 470.7 M / hbase / my_table / be091ead2a408df55999950dcff6e7bc 5.9 G / hbase / my_table / c176cf8c19cc0fffab2af63ee7d1ca45 512.0 M / hbase / my_table / cb622a8a55ba575549759514281d5841 1.9 G / hbase / my_table / d201d1630ffdf08e4114dfc691488372 787.9 M / hbase / my_table / d78b4f682bb8e666488b06d0fd00ef9b 862.8 M / hbase / my_table / edd72e02de2a90aab086acd296d7da2b 627.5 M / hbase / my_table / f13a251ff7154f522e47bd54f0d1f921 1.3 G / hbase / my_table / fde68ec48d68e7f61a0258b7f8898be4

보시다시피, 많은 지역이 있으며 그 중 하나가 10G에 가까운 크기입니다 ...

누군가가 이런 종류의 문제에 직면했거나 설정이 필요한 다른 구성이 있는지 알고 있다면 나를 도와주세요!

고마워

해결법

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

    1.@mpiffaretti, 당신이보고있는 것은 매우 유효합니다. 나는 자동 분할 이후 처음으로 영역 크기를 보았을 때 약간의 충격을 받았다.

    @mpiffaretti, 당신이보고있는 것은 매우 유효합니다. 나는 자동 분할 이후 처음으로 영역 크기를 보았을 때 약간의 충격을 받았다.

    HBase 0.94+에서 기본 분할 정책은 IncreasingToUpperBoundRegionSplitPolicy입니다. 영역 크기는 아래에 설명 된 알고리즘에 따라 결정됩니다.

    이것은 10GB 제한에 도달 할 때까지 기다리지 않고 지역 서버를 통해 좋은 지역 확산을 시작하기 때문에 꽤 좋은 전략입니다.

    또는 클러스터의 처리 능력을 최대한 활용하려는 경우 테이블을 미리 분할하는 것이 좋습니다. 단일 Region이있는 경우 모든 요청은 Region Server로 이동합니다. 영역이 할당됩니다. 사전 분할은 영역을 행 키 공간으로 분할하는 방법에 대한 컨트롤을 사용자의 손에 넘깁니다.

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

    2.Pr-splitting이 더 좋습니다. 데이터가 한 지역에 지속적으로 삽입되지 않고 지역 제한에 도달하여 분할 또는 압축되지 않기를 바랍니다.

    Pr-splitting이 더 좋습니다. 데이터가 한 지역에 지속적으로 삽입되지 않고 지역 제한에 도달하여 분할 또는 압축되지 않기를 바랍니다.

    그 상태에서 쓰기는 균일하게 분배되지 않고 테이블 압축은 모듈 작성을위한 병목이됩니다.

    Active 지역에 대한 요청은 많지 않습니다.

  3. from https://stackoverflow.com/questions/23872556/hbase-regions-automatic-splitting-using-hbase-hregion-max-filesize by cc-by-sa and MIT license