Region (=Tablet in Bigtable)
l 확장성 및
로드밸런싱의 기본 단위.
l 기본적으로
함께 저장된 인접한 범위의 로우들.
각
region은 key range를 가지고 있고, 해당 key range의 row들은
해당 region에 저장되게 된다.
Mapreduce 환경에서 mapper의
개수는 region의 개수와 동일하다.(Column Family의
개수와는 상관없음.)
Region의 개수가 적을 경우, hot
region이 생기게 됨. 일정 region에만
많은 access가 오게 되고 로드 밸런싱이 잘 이루어지지 못한다.
Region의 개수가 많을 경우, region은
확장성 및 로드밸런싱의 기본 단위이기 때문에 region의 개수가 너무 많으면 region을 관리하는데 많은 cost가 들어가게 됨. 예를 들어 master가 주로 죽은 region을 확인하고 이동시키는 역할을 하지만 이런 region이
많으면 부하가 크게 됨. 이외에도 region이 많아지면
여러 이유로 performance문제를 일으킨다고 함.
현재 Apache에서 제시하는 권장설정은 10 – 1000개 사이이다.
Region의 split
하지만 region의 auto split을
통해서 region을 나눠지게 놔둘 경우 해당 region은
split시간동안 접근을 못하기 때문에 성능에 큰 영향을 주게 됨.
따라서 manually split해야함.
Manually split : Split이 auto로 일어나지 않게 하고 사용자가 직접 큰 region은 split하는 방법.
split문제의 해결 방법으로 pre-split도
있음. 미리 region의 개수를 여러 개로 설정해 놓은
후 돌아가게 됨. 본래는 1개의 region이 켜지게 되고 그 region이 커질 때 마다 split을 실행함.
현재 HBase의 column형
write performance 문제가 Hot spot region 문제인지
확인해 볼 것. 하지만 skew도 있지만 전체적으로 느려지는
것을 보면 hot spot region문제만 있는 것은 아닌 것으로 예상.


