昨天用了一下午时间搭建HBase环境,相比于很多高手来说还是差了太多,但是比搭建Hadoop环境用了将近一个月时间却节约了不少。当时搭建Hadoop环境的时候,还没有接触过Linux。现在把我搭建HBase环境的过程和遇到的问题总结一下。
简单介绍一下我的环境
1. CentOS 6.5
2. Hadoop 2.2
3. jdk 1.7
4. HBase 0.98
5. Zookeeper 3.4
在官网下载HBase安装包
解压HBase,设置环境变量
进入HBase的安装目录,我的是在/usr/local/hbase (为了方便,我把解压出来的hbase-0.98-hadoop2文件夹拷贝了一份命名为hbase)
注意:下载页面里面有Hbase对应Hadoop版本信息,下载的时候注意区分。Hadoop1对应的是hadoop1.x版本。(因为此原因,之前hbase一直没法起来。)
环境变量配置
使配置文件生效
# source /etc/profile
解压hbase
#tar -xzvf hbase-0.98.20-hadoop2.bin.tar.gz
修改文件夹名字,并将权限赋值给普通用户hadoop
#cp -r hbase-0.98.20-hadoop2 hbase
#chown -R hadoop:hadoop hbase
进入普通用户hadoop,进入hbase文件夹
#su hadoop
$cd hbase
可以看到hbase下的文件权限全是hadoop了
修改配置文件
(这是很关键的一步,配置文件在$HBASE_HOME/conf/hbase-site.xml)
具体配置信息可以参考这个网页
这里有关于hbase配置的详细解释,我就不多做解释了。
这是我的配置文件
hbase.rootdir
表示HBase集群中所有RegionServer共享目录,用来持久化HBase的数据,我设置成了HDFS上的/hbase
(最好确保该目录存在,否则启动hbase的时候可能会报错。该项不识别ip,最好写上自己的用户名。)
hbase.cluster.distributed
集群的模式,分布式还是单机模式,如果设置成false的话,HBase进程和Zookeeper进程在同一个JVM进程。
因为我的是伪分布模式,所以这里设置成了true
hbase.zookeeper.quorum
zookeeper集群的URL配置,多个host中间用逗号(,)分割,默认值为localhost
因为我只有一个节点,直接设置成localhost,也可以不设置
(此项仅支持奇数个节点)
修改hbase-env.sh文件
(其中HBASE_MANAGES=false表示不使用hbase自带的zookeeper,如果不想麻烦直接使用,则改成true。)
修改regionservers文件,默认为localhost,所以我这里不进行修改
下载解压zookeeper,配置环境变量
官网下载地址
http://www.apache.org/dyn/closer.cgi/zookeeper/
环境变量之前在hbase环境变量配置的时候已经配置完成,这里就不多作介绍。
zookeeper解压完成后,像hbase一样,改名为zookeeper,将权限赋给hadoop。
进入$ZOOKEEPER_HOME/conf/
输入 $cp zoo_sample.cfg zoo.cfg
zookeeper详细配置解析
启动zookeeper
$cd bin
$./zkServer start
之后进入$HBASE_HOME,启动habse
输入
$cd bin
$start-hbase.sh
输入jps,可以看到,进程全部开启
输入
$hbase shell
进入hbase操作页面
输入
$status
查看信息
我第一次开启是这种情况,上网查原因是hbase自带的jar与hadoop版本不匹配所致,进入hbase/lib目录,将其中的 slf4j-log4j12-1.6.4.jar移除再次启动,发现错误消失,hbase安装完成