首先下载HBase,这里下载的是HBase-1.2.1。将安装包解压到指定的目录,然后对HBase进行配置。
因为HBase依赖Hadoop,所以要进行一个整合。
首先把Hadoop中的hdfs-site.xml和core-site.xml放到hbase的conf目录中。
这两个配置文件里记录着Hadoop的NameNode地址
这样在启动HBase集群的时候,就会知道Hadoop集群的地址在哪里。
接下来配置
hbase-env.sh
配置regionservers和backup-masters地址,去修改这两个文件。
是否使用hbase自带的zookeeper集群
设置为false,使用外部自己配置的集群
就hbase-env.sh
这个文件,需要修改的地方有两个,一个是JAVA_HOME,另一个是zookeeper集群不使用hbase自带的。
另外可以删除掉当中对JVM内存资源的配置信息,这些信息在JDK8+中是不起作用的,如果是在JDK8+环境下启动,会报警告信息,详细见文章后边介绍。
接下来配置hbase-site.xml
,在当中添加配置:
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://node-1:9000/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>node-1:2181,node-2:2181,node-3:2181</value>
</property>
接下来配置regionservers,指定regionserver的地址。
打开regionservers
,里面只有一个localhost
删除掉这个localhost,然后指定regionserver:
接下来配置指定
整个集群中备用的master的文件,这个文件默认没有,需要自己添加,文件名在
hbase-env.sh
中有说明,文件名为:
backup-masters
将node-2添加进去。
修改/etc/profile
,添加hbase的环境变量
source /etc/profile
至此,一台机器上就配置好了。
接下来分发一下
hbase的启动依赖Hadoop和Zookeeper
start-dfs.sh启动HDFS
这里不需要启动YARN
启动zookeeper
这里执行事先写好的启动zk集群的脚本
start_zk.sh内容
查看zk状态,node-2是leader
在hbase的bin目录下
./start-hbase.sh
,因为添加了环境变量,也可以直接运行start-hbase.sh命令。
在JDK8中不支持设置JVM相应的参数,在JDK7可以,所以这里在启动的时候有警告,可以忽略。如果想去掉这个警告,可以去配置文件hbase-env.sh
中删除相应的配置。在JDK8+中这些配置就失效了。
从启动的警告中可以看到,每个regionserver都会报警告,如果想要把
所有的警告都去掉,需要把集群里
所有的regionserver的
hbase-env.sh
里的相关配置删掉。
启动时没有警告
启动成功之后jps查看进程
这里有个坑,如果说发现启动HBase集群之后,HRegionServer进程并没有启动,或者HRegionServer启动了,但是过一会儿就没有了,那么很有可能是集群中各个机器的时间没有统一。这里可以同时向各个机器节点发送date命令设置时间,解决这个问题。
使用netstat -nlp命令可以查看使用的端口号
端口16010可以访问HBase的webUI管理界面
如果HRegionServer进程没有启动起来的话,界面当中的Region Servers下边是没有内容的。
HBase集群启动命令
start-hbase.sh
HBase集群关闭命令stop-hbase.sh
Hbase的master web管理界面
这两个Region是自带的Region
Region Server 管理 Regions
系统默认带有两个Region
一个是meta表,一个是namespace表。
由zookeeper来维护Master的高可用
将node-1上正在运行的Master进程杀死
这个时候node-1的web界面就无法访问了,但是node-2界面可以正常访问,node-2从backup-master成为了Master
现在再次在node-1上启动hbase
虽然node-1上的master启动了,但是node-2master正在运行,所以node-1成为了backup。
注意:启动HBase先启动HDFS,关闭时,先关闭HBase再关闭HDFS。
hbase自带的zk自己做实验可以用,但是在企业中最好是搭建一个zk集群。