Hbase概述|青训营笔记

158 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第2天

HBase是什么

HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。

HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。

它是Hadoop的生态系统,提供对数据的随机实时读/写访问,是Hadoop文件系统的一部分。

人们可以直接或通过HBase的存储HDFS数据。使用HBase在HDFS读取消费/随机访问数据。 HBase在Hadoop的文件系统之上,并提供了读写访问。

image.png

HBase的架构

HBase有三个主要组成部分:客户端库,主服务器和区域服务器。区域服务器可以按要求添加或删除。

image.png

HBase 写流程

  • 数据先写入 WAL 持久化,用于宕机时恢复内存里丢失的数据;
  • 再写入内存态 MemStore,以一种跳表(SkipList)数据结构提供有序的数据和高效的随机读写;
  • 当满足特定条件时(比如内存中数据过多,或间隔时间过长),MemStore 数据以 HFile 格式写入 HDFS

HBase 读流程

  • 首次读某个 rowkey 时,client 需要从 Zookeeper 获取 hbase:meta 表位于哪个 RegionServer上;
  • 然后访问该 RegionServer 查询 hbase:meta 表该 rowkey 对应 region 所在的 RegionServer B;
  • Client 缓存该位置信息,去 RegionServer B 读取 rowkey;
  • 基于该region内可能存在该 rowkey 的 HFile 和 MemStore 构建一个最小堆,用以全局有序地 scan 数据(具体实现可搜索参考 LSM tree 设计原理)`

HBase 和 HDFS

HDFSHBase
HDFS是适于存储大容量文件的分布式文件系统。HBase是建立在HDFS之上的数据库。
HDFS不支持快速单独记录查找。HBase提供在较大的表快速查找
它提供了高延迟批量处理;没有批处理概念。它提供了数十亿条记录低延迟访问单个行记录(随机存取)。
它提供的数据只能顺序访问。HBase内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找。

引用参考

juejin.cn/post/712681…

www.yiibai.com/hbase\