目录
一:HBase 简介
1.1 HBase 定义
1.2 HBase 数据模型
1.2.1 HBase 逻辑结构
1.2.2 HBase 物理存储结构
1.2.3 数据模型
1.3 HBase 基本架构
二:HBase 快速入门
2.1 HBase 安装部署
2.1.1 Zookeeper 正常部署
2.1.2 Hadoop 正常部署
2.1.3 HBase 的解压
2.1.4 HBase 的配置文件
2.1.5 HBase 远程发送到其他集群
2.1.6 HBase 服务的启动
2.1.7 查看 HBase 页面
Apache HBase™ 是以 hdfs 为数据存储的,一种分布式、可扩展的 NoSQL 数据库。
之后对于映射的解释如下:Bigtable 是一个稀疏的、分布式的、持久的多维排序 map。
该映射由行键、列键和时间戳索引;映射中的每个值都是一个未解释的字节数组。
最终 HBase 关于数据模型和 BigTable 的对应关系如下:
HBase 使用与 Bigtable 非常相似的数据模型。用户将数据行存储在带标签的表中。数 据行具有可排序的键和任意数量的列。该表存储稀疏,因此如果用户喜欢,同一表中的行可 以具有疯狂变化的列。最终理解 HBase 数据模型的关键在于稀疏、分布式、多维、排序的映射。其中映射map指代非关系型数据库的 key-Value 结构。
{"row_key1": {"personal_info": {"name": "zhangsan","city": "北京","phone": "131********"},"office_info": {"tel": "010-1111111","address": "atguigu"}},"row_key11": {"personal_info": {"city": "上海","phone": "132********"},"office_info": {"tel": "010-1111111"}},"row_key2": {......} 
物理存储结构即为数据映射关系,而在概念视图的空单元格,底层实际根本不存储。

1)Name Space
2)Table命名空间,类似于关系型数据库的 database 概念,每个命名空间下有多个表。HBase 两个自带的命名空间,分别是 hbase 和 default,hbase 中存放的是 HBase 内置的表(供系统使用),default表是用户默认使用的命名空间。
类似于关系型数据库的表(Table)概念。不同的是,HBase 定义表时只需要声明列族即可,不需要声明具体的列。因为数据存储时稀疏的,所有往 HBase 写入数据时,字段可以动态、按需 指定。因此,和关系型数据库相比,HBase 能够轻松应对字段变更的场景。3)Row
HBase 表中的每行数据都由一个 RowKey 和多个 Column(列)组成,数据是按照 RowKey 的字典顺序存储的,并且查询数据时只能根据 RowKey 进行检索,所以 RowKey 的设计十分重要。4)Column
HBase 中的每个列都由 Column Family(列族)和 Column Qualifier(列限定符)进行限定,例如 info:name,info:age。建表时,只需指明列族,而列限定符无需预先定义。5)Time Stamp
用于标识数据的不同版本(version),每条数据写入时,系统会自动为其加上该字段,其值为写入HBase 的时间。6)Cell
由{rowkey, column Family:column Qualifier, timestamp} 唯一确定的单元。cell 中的数据全部是字节码形式存贮。

(1)管理元数据表格 hbase:meta,接收用户对表格创建修改删除的命令并执行 (2)监控 region 是否需要进行负载均衡,故障转移和 region 的拆分。通过启动多个后台线程监控实现上述功能:
①LoadBalancer 负载均衡器 周期性监控 region 分布在 regionServer 上面是否均衡,由参数 hbase.balancer.period 控制周期时间,默认 5 分钟。 ②CatalogJanitor 元数据管理器定期检查和清理 hbase:meta 中的数据。meta 表内容在进阶中介绍。 ③MasterProcWAL master 预写日志处理器 把 master 需要执行的任务记录到预写日志 WAL 中,如果 master 宕机,让 backupMaster读取日志继续干。2)Region Server Region Server 实现类为 HRegionServer,主要作用如下:
(1)负责数据 cell 的处理,例如写入数据 put,查询数据 get 等 (2)拆分合并 region 的实际执行者,有 master 监控,有 regionServer 执行。3)Zookeeper
HBase 通过 Zookeeper 来做 master 的高可用、记录 RegionServer 的部署信息、并且存储有 meta 表的位置信息。 HBase 对于数据的读写操作时直接访问 Zookeeper 的,在 2.3 版本推出 Master Registry模式,客户端可以直接访问 master。使用此功能,会加大对 master 的压力,减轻对 Zookeeper的压力。4)HDFS
HDFS 为 Hbase 提供最终的底层数据存储服务,同时为 HBase 提供高容错的支持。
附:根据自己的集群进行适当改变,本文用的集群是hadoop102,103,104
[atguigu@hadoop102 software]$ tar -zxvf hbase-2.4.11-bin.tar.gz -C
/opt/module/
[atguigu@hadoop102 software]$ mv /opt/module/hbase-2.4.11
/opt/module/hbase 2)配置环境变量 [atguigu@hadoop102 ~]$ sudo vim /etc/profile.d/my_env.sh 添加如下代码:
#HBASE_HOME
export HBASE_HOME=/opt/module/hbase
export PATH=$PATH:$HBASE_HOME/bin 3)使用 source 让配置的环境变量生效 [atguigu@hadoop102 module]$ source /etc/profile.d/my_env.sh export HBASE_MANAGES_ZK=false 2)hbase-site.xml 修改内容:
hbase.zookeeper.quorum hadoop102,hadoop103,hadoop104 The directory shared by RegionServers.
hbase.rootdir hdfs://hadoop102:8020/hbase The directory shared by RegionServers. hbase.cluster.distributed true
3)regionservers hadoop102
hadoop103
hadoop104 4)解决 HBase 和 Hadoop 的 log4j 兼容性问题,修改 HBase 的 jar 包,使用 Hadoop 的 jar 包 [atguigu@hadoop102 hbase]$ mv /opt/module/hbase/lib/client-facingthirdparty/slf4j-
reload4j-1.7.33.jar /opt/module/hbase/lib/clientfacing-thirdparty/slf4j-reload4j-
1.7.33.jar.bak [atguigu@hadoop102 module]$ xsync hbase/ [atguigu@hadoop102 hbase]$ bin/hbase-daemon.sh start master
[atguigu@hadoop102 hbase]$ bin/hbase-daemon.sh start regionserver 2)群启 [atguigu@hadoop102 hbase]$ bin/start-hbase.sh 3)对应的停止服务 [atguigu@hadoop102 hbase]$ bin/stop-hbase.sh 启动成功后,可以通过“host:port”的方式来访问 HBase 管理页面,例如:http://hadoop102:16010
上一篇:广义表的存储结构及其基本运算
下一篇:Git 分支管理及规范