본문 바로가기
SQL/NoSQL

[데이터베이스 DB] NoSQL이란? (2-1) : HBase의 개념/특징/아키텍처

by newstellar 2021. 9. 1.
반응형

 

2021.09.01 - [SQL/NoSQL] - NoSQL이란? (1) : 개념 및 사용 목적, RDBMS와의 차이점

 

[데이터베이스 DB] NoSQL이란? (1) : 개념 및 사용 목적, RDBMS와의 차이점

학습목표 1. 빅데이터 처리를 위한 Hadoop 플랫폼이란? 2. NoSQL DB의 개념과 그 사용목적은 무엇인가? 3. 기존 RDBMS와의 차이점은? NoSQL의 탄생 1. 데이터 홍수 시대 GPS, SNS, 이미지, 웹페이지 로그, 검색

newstellar.tistory.com

 

지난 포스팅에서는 NoSQL의 개념과 탄생 배경, 그리고 RDBMS와의 차이점을 알아보았다. 오늘은 Apache에서 운영하는 HBase에 대해 알아보도록 하자. HBase는 Hadoop 플랫폼을 위한 Non-relational 분산 DB로서, HDFS 위에서 동작한다.

 

학습목표

1. HBase DB란 무엇인지, 그 특징과 적용 범위를 알아보자.
2. HBase의 기본 구조(Master-Slave)와 구성요소(Hmaster, Region Server, Zookeeper 서버)에 대해 알아보자.
3. HBase - HDFS 연동 구조를 이해하고 각 구성 요소의 역할에 대해 이해하자.


 

HBase 데이터베이스

 

1. HBase는 무엇인가?

HBase의 개념

  • HBase는 오픈소스 Apache 프로젝트로서, HDFS 위에서 실행되는 NoSQL의 일종으로 가용성과 분할 허용 (Availability - Partition tolerance)을 보장한다. 구글의 BigTable에서 영감을 얻어 Cloudera에서 개발하였다.

 

  • 용어
    • Node : 개별 서버

    • Cluster : 작업을 수행하기 위해 여러 Node가 협업하는 그룹

    • Master Node : 조정(coordination) 작업을 수행하는 Node

    • Worker Node : Master Node가 할당한 작업을 수행하는 Node

    • Daemon : 백그라운드(bg)에서 실행하는 process

    • WAL(Write Ahead Log) : 분산 파일 시스템 위의 파일로서 아직 permanent storage에 저장되지 않은 새로운 데이터를 저장하기 위한 파일

    • BlockCache : 자주 읽는 데이터를 메모리에 저장하는 Read Cache

    • MemStore : Disk에 아직 쓰이지 않은 새로운 데이터를 저장하는 Write Cache

    • HFile : Disk 상에 정렬된 key - value로 row를 저장한다. 하나의 HFile은 여러 Block으로 이루어져 있으며 기본 Block의 size는 64KB이다. 이 size가 작을수록 random access 속도가 증가하며, size가 커질수록 Scan 성능이 향상된다.


 

HBase의 특징

  • 구조
    • HBase 테이블에 데이터가 저장되며, 해당 테이블에 저장된 데이터는 HDFS Block으로 분할되어 클러스터의 여러 Node에 저장된다.

    • 테이블은 rows / columns / column families로 구성된다.

    • 모든 행에는 빠른 검색을 위한 Row Key가 포함된다. (RDBMS의 primary key와 유사한 개념)

    • column은 테이블의 데이터를 보관하며, 특정 column family에 귀속되며, row의 해당 column에 데이터가 있는 경우에만 존재한다. 

  • 특징
    • Distributed : HBase는 여러 기계를 사용하여 테이블 데이터를 저장하고 제공하도록 설계되었다.

    • Sorted Map : 테이블 데이터를 Map으로 저장하고, 인접한 key가 디스크에 연속해서 저장되도록 한다.

    • Multi-dimensional : 단일 column family에 잠재적으로 저장될 수 있는 수많은 column로 이루어져 있다.

    • Cell size는 약 10KB 미만인 경우 최적의 성능을 보이며 빈 cell은 저장되지 않지만 필요 시 저장할 수 있다.

  • 대규모 테이블 처리와 많은 칼럼 수를 가지는 분산된 행을 가진 데이터를 처리하기에 용이하다. 읽기 연산에 최적화되어 있기 때문에 범위 기반의 Scan 연산에 적합하다.

    장점 단점
    - HBase random access 데이터에 적합
    - 확장성이 좋아 빅데이터 저장/처리에 적합
    - Columns를 동적으로 정의가능 (Schema-less)
    - TB부터 PB까지 처리 가능
    - High read/write 처리속도
    - SQL 지원이 안되어 HBase table에 접근하기 위한 다른 방법 사용 (Hive, Impala, Phoenix 등)
    - Transaction 제약 O
    - 단일 테이블에 대한 Multiple index 기능 제공 X
    - Hive 작업 시 메모리 및 지연

 

  • 전체 table scan이나 전체 row 집계 연산에 부적합하며, ad-hoc analytics 사용 시에는 HBase 대신 Kudu + Impala의 조합을 추천하는 편이다. 또한, 필요한만큼의 index column을 설정할 수 있는 RDBMS와 다르게, HBase는 단 하나의 index key를 생성하기 때문에 테이블 생성 시 row key 계획을 해야 한다.

 

  • Use Case

    Messaging Measuring Graph Data 일반 처리
    - Facebook messaging
    - SMS/MMS service
    - SNS Feed
    - 실시간 랜덤 write
    - 상위 항목 read
    - Sensor 데이터
    - Click/노출 수
    - 실시간 업데이트 지표
    - 금융 transaction
    - Click stream
    - NW 트래픽
    - Batch/실시간 read/write
    - 지리 위치 정보
    - 검색 index 생성
    - 실시간 랜덤 read

 


