本篇文章描述的是在1.2.1版本的基础上安装hadoop加上0.94.16版本的hbase,呵呵!现在看来这些版本都有些过时了,写这篇稿子的时候hadoop刚出2.3.0版。如果你是新手或是刚踏入hadoop不妨看看我这篇文档,一步一步脚踏实地的来学习这些基础的东西。


   既然是hbase安装,这里就免去hadoop安装的介绍了(请参阅本人hadoop1.2.1版安装帖子),hbase0.94.16原本支持hadoop1.0.4版本但是进过修改可以支持hadoop1.2.1版本,这里就一步一步将按照步骤道来。


   1、假设已经装好了hadoop1.2.1,然后我们现在就下载hbase-0.94.16.tar.gz.

   2、创建自定义目录,如/home/hbase,下载到/home/hbase下并进行解压。

      解压命令:# tar -zxvf hbase-0.94.16.tar.gz


   3、安装hbase前的配置文件修改

       3-1)进入解压后的hbase文件夹,进入conf目录编辑hbase-env.sh文件,启用配置文件内这三项配置,去掉前面的“#”号,再修改配置就行了,具体如下:

       #export JAVA_HOME=/usr/java/default  (设定本机jdk安装目录,这里是我本机的路径)

        export HBASE_Classpath=/etc/hadoop (指定本机hadoop安装的配置文件所在的目录,这里是我本机的路径)

       #export HBASE_MANAGES_ZK=true

值默认是true作用是让Hbase启动的时候同时也启动zookeeper,让Hbase使用一个现有的不被Hbase托管的Zookeep集群,需要设置为 false

       3-2)接着修改conf目录下的hbase-site.xml文件,添加如下配置内容:

<property>

   <name>hbase.rootdir</name>

   <value>hdfs://localhost:9000/hbase</value>这里要和hadoop配置的一样

</property>

hbase.rootdir属性解释这里用来设置region server的共享目录,用来持久化Hbase。URL需要是'完全正确'的,还要包含文件系统的scheme。例如,要表示hdfs中的'/hbase'目录,namenode 运行在node1的9090端口。则需要设置为hdfs://node1:49002/hbase。默认情况下Hbase是写到/tmp的。不改这个配置,数据会在重启的时候丢失。默认: file:///tmp/hbase-${user.name}/hbase

<property>

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

   <value>false</value>

</property>

hbase.cluster.distributed属性解释:Hbase的运行模式。false是单机模式,true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面。默认: false

<property>

   <name>dfs.replication</name>

   <value>1</value> (伪分布设置为1)

</property>


4、让hbase0.94.16支持hadoop1.2.1

   4-1)将hadoop主目录下的hadoop-core-1.2.1.jar文件复制到hbase/lib目录下去,将hbase/lib          目录下老得hadoop-core-1.0.4.jar文件删除,

   4-2)再将hadoop/lib目录下的commons-collections-3.2.1.jar和commons-configuration-

        1.6.jar文件复制到hbase/lib目录下去。


5、启动hbase

进入hbase的解压目录下的bin文件夹,执行start-hbase.sh脚本或者在linux下执行shell命令

# cd /home/hbase/bin

# start-hbase.sh

启动hbase时如果报错,说明hbase没有安装正确,可能是配置文件没有配好,请仔细检查配置文件


启动完成,我们可以输入命令来验证需要的服务进程是否都起来了。输入命令:

# /usr/java/default/bin/jps


6、如果启动成功就可进入hbase进行操作了。

# cd /home/hbase/bin

# hbase shell

进入hbase的命令操作环境。