HBase 소개

Nosql/HBase 2016. 8. 18. 23:53

# HBase

------------


1. 정의 : HDFS에 구현한 분산 컬럼 기반 database


2. hiostory :

- 2006년 말 : 구글의 빅테이블(구조화된 데이터용 분산 스토리지 시스템)을 모델 을 기반으로 시작

- 2007년 10월, HBase 배포판 open

- 2010년 5월, 하둡 서브프로젝트 > 아파치 최고 수준 프로젝트 로 등록

- 도입 사례 : 어도비, 스텀블 어폰, 트위터, 야후 등


3. pre requirements

- java 7 이상


4. architecture

 

- feature

- Master - Slaver(region server) 구조 이다

- Zookeeper : 분산 시스템 코디네이터

- region 단위로 auto sharding 을 지원


5. 데이터 모델

- Table

- Row들의 집합 (Row Key가 있으며 다수의 column family로 구성)

- Schema 정의서 Column Family 만 정의

- Row Key

- 임의의 Byte열로 사전순으로 내림차순 정렬

    - 빈 Byte문자열은 테이블의 시작과 끝을 의미

- 문자열, 정수 바이너리, 직렬화된 데이터 구조까지 어떤 것도 로우키가 될 수 있다

- Column Family

- Column들의 그룹으로 모든 컬럼패밀리의 Member는 같은 접두사를 사용

- NOSQL:Cassandra와 NOSQL:HBASE 는 NOSQL이라는 컬럼 패밀리의 멤버컬럼

- 컬럼패밀리 접두사는 반드시 표시할 수 있는 문자로 구성

- 테이블 스키마에서 정의의 한 부분을 먼저 지정해야 한다

- 모든 컬럼패밀리 멤버는 물리적으로 파일시스템에서 함께 저장

- 새로운 컬럼패밀리 멤버는 동적으로 추가가능

- Cell

- ROW KEY & Column & Version이 명시된 튜플

- 값은 임의의 Byte열이며 Timestamp

- 테이블 셀은 버전관리 된다 (오직 셀들만)


6. 논리 스토리지 구조

- 하나의 key-value (column)에 대한 data block

- Row key : sharding key 이면서 유일한 key

- Column Quailifier : 컬럼 명

- row size 계산

- physical key 에 해당하는 고정 값 들의 byte 합이 기본으로 저장된다

- 따라서 rowkey, column family name, column qualifier 의 이름은 짧게 유지하는 것이 좋다


6. Sharding 기준

    

- Row key 기준으로 Range Sharding 방식을 따른다

- Row range 단위로 물리 Region 을 생성

- Region 을 RegionServer 로 분산하여 관리


7. write / read 방식

- write

- step 1 : wal 파일에 transaction 정보 입력

- step 2 : memstore 에 데이터 기록 후 client 에 결과 return

- step 3 : memstore full 시 disk 에 write

- step 4 : disk compaction

- read

- step 1 : read from memstore

- step 2 : step 1 에서 결과를 받지 못하였을 때, read from block cache

- step 3 : step 2 에서 결과를 받지 못하였을 때, read from disk

          (block cache write 이후에 client 에게 전달)


8. replication

- master - slave replication : master(write) <- sync - slave

- master - master replication (== peer to peer) : 각각이 master 로 write 실행

- cyclic replication : write node <- replica - other node

- request 에 따라 매번 다른 node 에 write 를 요청하며 write 가 일어난 node 를 다른 node 에서 replication 한다


9. consistency level

- write consistency : wal 파일과 memstore 에 저장 성공이면 replica 의 성공여부와 상관없이 success

- read consistency : 선택한 하나의 node 에서 read 요청

(== cassandra 의 ONE level 과 유사)


10. DR 아키텍쳐

    - cluster 간 replication

- master cluster 는 wal reader 가 wal 파일 을 읽어 waledits 형태로 전송 준비를 함

- replication 우선순위 queue 에 waledits 를 저장

- slave cluster 는 queue 에서 오래된 waledits 부터 비동기 방식으로 순차적으로 처리

    - zookeeper 역할

    - slave cluster 등록

    - replication 시작/중지

    - queue 에 wal 등록

    - region server 의 장애 핸들링


참조

https://hbase.apache.org/book.html

http://wiki.gurubee.net/display/DEVSTUDY/NoSQL+HBase

Posted by 감각적신사
,