管理培训搜索
18318889481

IT
| 网络安全管理师

信息安全工程 网络蠕虫

| 系统集成项目管理工程师

每日一练 报名考试 考试大纲 知识考点 综合知识 直播动态 考试用书 政策法规 系统集成产学研实践 资质认定

| 金融科技师

职业前景 CGFT专题 政策动态

| 网络工程师

考试动态 每日一练 学习笔录 技术考点 知识考点 直播动态 考试用书 技术与应用 网络工程 网络技术入门 考试大纲

| 计算机学苑

数字媒体艺术 计算机科学与技术 软考报名 信息处理技术员 行业资讯 考试大纲 直播动态 网络安全 网络管理 通信技术 OpenHarmony 计算机与网络 企业信息化 软件工程 Linux 嵌入式Linux开发基础(ARMAtom) 离散数学 操作系统 C++程序设计 Java 语言程序设计 智能感知与无人系统 机器学习算法与人工智能 Python 软考资讯

| 计算机应用水平考试

考试动态 报考指南 全国计算机应用水平考试 中国计算机等级考试 江西计算机等级考试 广东计算机等级考试 江苏计算机等级考试 贵州计算机等级考试 湖南计算机等级考试 福建计算机等级考试 河南计算机等级考试 广西计算机等级考试 山西计算机等级考试 吉林计算机等级考试 江苏计算机等级考试 湖北计算机等级考试 北京计算机等级考试 安徽计算机等级考试 宁夏计算机等级考试 浙江计算机等级考试 陕西计算机等级考试 湖北计算机等级考试 河北计算机等级考试 天津计算机等级考试

| 电子商务平台

互联网营销师 电子商务师 农村电商

| 计算机技术与软件专业技术资格(水平)考试
| 信息系统项目管理师

学习笔记 考试动态 直播动态 考试用书 考试大纲 信息系统项目管理

| 信息系统监理师

IT实务 直播预告 信息系统监理师综合 答疑QA 监理资质

| 信息处理技术员

考试动态 直播动态 考试用书 知识分享 技术百科

| Hbase概述当前您所在的位置:首页 > IT > 计算机学苑 > 计算机科学与技术

HBase 是基于 Apache Hadoop 的面向列的 NoSQL 数据库,是 Google 的 BigTable 的开源实现。

HBase 是一个针对半结构化数据的开源的、多版本的、可伸缩的、高可靠的、高性能的、分布式的和面向列的动态模式数据库。

HBase 和传统关系数据库不同,它采用了 BigTable 的数据模型增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成

HBase 提供了对大规模数据的随机、实时读写访问。

HBase 的目标是存储并处理大型的数据,也就是仅用普通的硬件配置,就能够处理上千亿的行和几百万的列所组成的超大型数据库。

Hadoop 是一个高容错、高延时的分布式文件系统和高并发的批处理系统,不适用于提供实时计算,

而 HBase 是可以提供实时计算(占用大量的内存)的分布式数据库,数据被保存在 HDFS (分布式文件系统)上,由 HDFS 保证其高容错性。

HBase 上的数据是以二进制流的形式存储在 HDFS 上的数据块中的,但是,HBase 上的存储数据对于 HDFS 是透明的。

HBase 可以直接使用本地文件系统,也可以使用 Hadoop 的 HDFS。

HBase 中保存的数据可以使用 MapReduce 来处理,它将数据存储和并行计算有机地结合在一起。

HBase 是按列族进行数据存储的。每个列族会包括许多列,并且这些列是经常需要同时处理的属性。也就是说,HBase 把经常需要一起处理的列构成列族一起存放,从而避免了需要对这些列进行重构的操作。

HBase 在充分利用列式存储优势的同时,通过列族减少列连接的需求。

2. HBase列式数据模型简介

2.1 数据模型概述

HBase 是一个稀疏、多维度、有序的映射表。

这张表中每个单元是通过由行键、列族、列限定符和时间戳组成的索引来标识的。

每个单元的值是一个未经解释的二进制数组(byte[]),没有数据类型。当用户在表中存储数据时,每一行都有一个唯一的行键和任意多的列。

表的每一行由一个或多个列族组成,一个列族中可以包含任意多个列。在同一个表模式下,每行所包含的列族是相同的,也就是说,列族的个数与名称都是相同的,但是每一行中的每个列族中列的个数可以不同,如图 1 所示。

图 1 HBase 数据模型示意

HBase 中的同一个列族里面的数据存储在一起,列族支持动态扩展,可以随时添加新的列,无须提前定义列的数量。

所以,尽管表中的每一行会拥有相同的列族,但是可能具有截然不同的列。正因为如此,对于整个映射表的每行数据而言,有些列的值就是空的,所以 HBase 的表是稀疏的。

HBase 执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,原有的版本仍然保留。

用户可以对 HBase 保留的版本数量进行设置。在查询数据库的时候,用户可以选择获取距离某个时间最近的版本,或者一次获取所有版本。

如果查询的时候不提供时间戳,那么系统就会返回离当前时间最近的那一个版本的数据。

