안단테 안단테

16. 클라이언트 API 관리기능 - 2 본문

IT 기술/BigData

16. 클라이언트 API 관리기능 - 2

안단테에 2023. 2. 6. 09:52
728x90
반응형

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

 

728x90
반응형

'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
Comments