HBASE知识点

HBASE是什么?

  • 高可靠、高性能、面向列、可伸缩、实时读写的分布式数据库。
  • 利用HDFS作为其文件存储系统,利用MapReduce来处理HBase中的海量数据。利用Zookeeper作为其分布式协同服务。
  • 用于存储非结构化和半结构化的松散数据。

HBase数据模型

  • RowKey: 唯一标识一行记录,按字典顺序排序,RowKey只能存储64K的字节数据。

字典顺序存储,在合理的rowkey设计情况下,范围查询很快。

  • Column Family列族:
    -- HBASE中每个列都归属于某个列族,列族必须作为表模式定义的一部分先给出。
    -- 列名以列族作为前缀,每个列族都可以有多个列成员(column),新的列族成员可以随后按需动态加入。
    -- 权限控制、存储以及调优都是在列族层面进行的。
    -- HBase把同一列族里面的数据存储在同一目录下,由几个文件保存。
  • TimeStamp:
    -- 在HBase每个cell存储单元对同一份数据有多个版本,更加唯一的时间戳来区分每个版本之间的诧异,不同版本的数据安装时间大圩排序,最新的数据版本排在最前面。
    -- 时间戳类型是64位整型。
    -- 时间错可以由HBASE在数据写入时自动赋值,此时时间戳是精确到毫秒的当前系统时间。
    -- 时间戳也可以由用户显示赋值,如果应用程序要避免数据版本冲突,就必须自己生产具有唯一性的时间戳。
  • Cell单元格
    -- 有行和列的坐标交叉决定。
    -- 单元格室友版本的。
    -- 单元格的内容是未解析的字节数组:{rowkey,column(=family+qualifier),version}唯一确定的单元
    -- cell中的数据是没有类型的,全部是字节数组形式存储的。

HBase架构


Client

访问Hbase的接口并维护Cache加快对Hbase的访问。

Zookeeper

保证集群中只有一个活跃的Master。存储所有Region的寻址信息。实时监控Region的上线、下线信息,并实时通知Master。存储Hbase的schema和table元数据。

HMaster

为RegionServer分配Region,负责RegionServer的负责均衡。发现失效的RegionServer并重新分配其下的Region,管理用户对Table的CRUD。

HRegionServer

负责维护HMaster分配给他的Region,处理这些Region的IO请求。当Region变大到一个阈值后,RegionServer会进行Region拆分,并告知Master节点,由Master协调拆分后的Region进行迁移。

HRegion

HBase自动把表水平划分成多个Region,每个Region会保存一个表里面某段连续的数据(类似MYSQL表的横向拆分),每个表最开始只有一个Region,随着数据不断插入,Region不断增大,当增大到一个阈值时,Region就会才分成两个新的Region(裂变)。当Table中的行不断增多,就会有越来越多的Region,这样一张完整的表被保存在多个RegionServer上。

Store的MemStore和StoreFile

一个Region有多个Store组成,一个Store对应一个列族。Store报货位于内存中的Memstore和位于磁盘中的StoreFile。

写操作先写入Memstore,当Memstore中的数据打到某个阈值,HRegionServer会启动FlashCache进行进行写入StoreFile,每次写入形成单独的StoreFile。当StoreFile文件数量增长到一定的阈值后,系统会进行合并,在合并过程中会进行版本合并和删除工作(写操作的时候都是append操作,不会有更新和删除动作,所以速度很快),形成更大的StoreFile。当一个Region所有的StoreFile的大小和数量超过一定的阈值后,会把所有的Region分隔成两个,并由HMaster分配到相应的RegionServer服务器,实现负载均衡

读操作先在Memstore找,找不到去blockCache找,找不到再到StoreFile找。

blockCache是Hbase的读缓存,HBase采用最近最少访问策略来管理。

HLog

在HBase写操作时会先写HLog,然后再往Memstore写。HLog先写到内存,然后每秒进行一次持久化。在写入Memstore后,持久化到StoreFile之前如果HRegionServer挂掉了,则通过HLog进行数据恢复。如果HLog持久化之前挂掉了,那么这一秒的数据将丢失。

HFILE

StoreFile存储在HDFS中的文件名称。

写操作

  1. 访问ZK得到元数据表地址。
  2. 访问RegionServer找到列族Store;
  3. 往Store的MemStore写数据(先写入HLog,再写入MemStore)。
  4. MemStore在数据快满或满64M的时候进行持久化到StoreFile。

读操作

  1. 访问ZK得到元数据表地址。
  2. 访问RegionServer找到列族Store。
  3. 从MemStore读数据,如果MemStore中没有就从blockCache(读缓存)读。
  4. blockCache没有则从磁盘读取,如果读取到则返回并缓存到blockCache。
相关推荐
长不大的大灰狼2 天前
Hbase要点简记
hbase
2301_786964362 天前
3、练习常用的HBase Shell命令+HBase 常用的Java API 及应用实例
java·大数据·数据库·分布式·hbase
霍金的微笑3 天前
HBase
大数据·数据库·hbase
SparkSql4 天前
HBase批量写入优化
大数据·数据库·hbase
goTsHgo4 天前
HBase 的二级索引和配置实现
大数据·数据库·hbase
我的K84096 天前
解决hbase和hadoop的log4j依赖冲突的警告
数据库·hadoop·hbase
goTsHgo6 天前
HBase 性能优化 详解
数据库·性能优化·hbase
goTsHgo6 天前
HBase 的 MemStore 详解
大数据·数据库·hbase
无奈ieq8 天前
HBase DML操作代码汇总(表格数据的CRUD操作)
大数据·数据库·hbase
吹老师个人app编程教学8 天前
hbase之布隆过滤器
大数据·数据库·hbase