HBase 提供了两种数据版本回收方式:一种是保存数据的最后3个版本;另一种是保存最近一段时间内的版本,如最近一个月。

2.2 数据模型的基本概念

HBase 中的数据被存储在表中,具有行和列,是一个多维的映射结构。

1. 表(Table) --> 以前的数据库

HBase采用表来组织数据,表由许多行和列组成,列划分为多个列族。

 

2. 行(Row)

在表里面,每一行代表着一个数据对象。每一行都是由一个行键(Row Key)和一个或者多个列组成的。

行键是行的唯一标识,行键并没有什么特定的数据类型,以二进制的字节来存储,按字母顺序排序。

因为表的行是按照行键顺序来进行存储的,所以行键的设计相当重要。

设计行键的一个重要原则就是相关的行键要存储在接近的位置,例如,设计记录网站的表时,行键需要将域名反转(例如,org.apache.www、org.apache.mail、org.apache.jira),这样的设计能使与 apache 相关的域名在表中存储的位置非常接近。

访问表中的行只有 3 种方式:通过单个行键获取单行数据;通过一个行键的区间来访问给定区间的多行数据;全表扫描。

3. 列族(Column Family) --> 数据库表

在定义 HBase 表的时候需要提前设置好列族,表中所有的列都需要组织在列族里面。

列族一旦确定后,就不能轻易修改,因为它会影响到 HBase 真实的物理存储结构,但是列族中的列限定符及其对应的值可以动态增删。

表中的每一行都有相同的列族,但是不需要每一行的列族里都有一致的列限定符,所以说是一种稀疏的表结构,这样可以在一定程度上避免数据的冗余。

HBase 中的列族是一些列的集合。一个列族的所有列成员都有着相同的前缀,例如,courses:history 和 courses:math 都是列族 courses 的成员。“:”是列族的分隔符,用来区分前缀和列名。

列族必须在表建立的时候声明,列随时可以新建。

每个column family存储在HDFS上的一个单独文件中,空值不会被保存

 

4. 列限定符(Column Qualifier)

列族中的数据通过列限定符来进行映射。列限定符不需要事先定义,也不需要在不同行之间保持一致。列限定符没有特定的数据类型,以二进制字节来存储。

 

5. 列(Column)

列由列族(Column Family)和列限定符(Column Qualifier)联合标识,由“ : ”进行间隔,如 family:qualifiero

6. 单元(Cell)

行键、列族和列限定符一起标识一个单元,存储在单元里的数据称为单元数据,没有特定的数据类型,以二进制字节来存储。

HBase提供基于单元的版本管理功能,版本号默认通过timestamp来标识,并且呈倒序排列;

 

7. 时间戳(Timestamp)1500153456134

默认情况下,每一个单元中的数据插入时都会用时间戳来进行版本标识。 

读取单元数据时,如果时间戳没有被指定,则默认返回最新的数据;

写入新的单元数据时,如果没有设置时间戳,则默认使用当前时间。

每一个列族的单元数据的版本数量都被 HBase 单独维护,默认情况下,HBase 保留 3 个版本数据。 

总结来看 : 

HBASE的一个表 map key --> rowkey val --> 多个列族组成

RowKey:是Byte array,是表中每条记录的“主键”,方便快速查找,Rowkey的设计非常重要

Column Family:列族,拥有一个名称(string),包含一个或者多个相关列 --> map 

Column:属于某一个columnfamily,familyName:columnName,每条记录可动态添加

Version Number:类型为Long,默认值是系统时间戳,可由用户自定义

Value(Cell):Byte array

2.3 概念视图(逻辑视图)

在 HBase 的概念视图中,一张表可以视为一个稀疏、多维的映射关系,通过“行键+列族:列限足符+时间戳”的格式就可以定位特定单元的数据。因为 HBase 的表是稀疏的,因此某些列可以是空白的。

图 2 是 HBase 的概念视图,是一个存储网页信息的表的片段。行键是一个反向 URL,如 www.cnn.com 反向成 com.cnn.www。

反向 URL 的好处就是,可以让来自同一个网站的数据内容都保存在相邻的位置,从而可以提高用户读取该网站的数据的速度。

contents 列族存储了网页的内容;anchor 列族存储了引用这个网页的链接;mime 列族存储了该网页的媒体类型。

 

图 2 给出的 com.cnn.www 网站的概念视图中仅有一行数据,行的唯一标识为“com.cnn.www”,对这行数据的每一次逻辑修改都有一个时间戳关联对应。

表中共有四列:contents:html、anchor:cnnsi.com、anchor:my.look.ca 和 mime:type,每一列以前缀的方式给出其所属的列族。

.4 物理视图

虽然从概念视图层面来看,HBase 的每个表是由许多行组成的,但是在物理存储层面来看,它是采用了基于列的存储方式,而不是像关系型据库那样用基于行的存储方式。这正是 HBase 与关系型数据库的重要区别之一。

图 2 的概念视图在进行物理存储的时候,会存为图 3 中的 3 个片段。也就是说,这个 HBase 表会按照 contents、anchor 和 mime 3 个列族分别存放。属于同一个列族的数据保存在一起,同时,和每个列族一起存放的还包括行键和时间戳。

