HBase에 write를 하다보면 어떤 region에는 write를 하지 않는 경우가 생기게 된다.
그게 하나 이상의 노드가 되면 해당 노드들은 작업을 하지 않게 되고 다른 노드에 write가 몰리면서 부하가 생기게 된다.
이처럼 write 작업이 되지 않는 구멍이 안생기도록 하기 위해 hbase table의 region을 미리 분할하는데 이를 pre-split이라고 한다.
그러면 pre-split하기 적절한 region 개수는 어떻게 구해야 할까?
그것을 다음과 같은 방식으로 할 수 있다.
우선 다음과 같은 hbase의 설정 값을 계산식에서 사용한다.
1. Region 서버의 자바 힙 크기 = 32GiB
2. hbase.regionserver.global.memstore.upperLimit =0.4
3. hbase.hregion.memstore.flush.size = 128MiB
2. hbase.regionserver.global.memstore.upperLimit =0.4
3. hbase.hregion.memstore.flush.size = 128MiB
위의 1과 2의 값을 곱하면 region 서버의 자바 힙에서 write를 위해 사용하는 힙 크기를 구할 수 있다.
이를 memstore에서 flush 하는 크기로 나누면 region 개수를 구할 수 있다.
( 1 * 2) / 3 = 102.4
따라서 위의 값을 가지고 연산하면 102.4가 나오므로 약 102개의 region으로 나누는게 좋다는 걸 알 수 있다.
이를 memstore에서 flush 하는 크기로 나누면 region 개수를 구할 수 있다.
( 1 * 2) / 3 = 102.4
따라서 위의 값을 가지고 연산하면 102.4가 나오므로 약 102개의 region으로 나누는게 좋다는 걸 알 수 있다.
댓글 없음:
댓글 쓰기