2013년 12월 29일 일요일

Region

Region (=Tablet in Bigtable)

l  확장성 및 로드밸런싱의 기본 단위.

l  기본적으로 함께 저장된 인접한 범위의 로우들.

 regionkey range를 가지고 있고, 해당 key rangerow들은 해당 region에 저장되게 된다.

Mapreduce 환경에서 mapper의 개수는 region의 개수와 동일하다.(Column Family의 개수와는 상관없음.)

Region의 개수가 적을 경우, hot region이 생기게 됨. 일정 region에만 많은 access가 오게 되고 로드 밸런싱이 잘 이루어지지 못한다.

Region의 개수가 많을 경우, region은 확장성 및 로드밸런싱의 기본 단위이기 때문에 region의 개수가 너무 많으면 region을 관리하는데 많은 cost가 들어가게 됨. 예를 들어 master가 주로 죽은 region을 확인하고 이동시키는 역할을 하지만 이런 region이 많으면 부하가 크게 됨. 이외에도 region이 많아지면 여러 이유로 performance문제를 일으킨다고 함.

현재 Apache에서 제시하는 권장설정은 10 – 1000개 사이이다.

Regionsplit
하지만 regionauto split을 통해서 region을 나눠지게 놔둘 경우 해당 regionsplit시간동안 접근을 못하기 때문에 성능에 큰 영향을 주게 됨.
따라서 manually split해야함.
Manually split : Splitauto로 일어나지 않게 하고 사용자가 직접 큰 regionsplit하는 방법.

split문제의 해결 방법으로 pre-split도 있음. 미리 region의 개수를 여러 개로 설정해 놓은 후 돌아가게 됨. 본래는 1개의 region이 켜지게 되고 그 region이 커질 때 마다 split을 실행함.



현재 HBasecolumnwrite performance 문제가 Hot spot region 문제인지 확인해 볼 것. 하지만 skew도 있지만 전체적으로 느려지는 것을 보면 hot spot region문제만 있는 것은 아닌 것으로 예상.