Data Platform/HBase

1) Apache HBase® Architecture : Overview

태하팍 2025. 3. 6. 17:28
반응형

Apache HBase란?

Apache HBase®는 Hadoop 데이터베이스로, 분산형이며 확장 가능한 빅데이터 저장소입니다.
Apache HBase는 빅데이터에 대한 랜덤(random)하고 실시간(real-time) 읽기/쓰기 접근이 필요할 때 사용됩니다.
이 프로젝트의 목표는 수십억 개의 행(row)과 수백만 개의 열(column)로 이루어진 매우 큰 테이블을
일반적인 하드웨어(cluster of commodity hardware) 위에서 호스팅하는 것입니다.

Apache HBase는 오픈소스 분산 버전 관리 비관계형 데이터베이스로,

Google의 Bigtable을 모델로 개발되었습니다.
(Bigtable: A Distributed Storage System for Structured Data, Chang et al.)
Google의 Bigtable이 Google 파일 시스템(GFS)을 활용하여 분산 데이터 저장 기능을 제공하는 것처럼,
Apache HBase는 Hadoop과 HDFS 위에서 Bigtable과 유사한 기능을 제공합니다. 

다운로드

Downloads

주요 기능

선형적(linear)이고 모듈화된(modular) 확장성
엄격한 일관성(strict consistency)을 보장하는 읽기 및 쓰기 연산
자동 및 설정 가능한 테이블 샤딩(sharding)
RegionServer 간 자동 장애 조치(failover) 지원
Apache HBase 테이블을 기반으로 하는 Hadoop MapReduce 작업을 위한 편리한 기본 클래스 제공
클라이언트 접근을 위한 사용하기 쉬운 Java API
실시간 쿼리를 위한 블록 캐시(block cache) 및 블룸 필터(Bloom Filters) 지원
서버 측 필터(Server-side Filters)를 통한 쿼리 조건(Query predicate) 푸시다운
XML, Protobuf, 바이너리 데이터 인코딩을 지원하는 Thrift 게이트웨이 및 RESTful 웹 서비스 제공
확장 가능한 JRuby 기반(JIRB) 셸 지원
Hadoop 메트릭 서브시스템을 통해 파일 또는 Ganglia로 메트릭을 내보내거나, JMX를 통한 메트릭 내보내기 지원 

아키텍처

링크

 Overview

NoSQL?

HBase는 NoSQL 데이터베이스의 한 유형이다.
NoSQL이란 RDBMS(관계형 데이터베이스)처럼
SQL을 기본 접근 언어로 사용하지 않는 데이터베이스를 통칭하는 용어
다.

하지만 NoSQL에도 여러 유형이 있다.

예를 들어:
BerkeleyDB → 로컬(Local) NoSQL 데이터베이스
HBase → 분산(Distributed) 데이터베이스

기술적으로 보면, HBase는 일반적인 데이터베이스라기보다는 데이터 스토어(Data Store)에 가깝다.
이는 전통적인 RDBMS에서 제공하는 타입이 지정된 컬럼, 보조 인덱스(Secondary Index),
트리거(Trigger), 고급 쿼리 언어(SQL) 등의 기능이 없기 때문
이다.

하지만 HBase는 선형적(linear) 및 모듈형(modular) 확장성을 지원하는 기능을 제공한다.
HBase 클러스터는 일반 서버(commodity hardware)에 RegionServer를 추가하는 방식으로 확장된다.
예를 들어, 클러스터가 10개의 RegionServer에서 20개로 확장되면, 저장 용량과 처리 용량이 두 배가 된다.

반면, RDBMS도 확장할 수 있지만, 단일 데이터베이스 서버의 한계를 넘어서기는 어렵다.
또한, 최상의 성능을 위해서는 특수한 하드웨어 및 스토리지 장치가 필요하다.

HBase의 주요 특징

강력한 읽기/쓰기 일관성
• HBase는 Eventually Consistent(궁극적 일관성)이 아니라 Strong Consistency(강력한 일관성)을 보장한다.

• 따라서, 고속 카운터 집계(high-speed counter aggregation) 같은 작업에 적합하다.

자동 샤딩(Auto Sharding)
• HBase 테이블은 여러 개의 Region으로 나뉘어 클러스터에 분산된다.
• 데이터가 증가하면 Region이 자동으로 분할되고, 적절하게 재배치된다.

자동 RegionServer 장애 조치(Failover)
• 특정 RegionServer가 장애가 발생하면, HBase가 자동으로 다른 서버로 트래픽을 재분배한다.

