개요
주요 설정 정보
hbase-site.xml
<configuration>
HBase의 실제 데이터가 저장되는 모든 리전 서버들이 공유하는 루트 디렉토리명. 기본 설정값은 로컬 저장소의 '/tmp'이므로
장치가 재시작할 때의 데이터 손실을 방지하려면 이 설정값을 바꿔야 한다.
<property>
<name>hbase.rootdir</name>녀애
<value>hdfs://master:9000/hbase</value>
</property>
클러스터 동작 방식.
이 속성값이 'false'이면 단일 방식, 'true'이면 분산 방식으로 동작
단일 방식으로 동작할 때는 HBase 구동시 모든 HBase와 주키퍼 데몬이 하나의 JVM에서 실행된다.
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
HBase 마스터 서버가 사용할 포트 번호
<property>
<name>hbase.master.port</name>
<value>60000</value>
</property>
HBase 마스터 서버에 웹 UI에 사용할 포트 번호, UI 인스턴스를 사용하지 않으려면 -1을 지정한다.
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
주키퍼 쿼럼을 구성하는 서버들의 목록
완전 분산 방식에서는 이 설정에 모든 주키퍼 쿼럼 서버 목록이 있어야 한다.
<property>
<name>hbase.zookeeper.quorum</name> # zookeeper quorum 설정
<value>slave01,slave02,slave03</value>
</property>
주키퍼의 zoo.cfg 설정 파일에서 나온 속성으로서 스냅샷이 저장될 디렉터리를 지정한다.
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/data1/hadoop/zookeeper</value>
</property>
IP 주소로 식별되는 클라이언트 하나가 주키퍼 앙상블 멤버 하나에 맺을 수 있는 (소켓 단위의) 동시 접속 상한을 설정한다.
HBase를 단일 또는 의사 분산 방식으로 실행할 때 주키퍼 접속 문제를 방지하려면 이 값을 늘리는 편이 좋다.
<property>
<name>hbase.zookeeper.property.maxClientCnxns</name>
<value>1000</value>
</property>
주키퍼 세션 타임아웃
<property>
<name>zookeeper.session.timeout</name>
<value>240000</value>
</property>
<property>
<name>hbase.master.wait.on.regionservers.mintostart</name>
<value>1</value>
</property>
HStoreFile의 최대 크기. 컬럼 패밀리의 HStoreFile 중 하나라도 크기가 이 값을 초과하면 HRegion이 둘로 분할된다.
<property>
<name>hbase.hregion.max.filesize</name>
<value>1073741824</value>
</property>
리전 서버에서 생성하는 RPC 리스너 인스턴스 개수
마스터 서버에서도 이 속성을 참조하여 RPC 리스너 인스턴스를 생성한다.
<property>
<name>hbase.regionserver.handler.count</name>
<value>200</value>
</property>
멤스토어 크기가 이 설정값을 초과하면 디스크에 플러시한다.
멤스토어 크기는 별도 스레드에서 hbase.server.thread.wakefrequency에 설정된 주기마다 검사한다.
<property>
<name>hbase.hregion.memstore.flush.size</name>
<value>268435456</value>
</property>
멤스토어 크기가 'hbase.hregion.memstore.block.multiplier X hbase.hregion.memstore.flush.size'를 초과하면
데이터 변경 요청을 차단한다.
데이터 변경 요청 트래픽이 급격하게 몰릴 때 멤스토어가 엉망이 되는 상황을 방지할 수 있다.
이러한 상한을 설정하지 읺으면, 거대해진 멤스토어를 플러시하여 생성된 파일은 컴팩션이나 분할에 오랜 시간이 걸리고
심한경우 메모리 에러 (OOME, Out of Memory Error)를 발생 시키게 된다.
<property>
<name>hbase.hregion.memstore.block.multiplier</name>
<value>8</value>
</property>
저장된 StoreFile 개수가 이 설정값보다 많은 Store가 있을 때 (멤스토어 플러쉬가 수행될 때마다 하나의 StoreFile이 생성)
컴팩션이 수행되거나 hbase.hstore.blockingWaitTime에 설정된 기간이 경과하지 않으면 이 HRegion에 대한 데이터 갱신이
차단된다.
<property>
<name>hbase.hstore.blockingStoreFiles</name>
<value>20</value>
</property>
리전 서버의 멤스토어 크기 총합이 이 설정값을 초과하면 데이터 변경 요청이 차단되고 강제로 플러시가 발생한다.
기본값은 전체 힙 크기의 40%
<property>
<name>hbase.regionserver.global.memstore.upperLimit</name>
<value>0.45</value>
</property>
메모리 공간 부족으로 인해 (멤스토어 크기 총합이 hbase.regionserver.global.memstore.upperLimit에 설정된 값을 초과하여)
멤스토어가 강제로 플러시될 때, 이곳에 지정한 비율에 도달할 때까지 계속해서 플러시한다.
기본값은 전체 힙 크기의 35%이다.
<property>
<name>hbase.regionserver.global.memstore.lowerLimit</name>
<value>0.4</value>
</property>
(-Xmx로 설정한) JVM에 할당된 최대 힙 크기에서 HFile/StoreFile에서 사용할 블록 캐시에 할당할 최대 힙 크기의 비율,
0을 사용하면 블록 캐시를 비활성화 한다.
<property>
<name>hfile.block.cache.size</name>
<value>0.3</value>
</property>
HBase thrift server의 최소 동작 스레스 수
<property>
<name>hbase.thrift.minWorkerThreads</name>
<value>256</value>
</property>
</configuration>
hbase-env.sh
- hbase 실행 정보 설정을 위한 shell script
export JAVA_HOME=${JAVA_HOME}
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS $HBASE_JMX_BASE -Xmx24576m"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE -Xmx24576m"
export HBASE_ZOOKEEPER_OPTS="$HBASE_ZOOKEEPER_OPTS $HBASE_JMX_BASE -Xmx4096m"
export HBASE_NICENESS=5
regionservers
slave01
slave02
slave03
slave04
slave05
slave06
slave07
slave08
slave09
slave10
backup-masters
- 3개의 backup-master
- 장비의 고장에 대처하는 데 필요하다고 생각되는 만큼 백업 마스터를 준비
- 백업 마스터가 적을때의 위험성은 주 마스터 노드의 중단을 보고하는 모니터링 도구를 사용하여 해소
- 일반적으로 백업 마스터 서버가 두 개나 세 개면 충분
slave01
slave02
slave03