내 상황은 다음과 같습니다. 20 명의 노드로 구성된 Hadoop/HBase 클러스터에 3 명의 ZooKeepers가 있습니다. MapReduce를 통해 HBase 테이블에서 다른 HBase 테이블로 많은 데이터를 처리합니다.HBase는 MapReduce의 새로운 영역을 클러스터 전체에 어떻게 배포합니까?
이제 새 테이블을 만들고 출력 싱크로 해당 테이블을 사용하도록 모든 작업에 지시하면 모든 데이터가 동일한 regionserver로 이동합니다. 소수의 지역 만 있다면 놀랄 일이 아닙니다. 내가 가진 특정 테이블에는 약 450 개의 영역이 있으며 이제는 문제가 발생합니다. 대부분의 영역 (약 80 %)은 동일한 지역 서버에 있습니다!
HBase가 클러스터 전체에 새로운 영역 할당을 배포하는 방법과이 동작이 정상/원하는지 버그인지 여부에 대해 궁금합니다. 불행히도 내 코드에서 버그를 찾기 시작 해야할지 모르겠다.
내가 묻는 이유는 이것이 일자리를 엄청나게 느리게 만든다는 것입니다. 작업이 완전히 완료된 경우에만 표가 클러스터에서 균형을 유지하지만이 동작은 설명하지 않습니다. HBase가 새로운 서버를 생성하는 순간 다른 서버로 분산시켜야하지 않습니까?
입력 해 주셔서 감사합니다.
감사합니다. 이제 왜 이런 식으로 발생했는지 부분적으로 알고 있습니다. 내 클러스터는 Cloudera의 CDH3에 있고 HBase는 0.90.4 버전입니다. 귀하의 의견을 통해 클러스터에 161 개의 테이블이있는 것이 문제 일 수 있다고 생각 했습니까? – bwacx
hbase는 테이블을 영역 만 배포하므로 테이블을 균등하게 분산해야한다는 것을 인식하지 못합니다. 테이블이 하나만있는 경우에는 이런 일이 발생하지 않을 수 있지만 모든 사용자가 적은 수의 테이블 만 사용하도록하는 것은 적절하지 않습니다. – David