12
HBase 훑어보기 최범균(2013-12-18)

HBase 훑어보기

Embed Size (px)

DESCRIPTION

저처럼 HBase를 모르는 분을 위한 HBase 훑어보기 자료입니다.

Citation preview

Page 1: HBase 훑어보기

HBase 훑어보기최범균(2013-12-18)

Page 2: HBase 훑어보기

HBase

● Hadoop 기반의 NoSQL○ 컬럼 패밀리 + 스키마 없음○ 조인, 인덱스 없음○ 행 단위 조작에 대해서만 Atomic

■ 다중 행에 대한 트랜잭션 지원 없음● 분산 데이터 저장소

○ 데이터를 다수 서버에 분산 보관○ 자주 접근되는 데이터를 메모리에 캐시

● 데이터 영속성○ 물리적 저장소로 HDFS를 사용

Page 3: HBase 훑어보기

address 컬럼패밀리info 컬럼패밀리

데이터 모델

bkchoi name: 최범균

email:[email protected]

addr1:서울시 동작구

addr2:상도동 ...

rowkey

madvirus email:[email protected]

addr1:서울시 관악구

zipcode신사동 ….

column qualifier

zoro realname:돈 디에고 데 라 베가

cell

1개 테이블의 구조

Page 4: HBase 훑어보기

데이터 모델

● 테이블은 n개의 컬럼 패밀리를 가짐● 1개의 행 = rowkey + 컬럼패밀리들

○ rowkey를 기준으로 정렬: 유일한 인덱스● 컬럼 패밀리

○ 임의의 (column qualifer, 값) 쌍들로 구성● column qualifer의 값은 n개의 버전을 가짐

○ 기본 설정은 3개의 마지막 버전 보관○ 버전 값은 시간(timestamp)을 이용

● 단일 셀 식별○ <rowkey, column family, column qualifer, version>

● rowkey, column qualifier, 셀 값의 타입○ byte 배열

Page 5: HBase 훑어보기

데이터 모델 예시: 채팅메시지

1010101-0000124345456 senderId:kame

message:안녕하세요

senderName:출판사

rowkey: 대화ID-timestamp(역순) location 컬럼 패밀리message 컬럼 패밀리

locname:파주

coord:

1010101-0000124345477 senderId:bkchoi

message:네~

senderName:최범균

Page 6: HBase 훑어보기

데이터 접근 오퍼레이션

● get: 특정 rowkey에 해당하는 row 접근● put: 특정 rowkey에 해당하는 데이터를 추가 또는 변경

● delete: 특정 rowkey에 해당하는 row 삭제● scan: 특정 범위의 rowkey에 속하는 row 목록 접근

● increment: 특정 셀의 값을 증가● CAS(compare and set): 특정 셀의 값을 비교후 설정

Page 7: HBase 훑어보기

리전Region

● 테이블의 부분 집합을 관리○ 각 리전은 특정 범위의 rowkey 데이터를 다룸

■ 예) 리전1: [~1000], 리전2: [1001~]○ 리전 서버마다 n개의 리전을 제공

● 일정 크기 이상 커지면 분리

리전서버

테이블A의리전1

리전서버

테이블A의리전2

테이블B의리전2

테이블B의리전1

테이블B의리전3

Page 8: HBase 훑어보기

리전서버, 마스터서버, 주키퍼

주키퍼 클러스터

리전서버

HDFS 데이터노드

리전서버

HDFS 데이터노드

마스터서버클라이언트

테이블 생성, 삭제, 수정 요청

리전 위치 검색DDL 처리리전 할당 관리

데이터 송수신 리전 분리 정보 제공

Page 9: HBase 훑어보기

리전서버

리전의 구성

리전 (특정 테이블의 rowkey 1000~ 범위)

스토어(컬럼패밀리 당 1개)

멤스토어(MemStore)

HFile HFile HFile

파일 시스템(HDFS)

파일 파일 파일

스토어데이터를 Put 하면 일단 멤스토어에 보관.멤스토어가 가득 차면 HFile 형식으로 파일로 Flush하고 멤스토어를 비움.

<rowkey, cf, c, ver, 값> 목록을 가짐.

리전

블록캐시(BlockCache)

HLog(WAL)

파일

LRU 캐시.HFile의 블록을 캐시

변경 내역 로그

Page 10: HBase 훑어보기

HFile Compaction

● Minor Compaction○ 주어진 기준에 따라 작은 크기의 HFile들을 묶어서 한 개의 HFile로 만듦■ 기준: 스토어의 최대/최소 HFile 개수, 최소 크기, 최대 크기 등을 고려해서 합칠 파일 선택

○ 삭제된 행, 오래된 버전도 그대로 복사● Major Compaction

○ 스토어의 모든 HFile을 합쳐서 1개의 HFile 생성○ 삭제된 행, 오래된 버전은 삭제 됨

Page 11: HBase 훑어보기

컬럼 패밀리 별 설정

● HFile 블록 크기: 기본 64KB○ 블록 크기 작으면 랜덤 접근, 크면 순차 스캔 유리

● 블룸 필터○ 검색 데이터가 해당 블록에 존재하지 않는지에 대한 데이터를 추가할 지 여부 (기본은 추가하지 않음)

● TTL: 데이터 수명 지정 (초 단위, 기본 값은 TTL 없음)○ major compaction에서 TTL 보다 오래된 버전을 삭제

● 압축:○ 블록 데이터를 디스크에 저장할 때 압축처리

● 셀 버전 개수: 기본 3개○ 개수 지정 가능 (예, 1개)○ 최소 보관 개수 지정 가능

■ 이 경우 TTL 보다 오래된 버전도 최소 1개 남음

Page 12: HBase 훑어보기

기타

● 클러스터 계획/운영● 백업/클러스터 간 복제● HBase MR 이용