HBase
2020-06-30 23:08:28 0 举报
AI智能生成
HBase
作者其他创作
大纲/内容
基本概念
table
表。一张表包含多行数据
row
行。一行数据包含一个唯一表示rowKey,多个column以及对应的值,row按字典序排序
column
列。分为column family(列族)和qualifier(列名),两者之间用冒号连接
timestamp
时间戳。每个cell在写入HBase的时候都会默认分配一个时间戳作为该cell的版本,当然,用户也可以在写入的时候自带时间戳。HBase支持多版本特性,即同一rowkey、column下可以有多个value存在,这些value使用timestamp作为版本号,版本越大,表示数据越新。
cell
单元格。由五元组(row, column, timestamp, type, value)组成的结构,其中type表示Put/Delete这样的操作类型,timestamp代表这个cell的版本。这个结构在数据库中实际是以KV结构存储的,其中(row, column, timestamp, type)是K,value字段对应KV结构的V。
唯一确定一条结果的表达式 = 行键:列族:列名:版本号( rowkey:column family:column:version)
与关系型数据库对比
基础架构
Master
Master负责维护表结构信息
处理用户的各种管理请求,包括建表、修改表、权限操作、切分表、合并数据分片以及Compaction等。
管理集群中所有RegionServer,包括RegionServer中Region的负载均衡、RegionServer的宕机恢复以及Region的迁移等
清理过期日志以及文件,Master会每隔一段时间检查HDFS中HLog是否过期、HFile是否已经被删除,并在过期之后将其删除
RegionServer
WAL(HLog)
BlockCache
Region
Store
MemStore
MemStore存在的意义
顺序存储提高效率
优化数据的存储
HFile
客户端获取数据由客户端直连RegionServer的, 所以你会发现Master挂掉之后你依然可以查询数据, 但就是不能新建表。
客户端每次与HBase连接, 其实都是先与ZooKeeper通信, 查询出哪个RegionServer需要连接, 然后再连接RegionServer。
ZooKeeper
实现Master高可用
管理系统核心元数据
参与RegionServer宕机恢复
实现分布式表锁
HDFS
如果关掉ZooKeeper,你就不能读取数据,因为你读取数据所需要的元数据表hbase:meta的位置存储在ZooKeeper上。
HBase写流程
Client先通过ZooKeeper的/hbase/meta-region-server节点查询到哪台RegionServer上有hbase:meta表。
Client连接含有hbase:meta表的RegionServer。hbase:meta表存储了所有Region的行键范围信息, 通过这个表就可以查询出你要写入的rowkey属于哪个Region的范围里面, 以及这个Region又是属于哪个RegionServer。
Client获取到RegionServer地址后就会对RegionServer发起写请求,RegionServer接受数据写入MemStore内存。
当MemStore的大小达到一定的值后,flush到HFile并存储到HDFS。
最后Client会把meta信息缓存起来,下次操作就不需要进行以上加载hbase:meta的步骤了。
HBase读流程
Client先通过ZooKeeper的/hbase/meta-region-server节点查询到哪台RegionServer上有hbase:meta表。
Client连接含有hbase:meta表的RegionServer。hbase:meta表存储了所有Region的行键范围信息, 通过这个表就可以查询出你要写入的rowkey属于哪个Region的范围里面, 以及这个Region又是属于哪个RegionServer。
Client获取到RegionServer地址后就会对RegionServer发起读请求。
当RegionServer收到Client的读请求后,先扫描自己的Memstore,再扫描BlockCache(加速读内容缓存区)如果还没找到则到HFile中读取数据,然后将数据返回给Client。
最后Client会把meta信息缓存起来,下次操作就不需要进行以上加载hbase:meta的步骤了。
HBase模块间协作
HBase启动
HMaster启动,注册到Zookeeper,等待RegionServer汇报
RegionServer注册到Zookeeper,并向HMaster汇报
对各个RegionServer(包括失效的)的数据进行整理,分配Region和meta信息
RegionServer失效
HMaster将失效RegionServer上的Region分配到其他节点
HMaster更新hbase:meta表以保证数据正常访问
HMaster失效
处于Backup状态的其他HMaster节点推选出一个转为Active状态
数据能正常读写,但是不能创建删除表,也不能更改表结构
关注公众号:放开我我还能学,获取最新文章和资源
0 条评论
下一页