在图 2 的概念视图中,可以看到许多列是空的,也就是说,这些列上面不存在值。

在物理视图中,这些空的列并不会存储成 null,而是根本不会被存储,从而可以节省大量的存储空间。当请求这些空白的单元的时候,会返回 null 值。

从图 3 可以看出,网页的内容一共有 3 个版本,对应的时间戳分别为 t3、t5 和 t6。

网页被两个页面引用,分别是 my.look.ca 和 cnnsi.com,被引用的时间分别是 t8 和 t9。

网页的媒体类型从 t6 开始为“text/html”。

要定位单元中的数据可以采用“三维坐标”来进行,也就是 [行键,列族:列限定符,时间戳]。

例如,在图 3 中:

[“com.cnn.www”,anchor:cnnsi.com,t9] 对应的单元格中的数据为“CNN”。

[“com.cnn.www”,anchor:my.look.ca, t8] 对应的单兀中的数据为“CNN.com”。

[“com.cnn.www”,mime:type,t6] 对应的单元的数据为“text/html”。

从图 3 可以看出,在 HBase 表的概念视图中,每个行都包含相同的列族,尽管并不是每行都需要在每个列族里都存储数据。

例如,在图 3 的前两行数据中,列族 contents 和列族 mime 的内容为空。后 3 行数据中,列族 anchor 的内容为空。后两行数据中,列族 mime 的内容为空。

总结来看 :

每个column family存储在HDFS上的一个单独文件夹中,空值不会被保存

Key 和 Version number在每个 column family中均有一份

HBase 为每个值维护了多级索引,即:<namespace,key, column family, column name, timestamp>

 

在物理层面上,表格的数据是通过StoreFile来存储的,每个StoreFile相当于一个可序列化的Map,Map的key和value都是可二进制数组

Column Family

是一组Column的组合,在HBase中,Schema的定义主要为Column Family的定义,同大多数nosql数据库一样,HBase也是支持自由定义Schema,但是前提要先定义出具体的Column Family,而在随后的column定义则没有任何约束

其次,HBase的访问权限控制,磁盘及内存统计等功能都是基于Column Family层面完成的

Timestamp

HBase提供基于Cell的版本管理功能,版本号默认通过timestamp来标识,并且呈倒序排列

课程
财会类
税务类
金融类
经管类
认证类
学历类
建工类
健康类
专家
政府专家
财税名家
高校教授
文化传媒
金融科技
金融电子化
企业管理
财政金融
生物医药
诺贝尔奖得主
合规法律
科学技术
银行智库
财会
中国注册会计师
AIA
会计实务
财务经理人
初级会计师
税务实务
中级会计师
中国会计智库
CFO成长营
会计学苑
建工
二级造价工程师
建筑工程资讯
二级建造师
一级造价工程师
监理工程师
消防设施操作员
产教融合
建工学苑
一级建造师
安全工程师
消防工程师
造价工程事务所
BIM工程师
经管
转创人力
中级经济师
二级人力资源管理师
三级人力资源师
人力资源管理师
碳排放管理师
期刊中心
教材参考
军队文职人员
产教融合
劳动关系协调员
初、中级经济考试
企业合规师
初级经济师
企业人力资源管理师
职业指导师
教育
英语学习考试
专升本
成人高等教育
自考中国
自学考试研究所
普通专升本
小自考中心
高等继续教育学院
中外教育
智库与社会服务
高等职业本科
金融
证券从业
基金从业
金融智库
银行从业
转创博学
ICCM
项目
高管培训
国际学历
财经证书
专项课程
企业内训
教育技术产品
高校学科建设服务
教学资源开发
国际合作服务
产业服务
国内院校
海外院校
海外留学
合作院校
观点
政治经济
IT&财务融合
高校教授
文化传媒
金融科技
金融电子化
企业管理
财政金融
生物医药
诺贝尔奖
合规法律
科学技术
银行智库
商业产经
医卫
医卫健康
主管药师
保育员
药卫学苑
心理咨询师
家庭照护员
养老护理员
健康管理师
公共营养师
执业药师
育婴师(员)
主管护师
护士执业
医院招聘
IT
网络安全管理师
系统集成项目管理工程师
金融科技师
网络工程师
计算机学苑
计算机应用水平考试
电子商务平台
计算机技术与软件专业技术资格(水平)考试
信息系统项目管理师
信息系统监理师
信息处理技术员
考研
考研资讯
信息中心
专业硕士
考研公共课
同等学力申硕中心
复试调剂
研究生工作
考研中国
硕士入学考试
考研直播动态
教师
高中教师
考试动态
直播动态
考试报名
教育智库
幼儿教师
小学教师
初中教师
教师中国
教师招聘
中小学教师资格考试
普通话测试
教师企业
校长领导力
社工
社会工作者
技能中国
智库与社会服务
初级社会工作者
中级社会工作者
报考动态
社会工作事务所
职称评审
家庭教育指导师
转创网校APP
18318889481
在线QQ
在线留言
返回首页
返回顶部
留言板
发送