이번에는 하둡 2.4 위에 Hbase 0.98.7을 단독으로 설치해 본다.
<설치환경>
OS : Ubuntu 14.04 LTS Server 64bit
Hadoop : HADOOP 2.4.1 (위치 /usr/local/hadoop, 계정 hduser:hadoop)
Java : JRE 1.7.x
1. HBase 소스 다운로드
현재 0.99.1 버전까지 있으나 안정버전으로는 0.98.7이 나와있다. (2014년10월)
링크 http://apache.tt.co.kr/hbase/stable/
2. HBase 소스 빌드
HBase는 0.98 버전부터는 Hadoop 2.x를 기본으로 빌드환경이 설정되어 있으며, 그 이전 버전의 Hadoop에 대해서는 Profile 옵션을 사용해야 한다.
ex) -Dhadoop.profile=1.0
소스 컴파일에 대해서는 다음 문서에 잘 나와 있다. (Maven 이용)
==> http://hbase.apache.org/book/build.html
$ mvn -DskipTests clean install && mvn -DskipTests package assembly:single $ ll hbase-0.98.7-src/hbase-assembly/target 합계 196 drwxrwxr-x 6 bgmin bgmin 4096 10월 30 15:16 ./ drwxrwxr-x 5 bgmin bgmin 4096 10월 30 15:16 ../ -rw-r--r-- 1 bgmin bgmin 151600 10월 9 04:17 CHANGES.txt -rw-r--r-- 1 bgmin bgmin 11358 8월 19 07:11 LICENSE.txt -rw-r--r-- 1 bgmin bgmin 897 10월 9 04:07 NOTICE.txt -rw-r--r-- 1 bgmin bgmin 1377 10월 9 04:08 README.txt drwxr-xr-x 4 bgmin bgmin 4096 10월 9 04:08 bin/ drwxr-xr-x 2 bgmin bgmin 4096 10월 9 04:08 conf/ drwxr-xr-x 7 bgmin bgmin 4096 10월 30 15:00 hbase-webapps/ drwxrwxr-x 3 bgmin bgmin 4096 10월 30 15:16 lib/
3. HBase 바이너리 설치 및 설정
/usr/local 위치에 설치하고 hduser 계정 소유로 변경한다. (관리상)
설정은 conf의 ~env.sh과 ~site.xml을 수정해서 한다.
$ sudo mv hbase-0.98.7 /usr/local/ $ cd /usr/local/ $ sudo chown -R hduser:hadoop hbase-0.98.7/ $ sudo ln -s hbase-0.98.7/ hbase # 환경설정 $ vi ~/.bashrc ... export HBASE_HOME=/usr/local/hbase export PATH=$PATH:$HBASE_HOME/bin ... # HBase conf 설정 (StandAlone 타입) $ cd /usr/local/hbase $ vi conf/hbase-site.xml ...
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>localhost</value>
</property>
...
# zookeeper용 디렉토리를 생성 (주키퍼 설치 없이, StandAlone 타입) $ mkdir zookeeper # Hadoop에 HBase용 디렉토리를 생성
4. HBase 실행
# HBase는 Hadoop을 바탕으로 실행되므로 우선 하둡을 확인 $ jps 5554 NameNode 6087 ResourceManager 5688 DataNode 7229 Jps 5867 SecondaryNameNode 6216 NodeManager # HMaster 프로세스 시작 $ bin/start-hbase.sh # HBase를 시작하면 'HMaster' 프로세스가 실행된다 $ jps 7364 HMaster 5554 NameNode 6087 ResourceManager 5688 DataNode 5867 SecondaryNameNode 7493 Jps 6216 NodeManager # HBase 대화형 콘솔 실행 $ bin/hbase shell 2014-10-31 07:40:02,633 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available HBase Shell; enter 'help' for list of supported commands. Type "exit" to leave the HBase Shell Version 0.98.7, rUnknown, Thu Oct 30 22:02:23 KST 2014 hbase(main):001:0> status SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/usr/local/hbase-0.98.7/lib/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/usr/local/hadoop-2.4.1/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 1 servers, 0 dead, 2.0000 average load hbase(main):002:0> exit # HMaster 프로세스 종료 $ bin/stop-hbase.sh
5. HBase Shell 테이블 생성&조회 예제
HBase의 Master 프로세스를 실행한 후 쉘 실행
쉘 안에서 도움말은 ‘help’를 치면 된다.
$ hbase shell hbase> create 'test','cf' 0 row(s) in 0.2900 seconds => Hbase::Table - test hbase> list 'test' TABLE test 1 row(s) in 0.0070 seconds => ["test"] hbase> put 'test', 'row1', 'cf:a', 'value1' 0 row(s) in 0.0770 seconds hbase> put 'test', 'row2', 'cf:b', 'value2' 0 row(s) in 0.0030 seconds hbase> put 'test', 'row3', 'cf:c', 'value3' 0 row(s) in 0.0030 seconds hbase> scan 'test' ROW COLUMN+CELL row1 column=cf:a, timestamp=1414721171438, value=value1 row2 column=cf:b, timestamp=1414721179483, value=value2 row3 column=cf:c, timestamp=1414721186425, value=value3 3 row(s) in 0.0190 seconds hbase(main):013:0> get 'test', 'row1' COLUMN CELL cf:a timestamp=1414721171438, value=value1 1 row(s) in 0.0130 seconds hbase(main):014:0> describe 'test' DESCRIPTION ENABLED 'test', {NAME => 'cf', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSI true ONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'} 1 row(s) in 0.0600 seconds hbase(main):015:0>
위 예제를 실행한 후 Hadoop 저장소의 내용을 확인하면 다음과 같이 나타난다.
$ hadoop fs -ls /hbase Found 6 items drwxr-xr-x - hduser supergroup 0 /hbase/.tmp drwxr-xr-x - hduser supergroup 0 /hbase/WALs drwxr-xr-x - hduser supergroup 0 /hbase/data -rw-r--r-- 1 hduser supergroup 42 /hbase/hbase.id -rw-r--r-- 1 hduser supergroup 7 /hbase/hbase.version drwxr-xr-x - hduser supergroup 0 /hbase/oldWALs $ hadoop fs -ls /hbase/data Found 2 items drwxr-xr-x - hduser supergroup 0 /hbase/data/default drwxr-xr-x - hduser supergroup 0 /hbase/data/hbase $ hadoop fs -ls /hbase/data/hbase Found 2 items drwxr-xr-x - hduser supergroup 0 /hbase/data/hbase/meta drwxr-xr-x - hduser supergroup 0 /hbase/data/hbase/namespace $ hadoop fs -ls /hbase/data/default Found 1 items drwxr-xr-x - hduser supergroup 0 /hbase/data/default/test $ hadoop fs -ls /hbase/data/default/test Found 3 items drwxr-xr-x - hduser supergroup 0 /hbase/data/default/test/.tabledesc drwxr-xr-x - hduser supergroup 0 /hbase/data/default/test/.tmp drwxr-xr-x - hduser supergroup 0 /hbase/data/default/test/17afeed2cccfeae973df0f1b27566483
6. HBase 웹매니저 실행
* 마스터용 http://localhost:60010/ (HBase 1.0+ 에서는 http://localhost:16010/)
* 리전서버용 http://localhost:60030/ (HBase 1.0+ 에서는 http://localhost:16030/)
9. 참고문서
HBase 소스 빌드 방법에 대해 설명
http://hbase.apache.org/book/build.html
HBase 단독설치시 설정 방법에 대해 설명
http://hbase.apache.org/book/quickstart.html
https://archanaschangale.wordpress.com/2013/08/29/installing-apache-hbase-on-ubuntu-for-standalone-mode/
Hadoop 2.2 + HBase 0.98 설치 설명
http://gelius7.blogspot.kr/2014/07/hadoop-220-hbase-0980-install-in-centos.html
성능 최적화 옵션 설정 사례
http://www.venturesquare.net/514286