Hbase는 구글 Bigtable을 모델로 하여 초기 모델 개발(2007년)한, Hadoop 기반의 NoSQL 이다
Bigtable : 매우 큰 규모로 확장이 가능하게 설계된 분산 저장 시스템
Hbase는 물리적인 저장소로 HDFS를 사용해 데이터를 영속적으로 보관하기 때문에 Hadoop이 꼭 설치 및 작동이 되고 있어야 한다.
링크 클릭시 각 hbase 버전에 맞는 hadoop 버전을 확인 할 수 있다.
Hbase의 특징
- Hbase는 key/value 형식으로 단순한 구조를 갖고 있으며 분산 데이터 저장소이기 때문에 선형적인 확장이 가능해 빅데이터 처리가 가능하다.
- Hadoop 기반으로, HDFS에 데이터를 영속적으로 보관할 수 있으며, MapReduce를 이용해 데이터를 처리할 수 있다.
- 데이터를 다수 서버에 분산 보관하고 자주 접근되는 데이터를 메모리에 캐시한다.
- 실시간으로 데이터를 랜덤(random)하게 읽기와 쓰기가 가능하다.
- 작은 데이터를 인터랙티브하게 읽고 쓸 수가 있다.
데이터 모델
Hbase(2개의 컬럼 패밀리, 4개의 컬럼, 8개의 셀)
1010101 column=location:city, timestamp=1529469708315, value=서울
1010101 column=location:country, timestamp=1529469706772, value=한국
1010101 column=message:message, timestamp=1529469698762, value=안녕하세요
1010101 column=message:name, timestamp=1529469691283, value=dabingk
1010102 column=location:city, timestamp=1529469708315, value=서울
1010102 column=location:country, timestamp=1529469706772, value=한국
1010102 column=message:message, timestamp=1529469698762, value=반가워요
1010102 column=message:name, timestamp=1529469691283, value=dbf
RDBMS(row key를 포함해 컬럼이 5개)
rowkey | name | message | country | city |
1010101 | dabingk | 안녕하세요 | 한국 | 서울 |
1010102 | dbf | 반가워요 | 한국 | 서울 |
- Hbase의 테이블은 1개 이상의 컬럼 패밀리를 가짐
- 행(Row)
- rowkey와 하나 이상의 컬럼으로 구성됨
- rowkey를 기준으로 알파벳 순으로 정렬(유일한 인덱스)
- 컬럼(Column)
- Hbase는 Column Family와 Column Qualifier로 구성되어 있음
- 컬럼은 Hbase의 최소 단위
- 콜론(:)으로 구분됨
- 컬럼 패밀리(Column Family)
- 컬럼+값의 집합을 같은 장소에 모아 놓은 것
- 컬럼 수식어(Column Qualifier)
- 데이터에 인덱스를 제공
- 예를 들어 message 컬럼패밀리의 senderName이 수식어-> ‘message:name’
- 셀(Cell)
- 로우, 컬럼패밀리, 컬럼 수식어의 집합
- 내부적으로 값(value)과 타임스탬프(timestamp)를 가지고 있음
- 값의 버전을 표현하기 위해 timestamp 값을 호함
- 셀의 값은 바이트 배열
- 타임스탬프(Timestamp)
- 주어진 값의 버전 식별자로 값과 나란히 기록
- 기본적으로는 RegionServer의 시간으로 셀에 데이터를 넣을 때 명시 가능
- 타임스탬프의 값을 직접적으로 조작하는 것은 드문일로, 보통 권장하지 않음
- 어플리케이션 레벨에서는 타임스탬프를 인코딩 하는 것을 권장함
아키텍처
리전(Region)
- HBase 테이블의 분할된 블록(기본 크기 64KB)
- 각 리전은 특정 범위의 rowkey 데이터를 다룸
- 예) 리전1: [~1000], 리전2: [1001~]
- 리전 서버마다 n개의 리전을 제공
- 일정 크기 이상 커지면 분리
Master Server
- Region을 각 RegionServer에 할당
- Region들이 속한 각 Region서버의 메타 정보를 관리
- 업무 수행하기 위해 주키퍼와 소통
- 테이블의 생성이나 컬럼 패밀리 생성과 같은 스키마의 변화나 메타데이터 연산 담당
RegionServer
- 하나의 RegionServer에는 다수의 리전이 생성되어 리전을 관리
- 클라이언트와 통신하고 데이터 관련 연산을 관리
- 내부 리전의 읽기와 쓰기 요청 관리
- 내부에 메모리 저장소인 MemStore와 HFile을 가지고 있음
- 처음 데이터를 put하면 MemStore에 저장되고 MemStore의 설정된 임계치 값 이상이 되면 HFile로 플러시(flush) 하고 HFile도 임계치 이벤트 시점이 되면 하둡의 HDFS로 데이터를 플러시(flush)
- 이러한 플러시 과정을 Major/Minor Compaction 이라고 함
- 메모리 저장소는 캐시와 같은 동작 수행
'data engineering' 카테고리의 다른 글
Kafka broker 연결 안됨 (0) | 2021.03.28 |
---|---|
Apache Hive 개요 및 간단한 실습 (0) | 2020.01.08 |
Flume 설치 및 간단한 예제 (0) | 2018.09.26 |
Flume 개요 (0) | 2018.09.11 |
하둡 운영 (2) | 2018.09.04 |