Upload
beom-kyun-choi
View
6.020
Download
1
Embed Size (px)
DESCRIPTION
저처럼 HBase를 모르는 분을 위한 HBase 훑어보기 자료입니다.
Citation preview
HBase 훑어보기최범균(2013-12-18)
HBase
● Hadoop 기반의 NoSQL○ 컬럼 패밀리 + 스키마 없음○ 조인, 인덱스 없음○ 행 단위 조작에 대해서만 Atomic
■ 다중 행에 대한 트랜잭션 지원 없음● 분산 데이터 저장소
○ 데이터를 다수 서버에 분산 보관○ 자주 접근되는 데이터를 메모리에 캐시
● 데이터 영속성○ 물리적 저장소로 HDFS를 사용
address 컬럼패밀리info 컬럼패밀리
데이터 모델
bkchoi name: 최범균
email:[email protected]
addr1:서울시 동작구
addr2:상도동 ...
rowkey
madvirus email:[email protected]
addr1:서울시 관악구
zipcode신사동 ….
column qualifier
zoro realname:돈 디에고 데 라 베가
cell
1개 테이블의 구조
데이터 모델
● 테이블은 n개의 컬럼 패밀리를 가짐● 1개의 행 = rowkey + 컬럼패밀리들
○ rowkey를 기준으로 정렬: 유일한 인덱스● 컬럼 패밀리
○ 임의의 (column qualifer, 값) 쌍들로 구성● column qualifer의 값은 n개의 버전을 가짐
○ 기본 설정은 3개의 마지막 버전 보관○ 버전 값은 시간(timestamp)을 이용
● 단일 셀 식별○ <rowkey, column family, column qualifer, version>
● rowkey, column qualifier, 셀 값의 타입○ byte 배열
데이터 모델 예시: 채팅메시지
1010101-0000124345456 senderId:kame
message:안녕하세요
senderName:출판사
rowkey: 대화ID-timestamp(역순) location 컬럼 패밀리message 컬럼 패밀리
locname:파주
coord:
1010101-0000124345477 senderId:bkchoi
message:네~
senderName:최범균
데이터 접근 오퍼레이션
● get: 특정 rowkey에 해당하는 row 접근● put: 특정 rowkey에 해당하는 데이터를 추가 또는 변경
● delete: 특정 rowkey에 해당하는 row 삭제● scan: 특정 범위의 rowkey에 속하는 row 목록 접근
● increment: 특정 셀의 값을 증가● CAS(compare and set): 특정 셀의 값을 비교후 설정
리전Region
● 테이블의 부분 집합을 관리○ 각 리전은 특정 범위의 rowkey 데이터를 다룸
■ 예) 리전1: [~1000], 리전2: [1001~]○ 리전 서버마다 n개의 리전을 제공
● 일정 크기 이상 커지면 분리
리전서버
테이블A의리전1
리전서버
테이블A의리전2
테이블B의리전2
테이블B의리전1
테이블B의리전3
리전서버, 마스터서버, 주키퍼
주키퍼 클러스터
리전서버
HDFS 데이터노드
리전서버
HDFS 데이터노드
마스터서버클라이언트
테이블 생성, 삭제, 수정 요청
리전 위치 검색DDL 처리리전 할당 관리
데이터 송수신 리전 분리 정보 제공
리전서버
리전의 구성
리전 (특정 테이블의 rowkey 1000~ 범위)
스토어(컬럼패밀리 당 1개)
멤스토어(MemStore)
HFile HFile HFile
파일 시스템(HDFS)
파일 파일 파일
스토어데이터를 Put 하면 일단 멤스토어에 보관.멤스토어가 가득 차면 HFile 형식으로 파일로 Flush하고 멤스토어를 비움.
<rowkey, cf, c, ver, 값> 목록을 가짐.
리전
블록캐시(BlockCache)
HLog(WAL)
파일
LRU 캐시.HFile의 블록을 캐시
변경 내역 로그
HFile Compaction
● Minor Compaction○ 주어진 기준에 따라 작은 크기의 HFile들을 묶어서 한 개의 HFile로 만듦■ 기준: 스토어의 최대/최소 HFile 개수, 최소 크기, 최대 크기 등을 고려해서 합칠 파일 선택
○ 삭제된 행, 오래된 버전도 그대로 복사● Major Compaction
○ 스토어의 모든 HFile을 합쳐서 1개의 HFile 생성○ 삭제된 행, 오래된 버전은 삭제 됨
컬럼 패밀리 별 설정
● HFile 블록 크기: 기본 64KB○ 블록 크기 작으면 랜덤 접근, 크면 순차 스캔 유리
● 블룸 필터○ 검색 데이터가 해당 블록에 존재하지 않는지에 대한 데이터를 추가할 지 여부 (기본은 추가하지 않음)
● TTL: 데이터 수명 지정 (초 단위, 기본 값은 TTL 없음)○ major compaction에서 TTL 보다 오래된 버전을 삭제
● 압축:○ 블록 데이터를 디스크에 저장할 때 압축처리
● 셀 버전 개수: 기본 3개○ 개수 지정 가능 (예, 1개)○ 최소 보관 개수 지정 가능
■ 이 경우 TTL 보다 오래된 버전도 최소 1개 남음
기타
● 클러스터 계획/운영● 백업/클러스터 간 복제● HBase MR 이용