본문 바로가기

data engineering

Hbase 개요

이미지 클릭시, hbase 공식 사이트로 이동합니다.

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 반가워요 한국 서울

 

  1. Hbase의 테이블은 1개 이상의 컬럼 패밀리를 가짐
  2. 행(Row)
    1. rowkey와 하나 이상의 컬럼으로 구성됨
    2. rowkey를 기준으로 알파벳 순으로 정렬(유일한 인덱스)
  3. 컬럼(Column)
    1. Hbase는 Column Family와 Column Qualifier로 구성되어 있음
    2. 컬럼은 Hbase의 최소 단위
    3. 콜론(:)으로 구분됨
  4. 컬럼 패밀리(Column Family)
    1. 컬럼+값의 집합을 같은 장소에 모아 놓은 것
  5. 컬럼 수식어(Column Qualifier)
    1. 데이터에 인덱스를 제공
    2. 예를 들어 message 컬럼패밀리의 senderName이 수식어-> ‘message:name’
  6. 셀(Cell)
    1. 로우, 컬럼패밀리, 컬럼 수식어의 집합
    2. 내부적으로 값(value)과 타임스탬프(timestamp)를 가지고 있음
    3. 값의 버전을 표현하기 위해 timestamp 값을 호함
    4. 셀의 값은 바이트 배열
  7. 타임스탬프(Timestamp)
    1. 주어진 값의 버전 식별자로 값과 나란히 기록
    2. 기본적으로는 RegionServer의 시간으로 셀에 데이터를 넣을 때 명시 가능
    3. 타임스탬프의 값을 직접적으로 조작하는 것은 드문일로, 보통 권장하지 않음
    4. 어플리케이션 레벨에서는 타임스탬프를 인코딩 하는 것을 권장함

 

아키텍처

리전(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