ubuntu 에서 작업하였다.

hbase 는 java 로 돌아가기 때문에, 사전에 java 가 설치되어 있고, java path 가 존재한다는 전제하에

아래 hbase 설치 방법을 진행한다.

물론 Hadoop HDFS 역시 사전에 설치 되어있다는 전제이다.

이 포스트를 쓰는 시점의 나는 Master 로 사용할 서버 하나, Slave 로 사용할 서버 하나를 두고 HDFS 클러스터를 만들었다.
이 두 노드로 이루어진 클러스터 위에서 HBase 를 설치하는 작업을 진행했다.

zookeeper 는 이곳을 참고하여 설치한다.

(위의 링크와 지금 보고 있는 포스트에 나온 zookeeper dataDir 가 다르다.

여기 나온 path 를 그대로 따라하지 말고, 자신의 path 를 확실히 알고 넣자.)

공식 문서를 적극 참고하라.

 

아래 모든 단계들은 모든 Cluster node 들에 적용한다.

 

 

 

 

1.

apache hbase 사이트에 들어가서 hbase stable version 을 받는다.

http://www.apache.org/dyn/closer.lua/hbase/

현재 날짜(2019.10.17) 기준으로 1.4.10 버전이 stable 하다고 가르키고 있다.

 

 

 

 

 

 

 

2.

tar xvf 명령으로 압축을 푼다.

 

 

 

 

 

3.

/hbase-1.4.10/conf 로 이동한다.

ch hbase-1.4.10/conf

 

 

 

 

 

 

 

4.

conf 의 regionservers 파일에 기존의 localhost 를 지워버리고 Cluster nodes 의 host 이름들을 적어준다.

단, master 로 사용할 노드의 이름은 적지 않는다.

호스트 이름을 어떻게 정하는지는 zookeeper 세팅하는 방법에 나와 있다.(6번 /etc/hosts 에 등록하는 방법 참고)

 

vi regionservers

cat 으로 확인했을 때 위와 같이 나오면 된다.

나의 경우 zookeeper01, zookeeper02 가 있는데, 01을 master 로 사용할 예정이므로 zookeeper02 만 적었다.

 

여러개의 노드 host 이름을 적을 땐 한 줄에 하나씩 white space 없이 적는다. 예를들어 3개를 넣어야 한다면

zookeeper02

zookeeper03

zookeeper04

 

 

 

 

5.

JAVA HOME path 와 regionservers 를 아래처럼 export 로 넣어준다.

conf 의 hbase-env.sh 에서 HBASE_MANAGES_ZK 는 false 로 둔다.

hbase 가 zookeeper 를 직접 관리하지 않는다는 의미이다.

주의) 만약 JAVA 를 찾지 못한다는 에러가 뜨면 JAVA_HOME path 는 위와 같이 직접 넣어주자.

(내가 했을 당시, hbase 가 start 할 때 java path 를 찾지 못하는 에러를 접했는데, $JAVA_HOME/jre 이런 식으로 넣었던 것이 원인이었다.)

 

 

 

 

 

 

 

 

 

6.

hbase-site.xml 을 열어서 configuration 중간에 아래와 같은 property 를 적어 넣어 설정해준다.

vi hbase-site.xml

 

<configuration>

<property>

<name>hbase.rootdir</name>

<value>hdfs://zookeeper01:9000/hbase</value>

</property>

<property>

<name>hbase.master</name>

<value>zookeeper01:6000</value>

</property>

<property>

<name>hbase.cluster.distributed</name>

<value>true</value>

</property>

<property>

<name>hbase.zookeeper.quorum</name>

<value>zookeeper01,zookeeper02</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

<name>hbase.zookeeper.property.clientPort</name>

<value>2181</value>

</property>

<property>

<name>hbase.zookeeper.property.dataDir</name>

<value>/root/hbase-1.4.10/zookeeper_data</value>

</property>

</configuration>

 

 

- hbase.rootdir : hbase 의 root directory 를 세팅. 여기에 hbase 의 데이터들이 들어간다.

- hbase.cluster.distributed : 분산 처리를 하려면 true 로 두어야 한다.

- hbase.zookeeper.quorum : 주키퍼의 쿼럼 세팅이 여기서 들어가는데 구체적으로 무슨 역할인지는 아직 모르겠음.

