HBase
HBase 란?
하둡 플랫폼을 위한 공개 비관계형 분산 데이터베이스
하둡의 분산 파일 시스템인 HDFS위에서 동작한다.
사용자는 Hbase나 HDFS에 직접 데이터를 저장하고 읽고 접근하는 것은 Hbase를 통한 임의접근을 이용할 수 있다.
분석 컬럼 기반 지향의 NoSQL DB으로,
* NoSQL DB는 데이터 키값 형식으로 단순하게 구조화 대신 고성능의 쓰기/읽기가 가능하도록 만든 DB
-> HBase 경우 특히 쓰기 성능에 최적화되어 있고 대용량 처리가 필요한 대규모 NoSQL 아키텍처 구성에 활용된다.
" 대규모 데이터 셋에서 실시간으로 읽고 쓰는 랜덤 액세스가 필요할 때 사용"
특징)
- 실제 인덱스가 없다 (row는 순차적으로 저장되고 각 로우별 칼럼도 순차적으로 저장)
- 선형 확장성이 있다. (노드를 추가하고 이를 기존 클러스터에 합쳐 리전 서버를 실행)
- 배치 처리 가능하다 (맵리듀스와의 통합으로 데이터의 완전한 병렬성과 분산 작업을 지원)
- 클러스터를 통해 데이터 복제를 제공한다.
- 읽기와 쓰기의 일관성을 제공한다.
Architecture
HMaster
: HRegion 서버를 관리하고 메타정보를 관리 / Fail & Over 관리 / Region들의 로드밸런싱 수행
관리 기능 : 테이블 생성 삭제 업데이트 , 클러스터에 있는 모든 리전 서버들을 모니터링 (주키퍼 이용)
HRegion
: Htable 크기에 따라 자동으로 수평 분할 발생할 때 분할된 블록을 HRegin 단위로 지정
HRegionServer
: 클라이언트와 통신을 하고 데이터 관련 연산을 관리
분산 노드별 HRegionServer가 구성되며, 하나의 HRegionServer에는 다수 HRegion이 생성되어 HRegion을 관리
HTable
: 칼럼 기반 데이터 구조를 정의한 테이블 (로우키와 칼럼패밀리로 구성)
*칼럼 패밀리 : 칼럼들의 그룹을 묶음
로우키 : 테이블의 row를 식별해 접근
데이터를 처음 저장하면 Memstore에 저장되고 이후 Hfile에 블록으로 저장된 후 메모리는 Flush된다.
Store
: 하나의 Store에는 칼럼 패밀리가 저장 및 관리 (Memostore & Hfile 로 구성)
Memstore
: Store 내 데이터를 인메모리에 저장 및 관리하는 데이터 캐시 영역
하나의 컬럼패밀리 당 하나의 Memstore가 존재하고, key/value 데이터를 정렬해 저장해서 그대로 Hfile에 저장
HFile
: Store 내의 데이터를 스토리지에 저장 및 관리하는 영구 저장 영역으로 Key & Values 형태로 저장
장점)
1) 대용량의 데이터를 안정적으로 다루는 데 효과적이다
- 중앙의 전체 분산 시스템을 통제하는 마스터를 두고,
전체 데이터의 일관성을 관리해 복제 데이터 사이의 일관성을 보장한다.
2) 대량의 데이터 분석 처리 지원에 적합하다.
- HDFS , MapReduce 등과 함께 사용하기에 최적화되어 있다.
3) Region 서버를 추가해서 확장 및 성능을 유지할 수 있다.
단점)
1) 특정 Region 서버에 특정 Table의 region이 집중되기 쉬워서 성능저하로 이어질 수 있다.
2) 클러스터 규모나 기본 스펙차이로 인해 적절한 세팅 적용이 힘들 수 있다.