HBase个人学习笔记

WHAT

HBase是一个构建在HDFS上的 分布式列存储系统;从逻辑上讲,HBase将数据按表、行和列进行存储,他是一个分布式的稀疏的持久化存储的多维度排序表;
如同mysql数据是在linux文件系统上,HBase也是数据写入在HDFS文件系统;

学习HBase之前,先来介绍一下行存储列存储

``行存储``和``列存储``

其中,列式存储的数据库中,要想查询某一行的数据信息是很困难的。行、列存储需要有各自的应用场景。查询单个一行的数据还是用行式数据库,而做大数据分析或者存储时,因为不再考虑单独某一条数据,更适合列存储。


HBase特点:

  • 良好的扩展性
  • 读和写的强一致性
  • 高可靠性
  • 与MapReduce良好的集成

HBase数据类型:
在HBase中,一行数据是由行键(RowKey)作为键,包含多个 列族(Family),列族是由具有同时访问特性的多个列(Qualifer)组成的。数据可以有多版本的,由时间戳(TimeStamp)索引。

HBase一行的数据如下图:


HBase一行的数据

HBase数据模型特点:

  • 大:一个表可以有数十亿行,上百万列
  • 面向列:面向列(族)的存储,列(族)独立检索
  • 稀疏:对于空的列,并不占用存储空间,表可以设计的非常稀疏
  • 数据版本: 每个单元的数据可以有多个版本
  • 数据类型单一:HBase中的数据都是字节,没有类型

HBase物理模型:

Table中的所有行都按照RowKey的字典序排列;
Table在行的方向上分割为多个Region
Region是HBase中分布式存储和负载均衡的最小单元,不同的Region分布在不同的RegionServer上;

Region 和 RegionServer
Region虽然是分布式存储的最小单元,但并不是存储的最小单元。

Region由一个或多个Store组成,每个Store保存一个columns family,每个Store又由一个MemStore和0至多个StoreFile组成;MemStore存储在内存中,StoreFile存储在HDFS上

Region组成

HBase架构:

所有数据都是写到HDFS上的,RegionServer上引入了很多Region
Region是一个大table中的某一个片段, RegionServer主要负责数据的读和写。
RegionServer启动后会在zookeeper上建立一个节点,以RegionServer名字命名。Hmaster可以通过zookepper看有哪些节点,一旦RegionServer挂了,就会立刻知道。挂掉的RegionServer上的Region就会被从新分配其他的RegionServer
Hmaster负责管理这些RegionServer,这些Region如何分配,所有增删改查都是ClientHmaster进行请求,zookeeper负责大量协调、一致性的服务。

HBase架构

关键问题:HBase上的数据是存在HDFS的,但HDFS数据是不支持在线的update,而HBase却支持update?
HBase所有的update都会认为是写,只是时间戳会更加新,而对于原来的数据时间戳都是老的,HBase并没有修改,还是写,会产生新的HDFS文件。HBase读的时候,会从HDFS整合,优先返回最新时间戳的数据。定期HBase会把这些很多时间戳的文件进行合并,避免了数据特别多。

WHERE

  • 网页库(360搜索)
  • 商品库(淘宝搜索)
  • 云存储服务(小米)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容