热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HBase数据模型的概念是什么

本篇内容主要讲解“HBase数据模型的概念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HBa

本篇内容主要讲解“HBase数据模型的概念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HBase数据模型的概念是什么”吧!

简介:

HBase(Hadoop Database):一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价的PC Server上搭建起大规模机构化存储集群。

HBase是一个山寨版本的BigTable,不过它站在Hadoop这个巨人的肩膀上!

HBase是一个非关系型数据库(NoSQL数据库)

 NoSQL关系型数据库
数据模型适合结构化、非结构化和半结构化的数据适用于结构化的数据
扩展性易于扩展,如添加节点以及扩容            较难
语言不同数据库操作不同标准SQL或类SQL
模式Schema随时添加字段必须预先定义好,不方便扩展

HBase以表的形式存储数据

表的特点:

  • 大:一个表可以有上亿行,上百万列

  • 面向列:面向列(族)的存储和权限控制,列(族)独立检索

  • 稀疏:对于为null的列,并不占用存储空间,因此,表可以设计的非常疏松

下图是Hadoop生态系统:

HBase数据模型的概念是什么

HBase位于结构化存储层;

Hadoop HDFS为HBase提供了高可靠性的底层存储支持

Hadoop MapReduce为HBase提供了高性能的计算能力

Zookeeper为HBase提供了稳定服务和failover机制

此为,Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变得非常简单。Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库向HBase中迁移变的非常方便。

数据模型的关键概念:

  • RowKey:用来检索记录的主键。访问HTable中的行,只有三种方式:

    • 通过单个rowkey访问

    • 通过rowkey的range

    • 全表扫描

  • Qualifier:可动态扩展的列,不需要先定义到HTable schema中,类似于关系型数据库中的列(Column)

  • Famliy:列族,相当于一个Family下面有多个Qualifier。TTL(留存期),Versions(最大版本数),Comperssion(压缩方式)等待都是设置在这一级。

  • Version/Timestamp:由单一rowkey对应family:qualifier下的值可以允许有多个版本,由毫秒级的时间戳来区分,也可以制定范围取任意版本对应的数据

  • Cell:存储的最小单位。由rowkey+family:qualifier+timestamp三个维度唯一确定取出value

  • Namespace:表命名空间,不指定则为默认“default”空间

HTable系统表:

hbase:namespace:存储htable的各表的命名空间

hbase:meta:存储htable的各个region起止rowkey信息,位置信息等

hbase:ad:记录一些表操作权限的信息,支持到qualifier的ACL,权限分类READ('R'),WRITE('W'),EXEC('X'),CREATE('C'),ADMIN('A') 

HBase存储框架:

HBase数据模型的概念是什么

  • Zookeeper:HBase集群依赖该组件

    • Zookeeper Quorum存储-ROOT-表地址、HMaster地址

    • HRegionServer把自己以Ephedral方式注册到Zookeeper中,HMaster随时感知各个HregionServer的健康情况

  • HMaster:主要负责Table和Region的管理工作

    • 管理用户对表的增删查改操作

    • 管理HRegionServer的负载均衡,调整Region分布

    • Region Split后,负责新Region的分布

    • 在HRegionServer停机后,负责失效HRegionServer上Region迁移

  • HRegionServer:最核心的模块,主要负责相应用户I/O请求,向HDFS文件系统中读写数据

    • HRegionServer管理一些列HRegion对象

    • 每个HRegion对应Table中一个Region,HRegion由多个HStore组成

    • 每个HStore对应Table中一个Column Family的存储

    • Column Family就是一个集中的存储单元,故将具有相同IO特性的Column放在一个Column Family会更高效

  • Region:当Table随着记录数不断增加而变大后,会逐渐分裂成多份splits,成为regions,一个region由[startkey,endkey)表示,不同的region会被Master分配给相应的RegionServer进行管理

  • HStore:HBase存储的核心。由MemStore和StoreFile组成,MemStore是Sorted Memory Buffer

  • HLog:在分布式系统环境中,无法避免系统出错或者宕机,一旦HRegionServer意外退出,MemStore中的内存数据就会丢失,为防止数据丢失,引入了HLog。

    每次用户操作写入Memstore的同时,也会写一份数据到HLog文件,HLog文件定期会滚动出新,并删除旧的文件(已持久化到StoreFile中的数据)。当HRegionServer意外终止后,HMaster会通过Zookeeper感知,HMaster首先处理遗留的HLog文件,将不同region的log数据拆分,分别放到相应region目录下,然后再将失效的region重新分配,领取到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复。

  • HDFS:HDFS是一个分布式文件系统。它通过将一个大的文件划分成一个个固定大小的Block来实现分布式存储。每一个Block的默认大小为128MB。每一个Block都存在多个备份,并且被部署在不同的数据节点上,来保障数据的安全。目前,HBase的所有底层数据都以文件的形式交由HDFS来存储。HBase一侧本身不固化保存数据信息

到此,相信大家对“HBase数据模型的概念是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程笔记网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


推荐阅读
author-avatar
rgx-秀_550
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有