今天教大家如何在centerOS7上搭建hbase的集群环境,首先给大家介绍一下hbase
hbase是什么
HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。 HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。 它是Hadoop的生态系统,提供对数据的随机实时读/写访问,是Hadoop文件系统的一部分。 人们可以直接或通过HBase的存储HDFS数据。使用HBase在HDFS读取消费/随机访问数据。 HBase在Hadoop的文件系统之上,并提供了读写访问
HBase 和 HDFS
HDFS | HBase |
---|---|
HDFS是适于存储大容量文件的分布式文件系统 | HBase是建立在HDFS之上的数据库。 |
HDFS不支持快速单独记录查找 | HBase提供在较大的表快速查找 |
它提供了高延迟批量处理;没有批处理概念 | 它提供了数十亿条记录低延迟访问单个行记录(随机存取)。 |
它提供的数据只能顺序访问 | HBase内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找。 |
hbase的数据模型
Row Key: 行键,Table的主键,Table中的记录按照Row Key排序
Timestamp: 时间戳,每次数据操作对应的时间戳,可以看作是数据的version number
Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以由任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。
好了,说了这么多大家可能光看概念也是云里雾里,所以就直接带大家搭建环境,做一些简单的应用来体会hbase的用法了。
环境搭建
首先需要有hbase的软件包,可以自行下载,我给大家提供的是hbase-1.3.1
版本,点击下载
其次把下载的软件放入centerOS7系统下的自己的目录下,我的目录是在/home/mmcc
下。然后进入到该目录解压文件
cd /home/mmcc
tar -zxvf hbase-1.3.1-bin.tar.gz
复制代码
然后开始配置hbase-env.sh
文件,进入hbase根目录
vi /conf/hbase-env.sh //编辑环境变量配置脚本
export JAVA_HOME=/home/mmcc/jdk1.8 //配置java环境变量,把井号去掉换上自己的jdk路径
export HBASE_MANAGES_ZK=true //表示使用自带的zookeeper
export HBASE_PID_DIR=/home/mmcc/hbase-1.3.1/hbase_tmp //修改pid文件的保存路径
复制代码
其次再配置hbse-site.xml
文件
vi /conf/hbase-site.xml
<property>
<name>hbase.rootdir</name> //设置hbase在hdfs上根目录
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name> //是否开启集群
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name> // 设置zookeeper集群节点
<value>master,slave1,slave2</value>
</property>
<property>
<name>hbase.tmp.dir</name> //设置临时文件目录
<value>/home/mmcc/hbase-1.3.1/data/tmp</value>
</property>
<property> //设置web管理界面端口
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
复制代码
设置zookeeper集群节点时,如果zookeeper单独设置了端口 则加上master:port ,默认是master:2181,默认的可以不写
然后配置hbase的集群节点服务
vi /conf/regionservers
slave1
slave2
复制代码
把zookeeper的服务节点都配置进去
到这一步master节点的hbase的环境已经配置好了,但是这只是单机版,我们需要做到一个集群,可以通过以下方式把hbase直接复制到不同的节点机上
scp -r /home/mmcc/hbase-1.3.1 slave1/slave1节点的ip:/home/mmcc
scp -r /home/mmcc/hbase-1.3.1 slave2/slave2节点的ip:/home/mmcc
复制代码
把/hbase-1.3.1
目录下的所有文件复制到slave1节点上的/home/mmcc
目录下,由于咱是通过克隆的方式创建的虚拟机,所以其实文件目录都是一样的
然后将hbase的bin目录配置到环境变量里,每个节点都配置好
vi /etc/profile
HBASE_HOME=/home/mmcc/hbase-1.3.1
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$HBASE_HOME/bin:$PATH:.
source /etc/profile //使环境变量生效
复制代码
启动集群
start-hbase.sh //前提是已经启动了hadoop集群服务
复制代码
内部会启动一个自带的zookeeper集群,同时启动master和节点服务.启动之后通过jps
查看一下当前的服务
可以发现,集群已经启动成功了。
现在咱是通过自带的zookeeper作为协调服务的,所以启动步骤如下
- 启动hadoop集群
start-all.sh
- 启动hbase集群
start-hbase.sh
停止步骤
- 停止hbase集群
stop-hbase.sh
- 停止hadoop集群
stop-all.sh
自定义zookeeper
首先在配置hbase-env.sh
文件时,把export HBASE_MANAGES_ZK=false
设置为false,表示使用自定义的zookeeper的集群。同时如果自己单独配置了zookeeper集群的端口,不是默认的2181。则在hbase-site.xml
中配置zookeeper集群时需要带上端口
<property>
<name>hbase.zookeeper.quorum</name> // 设置zookeeper集群节点
<value>master:port,slave1:port,slave2:port</value>
</property>
复制代码
使用自定义的zookeeper的集群启动顺序
- 启动hadoop集群
- 启动zk集群(zookeeper)
- 启动hbase集群
停止步骤
- 停止hbase集群
- 停止zk集群(zookeeper)
- 停止hadoop集群
关于zk集群的搭建和使用在后面章节会讲到