必备干货 | Hbase简介以及数据结构和表详解

喜欢而已 提交于 2021-01-30 01:03:08

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷先生的新书《分布式机器学习实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】

前言

Hbase经常用来存储实时数据,比如Storm/Flink/Spark-Streaming消费用户行为日志数据进行处理后存储到Hbase,通过Hbase的API也能够毫秒级别的实时查询。如果是对Hbase做非实时的离线数据统计,我们可以通过Hive建一个到Hbase的映射表,然后写Hive SQL来对Hbase的数据进行统计分析。并且这种方式可以方便的和其它的Hive表做关联查询,做更复杂的统计。所以从交互形势上Hbase满足了实时和离线的应用场景,在互联网公司应用的也非常普遍。

Hbase原理和功能介绍

HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的存储模式。

1. Hbase特性

1)HBase构建在HDFS之上
HBase是一个构建在HDFS上的分布式列存储系统,可以通过Hive的方式来查询Hbase数据。
2)HBase是key/value系统
HBase是基于Google BigTable模型开发的,典型的key/value系统。
3)HBase用于海量结构化数据存储
HBase是Apache Hadoop生态系统中的重要一员,主要用于海量结构化数据存储。
4)分布式存储
HBase将数据按照表、行和列进行存储。与Hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
5)Hbase表和列都大
Hbase表的特点大:一个表可以有数十亿行,上百万列。
6)无模式
每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列,这是Mysql关系数据库做不到的。
7)面向列
面向列(族)的存储和权限控制,列(族)独立检索; 稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏。
8)数据多版本
每个单元中的数据可以有多个版本,默认3个版本,是单元格插入时的时间戳。














2. Hbase的架构核心组件

Hbase的架构核心组件有Client、Hmaster、HRegionServer、ZooKeeper集群是协调系统等,最核心的是Hmaster、HRegionServer,Hmaster是Hbase的主节点,HRegionServer是从节点。Hbase必须依赖于ZooKeeper集群。
1)Client
访问HBase的接口,并维护Cache来加快对HBase的访问,比如Region的位置信息。
2)Hmaster
(1)管理HRegionServer,实现其负载均衡;
(2)管理和分配HRegion,比如在HRegion split时分配新的HRegion;在HRegionServer退出时迁移其内的HRegion到其他HRegionServer上;
(3)实现DDL操作(Data Definition Language,namespace和table的增删改,column familiy的增删改等);
(4)管理namespace和table的元数据(实际存储在HDFS上);
(5)权限控制(ACL)。
3)HRegionServer
(1)存放和管理本地HRegion;
(2)读写HDFS,管理Table中的数据;
(3)Client直接通过HRegionServer读写数据(从HMaster中获取元数据,找到RowKey所在的HRegion/HRegionServer后)。
4)ZooKeeper集群是协调系统
(1)存放整个HBase集群的元数据以及集群的状态信息;
(2)实现HMaster主从节点的failover;
HBase Client通过RPC方式和HMaster、HRegionServer通信,一个HRegionServer可以存放1000个HRegion,底层Table数据存储于HDFS中,而HRegion所处理的数据尽量和数据所在的DataNode在一起,实现数据的本地化。















Hbase数据结构和表详解

Hbase数据表由行键、列族组成,行键可以认为是数据库的主键,一个列族下面可以有多个列,并且列可以动态的增加,这是Hbase的优势,本身就是一个列式存储的数据库,这点和Mysql关系数据库不一样,Mysql一旦列固定了,就不能动态增加了。这点Hbase非常灵活,可以根据业务需求动态创建一个列。下面我看下表结构都有哪组成:
1.行键Row Key
主键是用来检索记录的主键,访问Hbase Table中的行。
2.列族Column Family
Table在水平方向有一个或者多个ColumnFamily组成,一个ColumnFamily中可以由任意多个Column组成,即ColumnFamily支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。
3.列column
由Hbase中的列族ColumnFamily + 列的名称(cell)组成列。
4.单元格cell
Hbase中通过row和columns确定的列,一个存储单元称为cell。
5.版本version
每个 cell都保存着同一份数据的多个版本,版本通过时间戳来索引,默认三个版本。
6.下面是一个Hbase数据结构表实例,如表3.1所示:
在这里插入图片描述











表3.1 Hbase表结构说明

说明:例子中表中有一条数据,rowkey主键是kc61800001,两个列族,一个是name名称,它只有一个列kcname,另一个列族kcsaleinfo有两个列price和issale

总结

此文章还有对应的配套视频,其它更多精彩文章请大家下载充电了么app,可获取千万免费好课和文章,配套教材请看陈敬雷新书:《分布式机器学习实战》(人工智能科学与技术丛书)

【新书介绍】
《分布式机器学习实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】
新书特色:深入浅出,逐步讲解分布式机器学习的框架及应用配套个性化推荐算法系统、人脸识别、对话机器人等实战项目

【新书介绍视频】
分布式机器学习实战(人工智能科学与技术丛书)新书【陈敬雷】

视频特色:重点对新书进行介绍,最新前沿技术热点剖析,技术职业规划建议!听完此课你对人工智能领域将有一个崭新的技术视野!职业发展也将有更加清晰的认识!

【精品课程】
《分布式机器学习实战》大数据人工智能AI专家级精品课程

【免费体验视频】:

人工智能百万年薪成长路线/从Python到最新热点技术

从Python编程零基础小白入门到人工智能高级实战系列课

视频特色: 本系列专家级精品课有对应的配套书籍《分布式机器学习实战》,精品课和书籍可以互补式学习,彼此相互补充,可以大大提高学习效率。课程核心内容包括互联网公司大数据和人工智能那些事、大数据算法系统架构、大数据基础、Python编程、Java编程、Scala编程、Docker容器、Mahout分布式机器学习平台、Spark分布式机器学习平台、分布式深度学习框架和神经网络算法、自然语言处理算法、工业级完整系统实战(推荐算法系统实战、人脸识别实战、对话机器人实战)、就业/面试技巧/职业生涯规划/职业晋升指导等内容。

【充电了么公司介绍】

充电了么App是专注上班族职业培训充电学习的在线教育平台。

专注工作职业技能提升和学习,提高工作效率,带来经济效益!今天你充电了么?

充电了么App官网下载地址
https://a.app.qq.com/o/simple.jsp?pkgname=com.charged.app

功能特色:

【全行业职位】 - 专注职场上班族职业技能提升

【牛人课堂】 - 学习牛人的工作经验

【精品阅读】 - 技能文章兴趣阅读

【精短课程】 - 高效学习知识

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!