2020년 9월 19일 토요일

Apache HBase [1] - 개요 및 아키텍처


1.Hbase의 등장

하둡은 MapReduce를 이용하여 대용량 데이터를 저장하고 처리하는데는 탁월하다. 그러나 데이터를 순차적방식으로 액세스하여, 간단한 작업을 할 때에도 해당 데이터를 찾을 때 까지 데이터 집합 전체를 검색해야 한다.

이러한 불편함을 개선하기 위해 Random Access Database를 개발하였는데 HBase, Cassandra, couchDB, Dynamo, MongoDB와 같은 데이터베이스이다.


2.HBase란

[ 컬럼지향데이터베이스 ]

HBase는 HDFS(Hadoop Distributed File System)위에 구축된 분산형 컬럼지향 데이터베이스이다. ROW기반의 RDBMS보다 데이터를 통계화 하는데 이점이 있다. 

[ 이미지참조 http://www.dbguide.net/ ]

위의 예와 같이 column1의 평균을 구하려면 RDBMS에서는 Group By로 묶은 후 평균을 구하는 "SELECT AVG(column1) FROM DB1 GROUP BY column1" 와 같이 그룹핑 단계를 거쳐야 하지만 컬럼지향데이터베이스는 그럴 필요가 없어 매우 빠른 속도로 결과값을 얻을 수 있다.

RDBMS는 Online Transaction Process(OLTP)에 적합하여 비즈니스 트랜잭션 처리에 많이 사용한다. 쇼핑몰 구매시스템이 그 예다. 반면 컬럼기반 HBase는 Online Analytical Processing(OLAP)에 적합하여 데이터 분석, 통계 모델링 구축에 많이 사용된다.

[ 랜덤 액세스 ]

기존 HDFS와 가장 큰 차이점은 순차적 데이터액세스만 제공했던 HDFS와는 다르게, HBase는 내부적 Hash테이블을 사용한 실시간 읽기/쓰기 랜덤 액세스를 제공한다. 따라서 보다 빠른 데이터처리를 할 수 있다.


3. HBase 저장 매커니즘

HBase의 테이블 스키마는 키-값 쌍으로 된 컬럼패밀리(column family)로 정의된다. 컬럼패밀리는 수 많은 컬럼을 가질 수 있으며, 각 컬럼은 타임스탬프 값을 가진다.



4. HBase의 특징

  • HBase는 행기준으로 확장이 가능하다. ( 스키마 정보만 있으면 클러스터A에는 1-100행, 클러스터B에는 100-300행을 따로 저장하여 확장기능을 가능케한다. )
  • HBase는 Failure support 기능이 있다.
  • 일관된 읽기과 쓰기를 제공한다.
  • Hadoop및 관련 애플리케이션(Phoenix, Hive 등)과 사용이 용이하다.
  • 클라이언트를 위한 쉬운 JAVA API를 제공한다.
  • 클러스터 간에 데이터 복제 기능을 제공하여 데이터의 정밀성과 정합성을 보장한다.


5. HBase 아키텍처
HBase는 컬럼패밀리에 의해 수직으로 분리된 스토어(MemStore+H file)로 나뉘며, region server에 의해 각 스토어가 HDFS에 저장된다. 지역서버(region server)는 추가되거나 제거할 수 있다.


Hbase 구성요소
  • 클라이언트 라이브러리(Client Library)
  • 마스터서버(Master Server)
  • 지역서버(Region Server)
* HDFS와 Zookeeper와 함께 연동

[ 마스터서버 ]
- Zookeeper를 통해 각 지역서버를 할당하고 작업을 지시
- 서버간 로드밸런싱
- 스키마 및 테이블, 컬럼패밀리 생성/삭제와 같은 메타데이터 작업처리

[ 지역서버 ]
- 클라이언트와 통신하여 데이터관련 작업처리(읽기/쓰기)
- 데이터 및 서버의 Data Size 임계값을 결정
- HDFS 위에서 동작한다.


WAL
(Write Ahead Log) : 새로운 데이터를 저장하기 위해 쓰이는데 중간에 데이터를 잃을 경우 데이터 복구 역할도 한다.
Block Cache : 자주 읽는 데이터를 메모리에 저장
Memstore : Disk에 새로운 데이터를 Write한다. key-value기반의 Cache메모리로 속도가 빠르며 region의 하나의 컬럼패밀리마다 memstore를 갖는다.
Hfile : key-value로 저장된 데이터파일


[ 주키퍼 ]
- 마스터서버가 사용가능한 서버와 통신(서버장애확인,사용가능서버검색)하기 위해 사용 
 

댓글 없음:

댓글 쓰기