Hbase和Hadoop的版本兼容性
安装Hbase
Hbase是hadoop生态圈的一个组件,是一个分布式数据。我用的是Hadoop2.6.0和Hbase1.1.2进行安装的,这是完全兼容的。去Hbase官网下载历史版本即可。和安装hadoop类似,不做过多阐述。
sudo tar -zxf ~/下载/hbase-1.1.2-bin.tar.gz -C /usr/local
sudo mv /usr/local/hbase-1.1.2 /usr/local/hbase
配置环境变量(我是配置的所有户均可使用):
sudo gedit /etc/profile
输入命令查看版本:
HBase配置
- 单机配置
配置hbase-env.sh
gedit /usr/local/hbase/conf/hbase-env.sh
配置JAVA环境变量,配置HBASE_MANAGES_ZK为true,表示由hbase自己管理zookeeper,不需要单独的zookeeper。hbase-env.sh中本来就存在这些变量的配置(#代表注释):
export JAVA_HOME=jdk位置
export HBASE_MANAGES_ZK=true
配置hbase-site.xml
gedit /usr/local/hbase/conf/hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///usr/local/hbase/hbase-tmp</value>
</property>
</configuration>
在启动HBase前需要设置属性hbase.rootdir,用于指定HBase数据的存储位置,因为如果不设置的话,hbase.rootdir默认为/tmp/hbase-${user.name},这意味着每次重启系统都会丢失数据。和配置hadoop类似,此处设置为HBase安装目录下的hbase-tmp文件夹即(/usr/local/hbase/hbase-tmp)。
启动habse
start-hbase.sh
hbase shell
exit退出shell
stop-hbase.sh
伪分布式安装
Hbase是在HDFS之上运行的。
配置/usr/local/hbase/conf/hbase-env.sh。命令如下:
gedit /usr/local/hbase/conf/hbase-env.sh
配置JAVA_HOME,HBASE_CLASSPATH,HBASE_MANAGES_ZK,HBASE_CLASSPATH设置为本机Hadoop安装目录下的conf目录(即/usr/local/hadoop/conf)
export JAVA_HOME=JDK目录
export HBASE_CLASSPATH=/usr/local/hadoop/conf
export HBASE_MANAGES_ZK=true
配置/usr/local/hbase/conf/hbase-site.xml
gedit /usr/local/hbase/conf/hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
修改hbase.rootdir,指定Hbase的Master在NameNode运行的机器上,让HBase数据在HDFS上的存储路径;将属性hbase.cluter.distributed设置为true。假设当前Hadoop集群运行在伪分布式模式下,在本机上运行,且NameNode运行在9000端口。
在分布式集群上运行Hbase,需要设置免密码登陆,安装伪分布式hadoop已经做好ssh免密码登录。
start-dfs.sh
start-hbase.sh
结果如下:
hbase shell运行如下: