안단테 안단테
16. 클라이언트 API 관리기능 - 2 본문
16. 클라이언트 API 관리기능 - 2
5.2 HBaseAdmin
특정 컬럼패밀리를 가진 테이블을 생성하거나 테이블 존재 여부 확인
테이블 및 컬럼패밀리 정의를 변경하거나 삭제 기능 제공
5.2.1 기본기능
관리 API를 사용하려면 ㅁ너저 HBaseAdmin 클래스의 인스턴스를 생성해야됨
HBaseAdmin : 마스터 서버의 장애복구 상황등에 매끄럽게 대처하지 못하도록 짧게 사용해야됨
5.2.2 테이블 관련기능
먼저 테이블 생성 메소드로 테이블 생성
createTabelExample
createTableWithRegionExample : getStartEndKeys()메소드를 사용하여 리전범위 추출
최초의 시작 키와 최후의 끝 키는 비어 있는데 이것은 HBase 관례
각 리전의 끝 키가 다음 리전 시작 키와 동일 -> 끝 키는 리전에 포함되지 않음
creatTable(HTableDescripor desc, byte[] startkey, byte[] endkey, int numRegions)
최소 3 : 테이블이 확보해야 하는 최소한의 리전수
startkey < endkey
끝 값에서 시작 키 값을 뺀 후 이를 리전수로 나누면 리전 범위 산출
creatTable(HTableDescriptor desc, byte[][] splitkeys)
미리 정의된 분할 키의 배열을 파라미터로 받음
생성되는 리전의 시작 및 끝 키를 구성
listTables() 메소드는 음.. 테이블 지시자 얻어옴
-> 테이블 이름이 없는거면 예외발생됨
테이블 삭제하기 위해 우선 비활성화 해야됨
-> 우선 모든 리전 서버에서 아직 저용하지 않은 변경사항 처리. 모든 리전 당은 후 이 테이블의 모든 리전이 어떤 서버에도 배치되어 있지 않다는 사실을 메타(.META)테이블이 기록
테이블 상태확인 isTableAvailable(), isTableDisabled() 사용
5.2.3 스키마 관련 기능
컬럼추가하거나 변경하려면 HColumnDescriptor 인스턴스를 준비
getTableDEscriptor() : 테이블스키마 얻음 .. 반환받은 HColumnDescriptor인스턴스에서 getColumnFamilies()메소드 실행
컬럼삭제를 위해서 테이블명 및 컬러명 제공
사례 : 허시
외부 설정 파일을 이용하여 테이블 및 스키마를 생성하고 변경
-> 테이블과 컬럼 constructor를 XML파일에 정의하고 읽어들인후 기존의 테이블 정의와 비교
그 후 다른점이 있으면 스키마에 적용
5.2.4 클러스터 관련 기능(고급 사용자 위한것)
클러스터 상태 확인 가능
- CheckHBaseAvailable() :
클라이언트와 HBase 클러스터가 통신할 수 있는지
- getClusterStatus() :
클러스터 상태
- closeRegion
리전 서버에 배치된 리전 닫음
특정 리전 닫고 배치를 해제
리전은 리전 서버에서 직접 닫히며 마스터노드는 이 단계를 모름
- flush
지연된 디스크 쓰기 작업을 능동적으로 수행 가능
- compact
파라미터로 지정한 테이블이나 리전을 컴팩션 작업 대기열에 넣음
- majorcompact
리전이나 테이블에 대한 주 컴팩션을 수행한다는 점 제외하고 compact()와 동일
- split
지정한 리전이나 테이블 분할 가능
파라미터로 테이블 이름을 입력하면 해당 테이블의 모든 리전을 이터레이트 하여 분할 작업을 자동적으로 호출
splitpoint 파라미터로 특정 로우키를 입력하면 그 위치에서 리전 분할
- assign/unassign
클라이언트에서 어떤 리전을 배치하거나 해지 할 때 사용
- move
클라이언트에서 능동적으로 어떤 리전을 어떤 서버에서 관리 할 지 제어
특정 리전을 현재 배치된 서버에서 다른 서버로 옮길 수 있음
- balanceSwitch
리전 밸런서 켜거나 끔
리전 이동 프로세스 시작되는데 더 많은 리전이 배치된 서버에서 적게 배치된 서버로 이동
- shutdown() / stopMaster() / stopRegionServer()
전체 클러스터 / 마스터서버 / 특정리전서버 중단
5.2.5. 클러스터 상태 정보
HBaseAdmin.getClusterStatus() -> clusterStatus 반환
클러스터 현재상태에 대해 마스터 서버가 가진 모든 정보를 가짐
이 클래스에도 'set' 접두어를 가진 setter가 존재하여 해당 인스턴스가 가진 정보 수정 가능
사본이여서 마스터서버에는 전달/반영안됨
getServes()메소드로 ServerName 인스턴스로는 살아 있는 각 서버의 상세 정보 및 현재 실행중인 동작을 살펴볼 수 있음
서버는 HServerload 인스턴스를 통해 자신의 부하 상황에 대한 세부 정보 반환
ClusterStatus 인스턴스의 getLoad()메소드를 통해 얻음
HServerLoad 클래스 -> 서버 자체의 부하 정보, 각 리전의 부하 정보 제공
RegionLoad -> 리전의 부하 정보 전용 클래스
ClusterStatusExample
'IT 기술 > BigData' 카테고리의 다른 글
15. 클라이언트 API 관리기능 - 1 (0) | 2023.02.06 |
---|---|
14. 클라이언트 API: 고급기능 (0) | 2023.02.06 |
13. HBase 클라이언트 API (0) | 2023.02.06 |
12. HBase 요구사항 (1) | 2023.02.03 |
11. HBase 소개 - 4 (0) | 2023.02.03 |