안단테 안단테

15. 클라이언트 API 관리기능 - 1 본문

IT 기술/BigData

15. 클라이언트 API 관리기능 - 1

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

15. 클라이언트 API 관리기능 - 1

 

Hbase는 데이터를 조작하는 데 사용하는 클라이언트 API외에 데이터 정의를 위한 API도 마련

데이터 스키마를 정의하는데 필요한 클래스를 살펴보고, 이 클래스들을 이용하여 새로운 HBase 테이블을 생성하는 등의 ㅈ가업을 수행하는 API 알아볼것

 

5.1 스키마 정의

 

테이블을 생성할 대는 테이블 스키마 및 컬럼패밀리의스키마를 정의하는 일이 포함

 

5.1.1 테이블

 

HBase에 저장되는 모든 데이터는 궁극적으로 하나 이상의 테이블에 그룹화

 

테이블 : 그 안쪽의 모든 컬럼이 공유한느 특성을 제어

 

테이블 내에서 사용자가 특성을 정의할 만한 대상으로 컬럼패밀리를 들수 있음

 

Writable 및 파라미터 없는 생성자

-> 이 클래스들이 하둡의 Writable 인터페이스 구현

-> 원격 시스템 간의 통신은 하둡의 RPC 프레임워크를 사용하여 수행

 

메소드들은 프레임워크에서 객체 데이터를 출력 스트림에 쓰고, 데이터를 전송받는 시스템에서 읽어 들이기 위해 호출

서버 및 클라이언트 양목에서 동일한 HBase JAR을 사용

데이터를 전송받는 측에서 리플랙션을 사용하여 클래스를 생성해야 하므로

 

클래스가 파라미터 없는 특별한 생성자를 제공하지 않으면 런타임 에러 발생

역직렬화를 위해서만 사용되며 코드 상에서 직접 사용되지 않음

 

테이블을 생성할 때는 이름만 정의하거나 지시자를 지정

테이블 이름에 사용할 수 있는 문자에는 제한이 있음

실제 저장 파일의 경로 일부로 사용되므로 규칙을 따라야됨

테이블은 별도의 데렉터리로 저장되는데 나중에 필요한 경우 (HDFS등의) 저수준 저장 시스템을 직접 살펴 볼 수 있음

 

HBase의 테이블이 컬럼을 가진 로우의 집합이지만 물리적으로는 리전이라는 구분된 공간 안에 분할되어 저장

하나의 리전은 하나의 리전서버에서 관리

리전에 저장된 데이터를 클라이언트에 직접 제공

 

5.1.2 테이블 속성 (실전에서는 잘 안쓰임)

 

- 테이블

descriptor는 테이블 속성을 설정하기 위해 getter와 setter를 제공

 

- 이름 : 

테이블 이름에 접근하여 변경가능

 

- 컬럼패밀리 : 

컬럼패밀리 추가, 확인, 읽기, 제거 수행 가능

 

- 파일 최대크기 : 

테이블 내의 리전이 커질 수 있는 최대크기 설정(바이트로 표현)

리전 크기가 이 값에 도달했을 때 시스템이 리전을 분할하는 기준

확장성 및 로드밸런싱 단위

 

- 멤스토어 flash 크기

테이블 파라미터는 플러시 작업이 일어나는 시기를 바이트 단위로 제어

이 값을 크게 하면 할 수록 더 큰 저장 파일 생성

-> 그러나 리전 서버가 추가적인 데이터를 비우는 속도를 따라가지 못하면 해당 리전에 대한 차단 시간이 길어지는 문제점 발생

 

- 지연된 로그 플러시

기본값 false (뒤에서 자세히..)

 

- 기타옵션

임의의 key/value 쌍을 설정할 수 잇는 메소드도 있음

테이블 정의와 함께 젖아하고 필요할 때 읽을 수 있음

 

5.1.3 컬럼패밀리

 

각 컬럼패밀리의 설정을 담는 HColumnDescriptor

컬럼패밀리는 그 안에 생성된 모든 컬럼에 적용되는 공유 기능을 정의

클라이언트는 새로운 컬럼 퀄리파이어를 사용하여 컬럼을 얼마든지 생성

컬럼 -> (컬럼패밀리 : 퀄리파이어)

 

컬럼패밀리 이름은 인쇄 가능한 문자로만하고 퀄리파이어는 어떤 이진 문자든 사용가능

  저장소 계층의 디렉터리 이름에 사용되기 때문

 

컬럼패밀리 이름은 파일 경로에 사용되므로 파일명 규칙에 부합

이름을 사람이 읽일수있으므로 파일시스템 계층에서 데이터 쉽게 접근

 

빈 컬럼 퀄리파이어도 존재 (명백히 하나밖에 없는 컬럼이므로 다른 컬럼과 이름을 구별되게 지어야됨)

 

- 이름

모든 컬럼패밀리는 이름이 존재 -> 수정불가

setter를 통해 이름을 설정할 수 없으므로 생성자를 통해 지정

 

- 최대버전개수

컬럼패밀리마다 값의 버전을 몇 개까지 보유할지 지정 가능

하우스 기능이 작용해 최대 개수 초과하는 버전값 삭제

기본값 3

 

- 압축

플러그인 가능한 압축 알고리즘 제공

특정 컬럼패밀리에 젖아된 데이터에 가장 적합한 압축 방식을 선택

기본설정 NONE -> 기본적으로 컬럼패밀리 생성할때 데이터 압축 안함

 

- 블록크기

Hbase에 저장된 모든 파일은 읽기 또는 스캔 연산 시에 로드되는 더 작은 블록으로 구분

이블록은 RDBMS의 페이지와 유사

블록크기 기본적으로 64KB

64KB : 설정된 값은 바이트 단위로 지정

읽기 수행 시에 HBase가 저장 파일에서 읽어들이고 나중을 위해 메모리에 캐시되는 데이터의 크기를 결정

 

HFile block크기와 HDFS 수준에 지정된 블록 크기 구별은 중요

HDFS - 64MB

HFile - 64KB : 블록 연산시에 데이터를 효율적으로 로드하고 캐시

HBase 블록 크기는 HDFS 블록 크기에 독립적이며 내부적으로만 사용

 

- 블록캐시

HBase는 I/O 지원을 효율적으로 사용하기 위해 데이터 전체 블록을 읽어 들임

-> 이후 읽기에서 디스크 접근이 필요하지 않도록 이 블록들을 인메모리 캐시에 유지

기본값 true로서 모든 읽기 연산에 블록 캐시 활성화

그러나 특정 컬럼패밀리를 순차적으로 읽기만 하고 재사용 안할거면 false 가 더 효율적

 

- 유효기간

하우스키핑으로 검사

 

- 인메모리

플래그 옵션의 기본값은 false

true로 설정하면 메모리에 로드된 컬럼패밀리의 모든 블록을 계속 유지

적은 값을 가진 것이 컬럼패밀리에 유용

 

- 블룸필터

읽기수행시간 단축해줌

-> 저장공간및 메모리에 추가적인 부하를 야기하므로 기본적으로 비활성화

 

- 레플리케이션 범위

클러스터를 여러개 운용하여, 로컬 갱신 사항을 네트워크를 통해 전송하여 원격지에 있는 사본을 적용

기본값 0 (비활성화)

728x90
반응형

'IT 기술 > BigData' 카테고리의 다른 글

16. 클라이언트 API 관리기능 - 2  (1) 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