HBase 훑어보기

15,211 views

Published on

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

Published in: Technology
1 Comment
44 Likes
Statistics
Notes
No Downloads
Views
Total views
15,211
On SlideShare
0
From Embeds
0
Number of Embeds
1,394
Actions
Shares
0
Downloads
288
Comments
1
Likes
44
Embeds 0
No embeds

No notes for slide

HBase 훑어보기

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

×