HBase는 빅 테이블과 동일한 기능과 확장성을 갖는 분산 데이터 관리를 목적으로 개발된 Apache 파운데이션의 Open Source Project이다. Hadoop Project의 Sub Project였지만 최근 최상위 Project로 승인됐다.
HBase는 마스터 서버(HMaster), 리젼 서버(HRegionServer), 클라이언트 라이브러리로 구성돼 있다. 마스터 서버는 테이블 생성, 삭제 등의 작업을 위해 사용되며, 이중화 구성이 가능하다. 리젼 서버는 실제 데이터 서비스를 제공하는 서버다. HBase에서는 빅테이블과 클라우테이터에서 테블릿에 해당하는 테이블이 분리된 단위를 리젼(Region)이라고 한다. 하나의 리젼 서버는 n개의 리젼을 관리한다.
리젼은 빅테이블과 동일하게 메모리 기반과 디스크 기반의 저장소를 가진다. 메모리에 있는 데이터는 서버 중지 시 유실을 방지하기 위해 HLog 객체가 관리하는데, 실제 파일은 Hadoop File System에 저장된다. Hadoop File system에 저장된 파이은 불변(immutable) 파일로, 한번 생성된 후, 저장된 파일은 추가하거나 변경할 수 없다. File System의 이런 제약으로 인해 HBase의 커밋 로그는 변경 연산을 수행한 즉시 File System에 저장되는 것이 아니라 주기적으로 File System에 저장한다. 따라서 커밋 로그가 저장되기 이전에 Node에 장애가 발생할 경우 데이터 유실이 발생할 수 있다.
HBase 환경설정
$ cd HBASE_HOME vi conf/hbase-site.xml export JAVA_HOME=/usr/java/default export HBASE_MANAGES_ZK=false |
설정한 항목 중 HBASE_MANAGES_ZK 항목은 Zookeeper 서버를 별도로 실행시킨 서버를 사용할 것인지, HBase 자체적으로 Zookeeper를 실행시킬 것인지 여부를 설정하는 항목이다. true로 설정하면 HBase에서 Zookeeper를 실행한다. 이 경우 Zookeeper 환경설정으로 zoo.cfg의 환경설정 정보를 $HBASE_HOME/conf/hbase-site.xml에 입력한다. true로 설정할 경우에는 Zookeeper 서버를 한 대만 실행하기 때문에 Zookeeper에 장애가 발생할 때 대응을 할 수 없다.
HBase는 다음과 같은 세가지 실행 모드를 제공한다
- 단독 모드(Standalone mode) : 데이터 파일 저장소로 Hadoop의 Local File System을 이용한다. 즉 Hadoop File System을 실행할 필요가 없으며 지금까지 설정된 내용에서 HBASE_MANAGER_ZK=true로 설정해 실행하는 모드다. Zookeeper, 마스터서버, 리젼 서버가 하나의 서버에서 실행된다.
- 가상 분산 모드(Pseudo Distributed mode) : 단독 모드와 유사하지만 데이터 파일을 Hadoop File System에 저장한다.
- 완번 분산 모드(Fully Distributed mode) : 모든 서버가 분산돼 실행되고, Zookeeper도 별도의 Cluster 구성을 사용한다.
댓글