没有合适的资源?快使用搜索试试~ 我知道了~
首页搭建HBase完全分布式数据库
资源详情
资源评论
资源推荐

资源由 www.eimhe.com 美河学习在线收集分享
1
Hbase 分布式数据库
一、Hbase 数据库概述;
二、Hbase 体系结构;
三、Hbase 数据库模型;
四、总结 Hbase 整体特点;
五、案例:搭建 Hbase 分布式数据库系统;
一、Hbase 数据库概述;
概述:Hbase 是一个基于 HDFS 的面向列的分布式数据库,源于 Google 的 BigTable 基于 GFS
进行分布式数据存储一样,前文提到,Hbase 是基于流式数据访问,对于第时间延迟的数据
访问并不适合在 HDFS 上运行,所以需要实时性的随机访问超大规模的数据集,使用 Hbase
则是更好的选择;
作用:Hbase 作为典型的非关系型数据库,Nosql 数据库主要分为以下几类:
基于键值对存储的类型;
基于文档存储的类型;
基于列存储的类型;
基于图形数据存储的类型;
在 Nosql 领域中,Hbase 本身不是最优秀的,但得益于与 hadoop 的整合,为其带来了强大
的扩展空间。Hbase 本质只有插入操作,更新删除等操作都是通过插入操作来完成,这是由
于底层 HDFS 流式访问(一次写入,多次读取)决定的,每次插入数据时,数据会带有“时
间戳”的标记,形成多个版本,Hbase 对于一个数据会保留其固定的版本数量,如果在查询
时,也是显示出距离当前时间最近的一个新版本;
二、Hbase 体系结构;
体系结构:

资源由 www.eimhe.com 美河学习在线收集分享
2
架构分析:Hbase 体系结构由单个 HMaster 服务器和多个 HRegion Server 服务器组成,而所
有这些服务器是通过 ZooKeeper 来进行协调并处理各个服务器运行期间可能遇见的问题;
组件分析:
HStore:多个 HStore 组成一个 HRegion,本身由两部分组成:Memstore 和 Storefile。首
先用户写入的数据存放到 Memstore 中,当 Memstore 满了后刷入 Storefile;
HRegion:由多个 HStore 组成,Hbase 使用表存储数据集,表由行和列组成,但与传统
关系型数据库不同的是,当表的大小超过设定的值时,Hbase 会自动将表划分为不同的
区域 HRegion(此操作也称之为 HRegion 分裂),它是 Hbase 集群上分布式存储和负载
均衡的最小单位,这一点和 HDFS 中文件与文件块存储的概念类似;
Hlog:存储数据日志,到达 HRegion 上的写操作首先被追加到日志中,然后才被加载到
Memstore,主要功能为故障修复,当某台 HRegionServer 发生故障,新的 HRegionServer
在加载 HRegion 的时候可以通过 Hlog 对数据进行恢复;
HRegionServer:由多个 HRegion 组成,在整个集群中可能存在多个节点,每个节点只能
运行一个 HRegionServer,负责对 HDFS 中读写数据和管理 HRegion 和 Hlog;

资源由 www.eimhe.com 美河学习在线收集分享
3
HMaster:每台 HRegionServer 都会与 HMaster 进行通信,HMaster 的主要任务就是告诉
HRegionServer 它需要维护哪些 HRegion,具体功能如下:
1.管理用户对表的增删改查操作;
2.管理 HRegionServer 的负载均衡,动态调整 HRegion 分布;
3.在 HRegion 分裂后,负责新的 HRegion 的分配;
4.在 HRegionServer 停机后,负责失效 HRegionServer 上的 HRegion 的迁移;
ZooKeeper:存储的是 Hbase 中的 ROOT 表(根数据表)和 META 表(元数据表),元数
据表保存普通用户表的 HRegion 标识符信息, 标识符格式为:表名+开始主键+唯一 ID。
随着 HRegion 的分裂,标识符信息也会发生变化,分成多个 HRegion 后,需要由一个根
数据表来贯穿多个元数据表;
此外,ZooKeeper 还负责 HRegionServer 故障时,通知 HMaster 进行 HRegion 迁移;若
HMaster 出现故障,ZooKeeper 负责恢复 HMaster,并且保证有且只有一个 HMaster 正
在运行;
Client:客户端访问 Hbase 的单位,访问时,首先访问 Zookeeper--ROOT--META--table;
三、Hbase 数据库模型;
1.数据模型:
表(table): 不存储值为 null 的数据,索引是行关键字、列关键字、时间戳;
行关键字(row key): 行的主键,唯一标识一行数据;
列族(Colume Family): 行中的列被分为“列族”,同一个列族的所有成员具有相同的列族
前缀,一个表的列族必须在创建表时预先定义,格式(列名:修饰符);
列关键字(Colume key): 列键,格式为:<family>:<qualifer>,family 是列族名;qualifer 是
列族修饰符,表示列族中的一个成员;
存储单元格(Cell): 在 Hbase 中,值作为一个单元保存在单元格中,要定位一个单元,需
要满足“行键+列键+时间戳”三个要素;
时间戳(Timestamp): 插入单元格时的时间戳,默认作为单元格的版本号;
2.存储方式:
关系型数据库:

资源由 www.eimhe.com 美河学习在线收集分享
4
主键设置为 name 列,查找时根据学生名字可以很容易的实现查找,那么请思考以下问题;
如果现在新增加一门课程,如何在不改变表结构的情况下进行保存新课程的成绩呢?
如果 tom 同学数学成绩参加了补考,如何记录其同学的两次数学成绩?
如若 tom 同学数学没有成绩,那么表中值为 null,即使为空,也会占用存储空间;
HBase 数据库:
在不同时间插入不同数据时,会生成时间戳,并且在列族内生成数据记录;
在 HBase 数据库实际存储时,其表内空值不计入存储空间内;
四、总结 Hbase 整体特点:
HBase 就是这样一个基于列模式的映射数据库,它只能表示简单的键值的映射关系。与关系
型数据库相比,它有如下特点:
数据类型: HBase 只有简单的字符串类型,它只保存字符串。而关系型数据库有丰富
的类型选择和存储方式;
数据操作:HBase 只有简单的插入、查询、删除、清空等操作,表和表之间是分离的,
没有复杂的表和表之间的关系,所以不能、也没有必要实现表和表之间的关联操作。而
关系型数据库有多种连接操作;
存储模式:HBase 是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分
离的。关系型数据库是基于表格结构和行模式存储的;
数据维护:HBase 的更新操作实际上是插入了新的数据,它的旧版本依然会保留,而不
是关系型数据库的替换修改;
可伸缩性:HBase 这类分布式数据库就是为了这个目的而开发出来的,所以它能够轻松
地增加或减少硬件数量,并且对错误的兼容性比较高。而关系型数据库通常需要增加中
间层才能实现类似的功能;
五、案例:搭建 Hbase 完全分布式数据库系统;
案例环境:
系统类型
IP 地址
主机名、角色
所需软件
Centos 7.4 1708
64bit
192.168.100.101
master
hadoop:namenode
hbase:HMaster
hadoop-2.7.6.tar.gz
jdk-8u171-linux-x64.tar.gz
hbase-2.0.1-bin.tar.gz
Centos 7.4 1708
64bit
192.168.100.102
slave1
hadoop:datanode
hbase:HRegionServer
hadoop-2.7.6.tar.gz
jdk-8u171-linux-x64.tar.gz
hbase-2.0.1-bin.tar.gz
剩余15页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0