Hbase 운영을 위한 설정 정보 상세분석( Crawl )

Q·2022년 12월 1일
0

개요

주요 설정 정보

hbase-site.xml

  • Hbase 환경 설정
<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}

# HBASE_OPTS : 마스터를 포한한 전체 서버 프로세스에 적용
# -XX:+UseConcMarkSweepGC : 가비지 컬렉터 종류중 Concurrent Mark Sweep (CMS) 사용
# Concurrent Mark Sweep (CMS) : Stop the World 시간이 처리량 보다 중요하거나 1초 미만을 유지해야 한다면 사용
# Stop the World : 가비지 컬렉션이 일어날때 처리중인 프로그램은 잠시 멈추게 되는 상태
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"   

# HBASE_MASTER_OPTS : 리전 서버를 제외한 마스터 프로세스에만 적용
# HBASE_JMX_BASE : JMX 활성화
# Master의 자바 heap 메모리의 최대 크기는 24GB 할당
# -Xmx24576m : 최대 힙 공간 24GB 할당
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS $HBASE_JMX_BASE -Xmx24576m"

# HBASE_REGIONSERVER_OPTS : 마스터를 제외한 리전 서버 프로세스에 적용
# HBASE_JMX_BASE : JMX 활성화
# Regoinserver의 자바 heap 메모리의 최대 크기는 24GB 할당
# -Xmx24576m : 최대 힙 공간 24GB 할당
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE -Xmx24576m"

# HBASE_ZOOKEEPER의 옵션
# HBASE_JMX_BASE : JMX 활성화
# Zookeeper의 최대 힙 공간 4GB 할당
# -Xmx4096m : 최대 힙 공간 4GB
export HBASE_ZOOKEEPER_OPTS="$HBASE_ZOOKEEPER_OPTS $HBASE_JMX_BASE -Xmx4096m"

# 데몬 프로세스들의 스케쥴링 우선순위 
export HBASE_NICENESS=5

regionservers

  • 10개의 regionservers로 구성
slave01
slave02
slave03
slave04
slave05
slave06
slave07
slave08
slave09
slave10

backup-masters

  • 3개의 backup-master
  • 장비의 고장에 대처하는 데 필요하다고 생각되는 만큼 백업 마스터를 준비
  • 백업 마스터가 적을때의 위험성은 주 마스터 노드의 중단을 보고하는 모니터링 도구를 사용하여 해소
  • 일반적으로 백업 마스터 서버가 두 개나 세 개면 충분
slave01
slave02
slave03
profile
Data Engineer

0개의 댓글