HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。
逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(K-V)来看,HBase更像是一个multi-dimensional map(多维地图)。
1)Name Space
命名空间,类似于关系型数据库的database概念,每个命名空间下有多个表。HBase两个自带的命名空间,分别是hbase和default,hbase中存放的是HBase内置的表,default表是用户默认使用的命名空间。一个表可以自由选择是否有命名空间,如果创建表的时候加上了命名空间后,这个表名字以:
架构角色:
1)Region Server
Region Server为 Region的管理者,其实现类为HRegionServer,主要作用如下:
对于数据的操作:get, put, delete;
对于Region的操作:splitRegion、compactRegion。
2)Master
Master是所有Region Server的管理者,其实现类为HMaster,主要作用如下:
对于表的操作:create, delete, alter
对于RegionServer的操作:分配regions到每个RegionServer,监控每个RegionServer的状态,负载均衡和故障转移。
3)Zookeeper
HBase通过Zookeeper来做master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。
4)HDFS
HDFS为HBase提供最终的底层数据存储服务,同时为HBase提供高容错的支持。
首先保证Zookeeper集群的正常部署,并启动之:
[aa@hadoop102 zookeeper-3.5.7]$ bin/zksh start
[aa@hadoop103 zookeeper-3.5.7]$ bin/zk.sh start
[aa@hadoop104 zookeeper-3.5.7]$ bin/zk.sh start
Hadoop集群的正常部署并启动。
[aa hadoop-3.1.3]$ sbin/start-dfs.sh
[aa hadoop-3.1.3]$ sbin/start-yarn.sh
1)解压Hbase到指定目录。
[aa software]$ tar -zxvf hbase-2.0.5-bin.tar.gz -C /opt/module
[aa software]$ mv /opt/module/hbase-2.0.5 /opt/module/hbase
2)配置环境变量
[aa ~]$ sudo vim /etc/profile.d/my_env.sh
添加
#HBASE_HOME
export HBASE_HOME=/opt/module/hbase
export PATH=$PATH:$HBASE_HOME/bin
修改HBase对应的配置文件。
1)hbase-env.sh修改内容:
export HBASE_MANAGES_ZK=false
2)hbase-site.xml修改内容:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop102:8020/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop102,hadoop103,hadoop104</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
<property>
<name>hbase.wal.provider</name>
<value>filesystem</value>
</property>
</configuration>
3)vim regionservers: 方便后面群启
hadoop102
hadoop103
hadoop104
必须写自己的端口号:
[aa@hadoop102 module]$ xsync hbase/
1)单点启动
[aa hbase]$ bin/hbase-daemon.sh start master
[aa hbase]$ bin/hbase-daemon.sh start regionserver
启动一个master(随便哪个都可以启动)和n个regionserver
[aa module]$ hbase-2.0.5/bin/hbase-daemon.sh start master
[aa ~]$ /opt/module/hbase-2.0.5/bin/hbase-daemon.sh start regionserver
[aa module]$ /opt/module/hbase-2.0.5/bin/hbase-daemon.sh start regionserver
[aa module]$ /opt/module/hbase-2.0.5/bin/hbase-daemon.sh start regionserver
[aa module]$ /opt/module/hbase-2.0.5/bin/hbase-daemon.sh stop regionserver
注意:如果集群之间的节点时间不同步(安装之前的准备工作),会导致regionserver无法启动,抛出ClockOutOfSyncException异常。
修复提示
(1)同步时间服务
(2)属性:hbase.master.maxclockskew设置更大的值
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
<description>Time difference of regionserver from master</description>
</property>
2)群启 建议在配置了到其他机器的免密登录机器上进行群启
[aa hbase]$ bin/start-hbase.sh
哪个机器执行这个命令就在哪个机器启动master
正常全部启动之后的页面:注意三点!否则集群失败!
对应的停止服务:
[aa hbase]$ bin/stop-hbase.sh