本文的主要目的就是纪念一下deploy hbase-0.91.0-SNAPSHOT,过程中竟然遇到了两个问题,一个是hbase的bug,另外一个自己config上的问题。
(本文的前提是你已经安装apache-maven-3.0.并且已经安装hadoop-0.20.2-cdh3u1)
1)我主要使用的是https://github.com/larsgeorge/hbase.git提供的hbase repository, 从这里check out源代码,使用mvn打包来生成tar.gz文件
USER@ubuntu:~/workspace/java/hbase$ git clone git://github.com/larsgeorge/hbase.git
mvn package -DskipTests=true
USER@ubuntu:~/workspace/java/hbase$ ls
bin CHANGES.txt conf hs_err_pid28004.log LICENSE.txt logs NOTICE.txt pom.xml README.txt src target
USER@ubuntu:~/workspace/java/hbase$ cd target/
USER@ubuntu:~/workspace/java/hbase/target$ ls
antrun classes generated-sources hbase-0.91.0-SNAPSHOT-sources.jar hbase-webapps nativelib
archive-tmp copynativelibs.sh hbase-0.91.0-SNAPSHOT hbase-0.91.0-SNAPSHOT.tar.gz maven-archiver test-classes
cached_classpath.txt generated-jamon hbase-0.91.0-SNAPSHOT.jar hbase-0.91.0-SNAPSHOT-tests.jar maven-shared-archive-resources
经过上面的步骤以后我们就得到了我们想要的hbase-0.91.0-SNAPSHOT.tar.gz
(我在使用 hbase-0.91.0-SNAPSHOT.tar.gz的时候,通过hbase shell执行命令的时候遇到了https://issues.apache.org/jira/browse/HBASE-4171, 所以重新按照里面fix的方法更改了一下admin.rb,然后重新package一个新的tar.gz)
2)下面就是使用step1生成的hbase-0.91.0-SNAPSHOT.tar.gz deploy hbase了(我使用的hadoop是hadoop-core-0.20.2-cdh3u1.jar)
USER@ubuntu:~/software$ tar -xzf hbase-0.91.0-SNAPSHOT
USER@ubuntu:~/software/hbase-0.91.0-SNAPSHOT$ pwd
/home/USER/software/hbase-0.91.0-SNAPSHOT
USER@ubuntu:~/software/hbase-0.91.0-SNAPSHOT$ rm lib/hadoop-core-0.20-append-r1057313.jar
USER@ubuntu:~/software/hbase-0.91.0-SNAPSHOT$ cp /home/USER/software/hadoop-0.20.2-cdh3u1/hadoop-core-0.20.2-cdh3u1.jar ./lib/
3) 配置hbase,我们这里将hbase配置为伪分布式,在conf下面更改hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase2</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
(在这里我开始的时候使用的是hdfs://localhost:9000/hbase,在使用hbase shell执行hbase命令的时候出现 org.apache.hadoop.hbase.TableNotFoundException: .META. 产生这个问题的原因是我在这个hadoop上配置的另外一个版本的hbase 0.90.3已经使用了hbase这个目录,所以我更改目录为hbase2)
4) 启动hadoop和hbase(我已经将hadoop-0.20.2-cdh3u1的bin路径加入到PATH中,所以直接可以在任何目录执行start-all.sh,但是hbase-0.91.0-SNAPSHOT的bin目录并没有在PATH中)
USER@ubuntu:~/software/hbase-0.91.0-SNAPSHOT$ start-all.sh
USER@ubuntu:~/software/hbase-0.91.0-SNAPSHOT$ ./bin/start-hbase.sh
5)验证我们的hbase-0.91.0-SNAPSHOT是否已经run起来了
USER@ubuntu:~/software/hbase-0.91.0-SNAPSHOT$ ./bin/hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.91.0-SNAPSHOT, r9f14c5db3078a61d4f4d212312e3cdf95964f49e, Sun Aug 7 22:58:23 CST 2011
hbase(main):001:0> list
TABLE
11/08/08 00:23:26 INFO ipc.HBaseRPC: Using org.apache.hadoop.hbase.ipc.WritableRpcEngine for org.apache.hadoop.hbase.ipc.HMasterInterface
0 row(s) in 0.5590 seconds
hbase(main):002:0> create 'user_info', 'city'
11/08/08 00:24:14 INFO ipc.HBaseRPC: Using org.apache.hadoop.hbase.ipc.WritableRpcEngine for org.apache.hadoop.hbase.ipc.HRegionInterface
0 row(s) in 0.1570 seconds
hbase(main):003:0> list
TABLE
user_info
1 row(s) in 0.0330 seconds
hbase(main):004:0> put 'user_info', 'shawn', 'city:name', 'beijing'
0 row(s) in 0.1070 seconds
hbase(main):005:0> scan 'user_info'
ROW COLUMN+CELL
shawn column=city:name, timestamp=1312734296529, value=beijing
1 row(s) in 0.0510 seconds
hbase(main):006:0> disable 'user_info'
0 row(s) in 2.0550 seconds
hbase(main):007:0> drop 'user_info'
0 row(s) in 1.1180 seconds
hbase(main):008:0> exit
这样hbase 0.91就搞定了。