HBase 구성 ( Full-distributed )

Q·2022년 11월 25일
0

전제 조건 (Prerequisites)

  1. Java
    • JDK8 권장
    • HBase 버전 1.2+인 경우 JDK7도 지원
    • JDK9, 10, 11은 확실하지 않음
  2. 운영체제 유틸리티
    • ssh
    • DNS
    • NTP
  3. Zookeeper
    • Zookeeper 3.4.x 이상
  4. Hadoop (앞의 Hadoop 완전분산모드(Fully-Distributed) Cluster 구성이 선행 되어야함)
  5. 본인이 설치한 Hadoop버전과 호환되는 HBase버전을 선택합니다.


분산 클러스터 구조

NodeMasterZookeeperRegionServer
masterOXX
slave01XOO
slave02XOO
slave03XOO

Download

  1. Download Url
    • HBase 홈페이지 : hbase.apache.org/downloads.html
    • HBase 미러 사이트 :  apache.mirror.cdnetworks.com/hbase/
  2. Version
    • 위 2사이트에서 안정적인 버전(stable version) 또는 목록 중에서 다른 Application들과의 호환성을 고려하여 선택합니다.
  3. Download
    • Download 서버 : master
    • Download 위치 : ~

위 표에서 Hadoop과의 호환성을 확인한 뒤 알맞은 버전을 다운로드 합니다.

cd ~ 
wget http://apache.mirror.cdnetworks.com/hbase/2.2.5/hbase-2.2.5-bin.tar.gz
tar xzvf hbase-2.2.5-bin.tar.gz 
rm -rf hbase-2.2.5-bin.tar.gz 
mv hbase-2.2.5 hbase

경로 설정 (Path)

  • 진행 노드 : master
  • 파일 : ~/.bashrc
    HBASE_HOME 환경변수를 설정한 뒤 PATH에 $HBASE_HOME/bin을 추가합니다.
export HBASE_HOME=~/hbase
export HBASE_CONF_DIR=~/hbase/conf
export PATH=$PATH:$HBASE_HOME/bin
export HBASE_LOG_DIR=$HADOOP_LOG_DIR
export HBASE_SSH_OPTS="-p해당하는 포트번호"

구성파일

  • 진행 노드 : master
  • 위치 : ~/hbase/conf
  1. hbase-site.xml
    기존 파일에 있던 <configuration> ... </configuration>을 삭제한 뒤 아래 코드를 복사하여 붙여넣기 합니다. HQuorumPeer는 HBase에서 실행하는 Zookeeper이고, QuorumPeerMain은 사용자가 설치한 Zookeeper입니다. 둘 중 하나 선택하시면 되나 Zookeeper를 직접 구성하여 QuorumpeerMain으로 실행하는 것을 권장드립니다.
  • HQuorumPeer
<configuration>
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://master:9000/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name> # Fully distributed 모드로 구축하기 위해서 true를 설정
    <value>true</value>
  </property>
  <property>
    <name>hbase.master.port</name>
    <value>60000</value>
  </property>
  <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>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/data1/hadoop/zookeeper</value>
  </property>
  <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>
  <property>
    <name>hbase.hregion.max.filesize</name>
    <value>1073741824</value>
  </property>
  <property>
    <name>hbase.regionserver.handler.count</name>
    <value>200</value>
  </property>
  <property>
    <name>hbase.hregion.memstore.flush.size</name>
    <value>268435456</value>
  </property>
<property>
    <name>hbase.hregion.memstore.block.multiplier</name>
    <value>8</value>
  </property>
  <property>
    <name>hbase.hstore.blockingStoreFiles</name>
    <value>20</value>
  </property>
  <property>
    <name>hbase.regionserver.global.memstore.upperLimit</name>
    <value>0.45</value>
  </property>
  <property>
    <name>hbase.regionserver.global.memstore.lowerLimit</name>
    <value>0.4</value>
  </property>
  <property>
    <name>hfile.block.cache.size</name>
    <value>0.3</value>
  </property>
  <property>
    <name>hbase.thrift.minWorkerThreads</name>
    <value>256</value>
  </property>
</configuration>
  • cf) QuorumPeerMain
<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://master:9000/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
    <description>Property from ZooKeepers config zoo.cfg. The port at which the clients will connect.</description>
  </property>
</configuration>
  1. hbase-env.sh
    QuorumPeerMain으로 Zookeeper를 실행하는 경우에만 HBASE_MANAGES_ZK를 true로 설정합니다.
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

export HBASE_MANAGES_ZK=true                                                        #126번 라인
  1. regionservers
slave01
slave02
slave03
  1. backup-masters
    backup-masters는 없는 파일로 새로 생성하여 backup server를 작성합니다.
vi backup-masters
slave01

Hbase Folder 생성

  • 진행 노드 : slave01
  • 위치 : /data1/hadoop
mkdir /data1/hadoop/zookeeper
chown 777 /data1/hadoop/zookeeper

scp -r ~/hbase (계정)@slave02:/data1/hadoop
scp -r ~/hbase (계정)@slave03:/data1/hadoop

배포

  • 진행 노드 : master
    scp -r ~/hbase (계정)@slave01:~/
    scp -r ~/hbase (계정)@slave02:~/
    scp -r ~/hbase (계정)@slave03:~/

NTP

  • 진행 노드 : master, slave01, slave02, slave03
  • 동기화 시간
    • 클러스터에서 NTP를 실행하거나 모든 서버의 시간을 동기화해주는 애플리케이션을 사용한다.
  • NTP 설치

HBase 시작

  • 진행 노드 : master
  1. HBase 시작
start-hbase.sh

  1. 확인
  • master : HMaster
  • slave01 : HRegionServer
  • slave02 : HRegionServer
  • slave03 : HRegionServer
jps

  1. Hbase 연결
hbase shell

부록

REST Server

  • 진행 노드 : master
  • 위치 : ~/hbase/bin
cd ~/hbase/bin
./hbase-daemon.sh start rest

Thrift Server

  • 진행 노드 : slave01, slave02, slave03
  • 위치 : ~/hbase/bin
cd ~/hbase/bin
./hbase-daemon.sh start thrift
profile
Data Engineer

0개의 댓글