@TOC
前言
Hive的学习告一段落,接下来开始了解大数据主流NoSql数据库HBase,本文主要讲解HBase集群的安装部署,为后续Hbase学习作准备。
1. HBase是什么(5分钟)
1.1 HBase的概念
- HBase基于Google的BigTable论文,是建立的==HDFS==之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的分布式数据库系统。
- 在需要==实时读写随机访问==超大规模数据集时,可以使用HBase。
1.2 HBase的特点
- ==海量存储==
- 可以存储大批量的数据
- ==列式存储==
- HBase表的数据是基于列族进行存储的,列族是在列的方向上的划分。
- ==极易扩展==
- 底层依赖HDFS,当磁盘空间不足的时候,只需要动态增加datanode节点就可以了
- 可以通过增加服务器来对集群的存储进行扩容
- ==高并发==
- 支持高并发的读写请求
- ==稀疏==
- 稀疏主要是针对HBase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。
- ==数据的多版本==
- HBase表中的数据可以有多个版本值,默认情况下是根据版本号去区分,版本号就是插入数据的时间戳
- ==数据类型单一==
- 所有的数据在HBase中是以==字节数组==进行存储
2. HBase集群安装部署
2.1 准备安装包
-
下载安装包并上传到node01服务器
-
安装包下载地址:
-
将安装包上传到node01服务器/kkb/soft路径下,并进行解压
[hadoop@node01 ~]$ cd /kkb/soft/
[hadoop@node01 soft]$ tar -xzvf hbase-1.2.0-cdh5.14.2.tar.gz -C /kkb/install/
2.2 修改HBase配置文件
2.2.1 hbase-env.sh
- 修改文件
[hadoop@node01 soft]$ cd /kkb/install/hbase-1.2.0-cdh5.14.2/conf/
[hadoop@node01 conf]$ vim hbase-env.sh
- 修改如下两项内容,值如下
export JAVA_HOME=/kkb/install/jdk1.8.0_141
export HBASE_MANAGES_ZK=false
2.2.2 hbase-site.xml
- 修改文件
[hadoop@node01 conf]$ vim hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://node01:8020/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 0.98后的新变动,之前版本没有.port,默认端口为60000 -->
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node01,node02,node03</value>
</property>
<!-- 此属性可省略,默认值就是2181 -->
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/kkb/install/zookeeper-3.4.5-cdh5.14.2/zkdatas</value>
</property>
<!-- 此属性可省略,默认值就是/hbase -->
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase</value>
</property>
</configuration>
2.2.3 regionservers
- 修改文件
[hadoop@node01 conf]$ vim regionservers
- 指定HBase集群的从节点;原内容清空,添加如下三行
node01
node02
node03
2.2.4 back-masters
- 创建back-masters配置文件,里边包含备份HMaster节点的主机名,每个机器独占一行,实现HMaster的高可用
[hadoop@node01 conf]$ vim backup-masters
2.3 分发安装包
- 将node01上的HBase安装包,拷贝到其他机器上
[hadoop@node01 conf]$ cd /kkb/install
[hadoop@node01 install]$ scp -r hbase-1.2.0-cdh5.14.2/ node02:$PWD
[hadoop@node01 install]$ scp -r hbase-1.2.0-cdh5.14.2/ node03:$PWD
2.4 创建软连接
-
**注意:三台机器**均做如下操作
-
因为HBase集群需要读取hadoop的core-site.xml、hdfs-site.xml的配置文件信息,所以我们==三台机器==都要执行以下命令,在相应的目录创建这两个配置文件的软连接
ln -s /kkb/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/core-site.xml /kkb/install/hbase-1.2.0-cdh5.14.2/conf/core-site.xml
ln -s /kkb/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop/hdfs-site.xml /kkb/install/hbase-1.2.0-cdh5.14.2/conf/hdfs-site.xml
- 执行完后,出现如下效果,以node01为例
2.5 添加HBase环境变量
- **注意:三台机器**均执行以下命令,添加环境变量
sudo vim /etc/profile
- 文件末尾添加如下内容
export HBASE_HOME=/kkb/install/hbase-1.2.0-cdh5.14.2
export PATH=$PATH:$HBASE_HOME/bin
- 重新编译/etc/profile,让环境变量生效
source /etc/profile
2.6 HBase的启动与停止
-
需要提前启动HDFS及ZooKeeper集群
-
第一台机器==node01==(HBase主节点)执行以下命令,启动HBase集群
[hadoop@node01 ~]$ start-hbase.sh
-
启动完后,jps查看HBase相关进程
node01、node02上有进程HMaster、HRegionServer
node03上有进程HRegionServer
-
警告提示:HBase启动的时候会产生一个警告,这是因为jdk7与jdk8的问题导致的,如果linux服务器安装jdk8就会产生这样的一个警告
-
可以注释掉所有机器的hbase-env.sh当中的
“HBASE_MASTER_OPTS”和“HBASE_REGIONSERVER_OPTS”配置 来解决这个问题。
不过警告不影响我们正常运行,可以不用解决
-
我们也可以执行以下命令,单节点启动相关进程
#HMaster节点上启动HMaster命令
hbase-daemon.sh start master
#启动HRegionServer命令
hbase-daemon.sh start regionserver
2.7 访问WEB页面
-
浏览器页面访问
1.8 停止HBase集群
- 停止HBase集群的正确顺序
- node01上运行
[hadoop@node01 ~]$ stop-hbase.sh
- 若需要关闭虚拟机,则还需要关闭ZooKeeper、Hadoop集群
总结
Hbase集群搭建完成了,接下来就可以开始愉快的学习Hbase了。
获取更多干货,请关注我的个人公众号:BB侠的大数据之旅,关注领取福利