Hadoop/HDFS 통합
• HBase는 기본적으로 HDFS를 분산 파일 시스템으로 사용한다.

MapReduce 지원
• HBase는 MapReduce를 활용한 대규모 병렬 처리를 지원하며, 데이터 소스(Source) 및 싱크(Sink)로 사용 가능하다.

Java 클라이언트 API
• HBase는 Java API를 제공하여 프로그래밍 방식으로 데이터 접근이 가능하다.

Thrift/REST API
• Java를 사용하지 않는 애플리케이션에서도 Thrift 및 REST API를 통해 HBase와 연동 가능하다.

블록 캐시(Block Cache) 및 블룸 필터(Bloom Filters)
대량의 쿼리를 최적화하기 위해 Block Cache 및 Bloom Filter를 지원한다.

운영 관리 기능 제공
• HBase는 웹 UI와 JMX 메트릭을 제공하여 운영 상태를 모니터링할 수 있다.

HBase는 Bigtable을 기반으로 한 분산형 NoSQL 데이터베이스
RDBMS보다 확장성이 뛰어나며, Hadoop/HDFS와 강력한 통합을 제공
자동 샤딩, 자동 장애 조치, 강력한 읽기/쓰기 일관성을 보장
MapReduce, Java API, Thrift/REST API를 지원하며, 대량 데이터 처리에 최적화
즉, HBase는 대규모 데이터를 저장하고 빠르게 읽고 쓰기 위한 분산 데이터베이스 시스템이다! 

 

✅ HBase는 언제 사용해야 할까?

HBase는 모든 문제에 적합한 데이터베이스는 아니다.

충분한 데이터가 있는가?
수억 개 또는 수십억 개의 행(row)이 있다면 HBase가 좋은 선택이다.

수천~수백만 개 정도의 행만 있다면, 전통적인 RDBMS가 더 적합할 수 있다.
• 이유: 데이터가 적으면 하나 또는 두 개의 노드에 집중될 가능성이 높고, 나머지 클러스터는 비활성 상태로 남아 비효율적이기 때문.

RDBMS의 기능 없이도 괜찮은가?
• HBase는 RDBMS에서 제공하는 기능이 부족하다.
타입이 지정된 컬럼(Typed columns) 지원 X
보조 인덱스(Secondary indexes) 지원 X
트랜잭션(Transactions) 지원 X
고급 쿼리 언어(SQL 등) 지원 X
RDBMS 기반 애플리케이션을 단순히 JDBC 드라이버만 바꿔서 HBase로 옮길 수 없다.
• 즉, RDBMS에서 HBase로의 전환은 단순한 마이그레이션이 아니라, 완전한 재설계(Complete redesign)가 필요하다.

충분한 하드웨어를 확보했는가?
HDFS조차 최소 5개 이상의 DataNode가 필요하다.
• 기본적인 HDFS 블록 복제(기본값: 3개) 때문.

• 또한, NameNode도 별도로 필요하다.
HBase는 노트북에서도 단독 실행할 수 있지만, 이는 개발 환경에서만 사용해야 한다.
• 실제 운영 환경에서는 충분한 하드웨어 리소스가 필요하다.

HBase는 데이터가 수억~수십억 개 이상인 경우에 적합하다.
RDBMS의 기능이 필요하지 않거나, 새로운 시스템을 설계할 경우에만 적합하다.
충분한 하드웨어(5개 이상의 DataNode + NameNode)가 필요하다.
노트북에서 실행할 수 있지만, 운영 환경에서는 별도의 클러스터가 필요하다.
즉, HBase는 “대규모 데이터” + “분산 환경” + “RDBMS 기능 불필요” 조건을 충족할 때 최적의 선택! 

✅ HBase와 Hadoop/HDFS의 차이점

HDFS대용량 파일 저장에 적합한 분산 파일 시스템이다.
하지만 범용 파일 시스템이 아니며, 개별 레코드를 빠르게 조회할 수 있는 기능을 제공하지 않는다.
반면, HBase는 HDFS 위에 구축된 시스템으로, 대규모 테이블에서 빠른 레코드 조회 및 업데이트를 지원한다.
이 때문에 개념적으로 혼동이 생길 수 있다.
HBase는 내부적으로 데이터를 인덱싱된 “StoreFiles” 형태로 HDFS에 저장하며,
이를 통해 빠른 데이터 조회 속도를 제공한다.

 즉, HDFS는 단순한 파일 저장소, HBase는 HDFS 위에서 동작하며 빠른 데이터 검색을 위한 데이터베이스 역할을 한다.

See the Data Model and the rest of this chapter for more information on how HBase achieves its goals.

참고

반응형