安装hbase,
单机版的hbase我死活没装好,rootdir设置为本地文件系统一直报错,不知道什么原因。庆幸的是分布模式的hbase 安装成功了,记录一下安装过程。
此处分布模式HADOOP的安装略去,假设你已经安装好了分布式HADOOP。
首先去HBASE官网上下载稳定版本的hbase.我下载的是0.94.7版本
这里摘录一段官网上描述的HBASE版本和HADOOP版本的对应关系:
选择 Hadoop 版本对HBase部署很关键。下表显示不同HBase支持的Hadoop版本信息。基于HBase版本,应该选择合适的Hadoop版本。我们没有绑定 Hadoop 发行版选择。可以从Apache使用 Hadoop 发行版,或了解一下Hadoop发行商产品: http://wiki.apache.org/hadoop/Distributions%20and%20Commercial%20Support
Table 2.1. Hadoop version support matrix
HBase-0.92.x | HBase-0.94.x | HBase-0.96 | |
---|---|---|---|
Hadoop-0.20.205 | S | X | X |
Hadoop-0.22.x | S | X | X |
Hadoop-1.0.x | S | S | S |
Hadoop-1.1.x | NT | S | S |
Hadoop-0.23.x | X | S | NT |
Hadoop-2.x | X | S | S |
S = supported and tested,支持 |
X = not supported,不支持 |
NT = not tested enough.可以运行但测试不充分 |
由于 HBase 依赖 Hadoop,它配套发布了一个Hadoop jar 文件在它的 lib 下。该套装jar仅用于独立模式。在分布式模式下,Hadoop版本必须和HBase下的版本一致。用你运行的分布式Hadoop版本jar文件替换HBase lib目录下的Hadoop jar文件,以避免版本不匹配问题。确认替换了集群中所有HBase下的jar文件。Hadoop版本不匹配问题有不同表现,但看起来都像挂掉了。
看到上面这段描述后,由于我的HADOOP用的是1.0.4版本的,所有版本的HBASE都支持HADOOP-1.0.X版本。如果你用的是HADOOP.1.0.X版本的话,就随便下一个HBASE版本都行。
这里有一个注意点:记得查看HBASE根目录下的LIB目录里的HADOOP-CORE的JAR版本,如果跟你的HADOOP的CORE版本不一致的话,记得吧HADOOP根目录里的hadoop-core 的jar包拷贝到hbase的lib 目录里,然后删除hbase的lib目录里原来的hadoop-core的jar。
然后修改conf目录下的hbase-env.sh:
# The java implementation to use. Java 1.6 required.
export JAVA_HOME=/usr/java/jdk1.6.0_43
# Extra Java CLASSPATH elements. Optional.
export HBASE_CLASSPATH=/home/hadoop/hadoop-1.0.4/conf
添加JAVA_HOME环境变量,将hadoop的配置信息软链接给hbase,让hbase的hadoop配置和hadoop集群的配置一致,当然hbase的conf里也可以添加相关的hadoop配置,来覆盖hadoop集群的配置信息。
然后配置 hbase-site.xml:
<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.dataDir</name>
<value>/home/hadoop/hbase/zookeeper</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master</value>
</property>
</configuration>
这里也是假设你已经配置好了hadoop集群,master为namenode运行的节点,在/etc/hosts中配置。
regionservers里写上所有datanode节点,跟hadoop的conf 里的slaves里的一样,一行一个。