2. HBase Architecture

HBase 구성요소

HBase Architecture Diagram by Guru99

 

  • Region Server
    • 테이블의 row를 수평분할한 Region을 서비스하고 관리하는 서버로, HDFS 블록을 저장하는 책임이 있는 주체인 DataNode에서 실행된다. 

    • Client와 직접 커뮤니케이션하면서 read/write 요청을 처리한다.

    • Apache에서는 메모리 Flush, Master Node의 과부하 등을 방지하기 위해 Region count를 낮게 유지하는 것을 권장합니다.
      http://hbase.apache.org/book.html#too_many_regions
 

Apache HBase ™ Reference Guide

This section describes the setup of a single-node standalone HBase. A standalone instance has all HBase daemons — the Master, RegionServers, and ZooKeeper — running in a single JVM persisting to the local filesystem. It is our most basic deploy

hbase.apache.org

 

 

  • HBase Master
    • 모든 Meta Data 변경 사항에 대해 클러스터 I/F의 모든 Region Server instance를 모니터링한다.

    • DDL 명령어를 실행하며, Client가 변경하기를 원하는 Schema 또는 Meta data에 대한 작업을 책임진다.

    • Region을 Region Server에 할당하고 해당 server를 관리한다.

 

 

  • ZooKeeper
    • HBase용 구성 정보를 중앙에서 관리하기 위해 사용되는 분산형 Coordination framework

    • HBase Master에 속한 Slave인 Region Server가 ZooKeeper로 보내는 heartbeat를 감지하여 서버가 정상 동작하는지 모니터링한다. 마찬가지로 HBase Master 역시 ZooKeeper로 heartbeat를 보내면서 HBase Master가 내리는 의사결정을 지원한다.

    • .META 서버의 path를 관리하여 어떤 Client든 Region을 검색할 수 있게 한다. 여기서의 Meta Table은 시스템 내의 모든 region 리스트를 유지하는 테이블로서 key (region id) - value (region server) 구조를 띤다. 

 

 

HBase 데이터 저장 구조

종류 Write Mechanism Read Mechanism
특징
  • Client가 데이터를 write하기 전에 Region Server와 통신하여 WAL 파일에 해당 데이터를 append한다.
  • WAL에 append된 데이터는 MemStore에 복사되어 Client에게 데이터를 받았다고 알려준다.
  • MemStore의 임계점에 이르면, 데이터들을 HFile dump하거나 commit한다.
  • Client가 Read 요청을 한다.
  • Scanner가 Block Cache에서 Row Cell을 찾는다.
  • Scanner의 탐색 실패 시 MemStore로 이동하여 dump 이전의 데이터가 남아 있는지 검색한다.
  • MemStore에서도 발견하지 못했다면 Bloom Filter와 Block Cache를 이용하여 HFile로부터 데이터를 가져온다.

 

 

HBase Operation

  • Get : 데이터 검색 명령어로서, key를 사용하여 단일 row를 검색한다.

  • Scan : 데이터 검색 명령어로서, 모든 row를 검색할 수 있으며 start row key와 end row key 사이를 검색하도록 제한할 수 있다.

  • Put : 데이터 추가 명령어로서 row key로 새 row를 추가하며, 여러 row를 삽입하기 위한 다중 Put 호출이 가능하다.

  • Delete : row key로 식별된 row를 제거한다. 명령 호출 중에는 HDFS에서 데이터가 제거되지 않지만 삭제로 표시한다. (실제 삭제는 나중에 수행함)

  • Increment / allows / atomic / counters

 

2021.09.02 - [SQL/NoSQL] - [데이터베이스 DB] NoSQL이란? (2-2) : HBase 사용법(Shell, command)

 

[데이터베이스 DB] NoSQL이란? (2-2) : HBase 사용법(Shell, command)

HBase의 데이터 접근 방식 1. HBase Shell 기초 HBase Shell은 HBase에서 HDFS를 사용하여 명령을 전달하기 위한 대화형 명령어 처리 인터페이스(CLI)로서, Hmaster, region server와 연동하여 API에서 사용할 수..

newstellar.tistory.com

 

 


참고문헌
- mySUNI : NoSQL 이해와 활용 (정진석 강사님)
- https://jdm.kr/blog/189
- https://loustler.io/data_eng/hbase-architecture/
- https://joswlv.github.io/2018/07/07/HBase_basics/

 

반응형

댓글