- dfs.replication : 만들 복제본의 개수. 여기선 1로 두지만, 실제 환경에서는 1보다 큰 수로 두어 내고장성을 높인다.

- hbase.zookeeper.property.clientPort : 주키퍼의 client port 가 여기서 세팅되는데 구체적으로 무슨 역할인지는 아직 모르겠음.

- hbase.zookeeper.property.dataDir : 주키퍼의 데이터가 여기 저장된다. 

 

굵게 한 곳에 주목하자.

 

모든 노드의 hbase-site.xml 에 zookeeper01:9000/hbase 가 들어가게 한다.

[host name]:9000/hbase 로 둠으로써 hdfs 에 데이터가 들어가게 된다고 한다.

 

hbase.zookeeper.quorum 에는 클러스터가 될 노드들의 호스트 이름을 적어준다.


hbase.zookeeper.property.dataDir 의 value 에 있는 path 는 내가 임의로 만든 path 이므로,

이걸 보고 따라는 분들도 자신의 path 를 대신 만들어 넣길 바람.

 

 

 

 

 

 

 

 

 

7.

~/.bashrc 를 열어서 아래와 같이 export 를 넣어준다. .bashrc 의 가장 끝에 아래 내용을 덧붙이면 된다.

각각 hbase 와 zookeeper 를 설치한 path 를 넣어주면 된다.

vi ~/.bashrc

 

source ~/.bashrc 로 바뀐 부분을 적용한다.

echo $HBASE_HOME 명령어로 path 가 잘 뜨면 된다.

 

 

 

 

 

 

 

8.

hbase 를 시작하기 전에, hadoop hdfs와 zookeeper 데몬이 실행되고 있어야 한다.

hdfs 는 master node(zookeeper01)에서 start-all.sh 명령어로 시작하면 된다.

zookeeper는 각각의 Cluster node 에서 zkServer.sh start 명령어를 통해 시작하면 된다.

 

hbase 의 master 가 될 노드(zookeeper01) 위에서 start-hbase.sh 명령으로 hbase 를 실행한다.

 

성공적으로 실행되었다면, 

master 가 되는 노드(zookeeper01) jps 명령어의 결과에는 HMaster 가 포함되어 있어야 한다.

slave 가 되는 노드(zookeeper02) jps 명령어의 결과에는 HRegionServer 가 포함되어 있어야 한다.

master 되는 노드(zookeeper01) 에 HMaster
slave 되는 노드(zookeeper02) 에 HRegionServer

 

 

 

9.

bin 에서 ./hbase shell 명령어로 shell 에 접속해서 성공하는지 확인해보자.

아래는 간단하게 테이블 하나를 만들어서 list 로 출력해본 결과이다.

 

 

 

 

 

hbase 의 Web UI 는 16010 번 포트를 사용한다.

[HMaster 에 해당하는 ip]:16010 이 주소로 접속해서 HBase Web UI 를 둘러보자.

 

 

 

 

 

간혹 hbase 를 시작할 때, 아래와 같은 에러가 뜨는 경우가 있다. 로그 보는 방법

java.lang.IllegalStateException: The procedure WAL relies on the ability to hsync for proper operation during component failures, but the underlying filesystem does not support doing so. Please check the config value of 'hbase.procedure.store.wal.use.hsync' to set the desired level of robustness and ensure the config value of 'hbase.wal.dir' points to a FileSystem mount that can provide it.

나도 이 에러를 접했는데, spark 는 2.4.0, scala 는 2.11.12 버전을 사용하고 있었고 hbase는 2.2.2 버전으로 시작했다.

시작하면 HMaster 가 위의 에러를 뿜으면서 죽는다. 그래서 hbase 를 시작할 수 없었다.

해결방법으로, conf/hbase-site.xml 에 아래 내용을 추가해주면 상기한 에러가 사라진다.

 

<property>

  <name>hbase.unsafe.stream.capability.enforce</name>

  <value>false</value>

</property>

 

 

 

 

참고

 

http://blog.iotinfra.net/?tag=hbase-%EC%99%84%EC%A0%84%EB%B6%84%EC%82%B0-%EC%84%A4%EC%B9%98

https://www.guru99.com/hbase-installation-guide.html

https://www.joinc.co.kr/w/man/12/hadoop/hbase/install

https://mazdah.tistory.com/809

http://intellitech.pro/hbase-installation-on-ubuntu/

 

 

 

 

 

 

 

 

 

 

+ Recent posts