Hbase的读写流程

目录

HBase的存储结构

HBase的读写流程

写数据流程

读数据流程


HBase的存储结构

  • 表中所有行按Rowkey的字典顺序排列,在行的方向上分割为多个Region
  • Region是HBase分布式存储和负载均衡的最小单元,一个RegionServer有多个Region,每个RegionServer维护一个HLog日志
  • Region由Store组成,每个Store保存一个列族,每个Store由一个MemStore和多个StoreFile组成,StoreFile以HFile格式保存在HDFS上

HBase的读写流程

  1. Client从Zookeeper中读取metaRegion所在RegionServer,获取metaRegion的路由信息后,再从metaRegion中定位要读写的Rowkey所关联的Region信息
  2. Client会缓存Region的路由信息,避免每次读写都去访问Zookeeper或metaRegion

写数据流程

  1. Client向RegionServer发送写请求,RegionServer将请求转发给对应的Region,Region中写入的数据,都暂时先缓存在MemStore中,为了保障数据可靠性,会先将数据顺序写入到一个WAL(Write-Ahead-Log)日志文件中,WAL中的数据按时间顺序组织,如果内存中的数据尚未持久化,遇到断电,只需将WAL中的数据回放到Region中即可

  2. 每一个列族在Region内部被抽象为一个Store对象,每一个Store有MemStore来缓存一批最近被写入的数据,在2.0版本中,默认的Flush是将正在写的MemStore中的数据归档为一个不可变的Segment,MemStore由一个可写的ActiveSegment和多个不可写的ImmutableSegment构成

  3. MemStore中的数据先Flush成一个不可写的Segment,多个不可写的Segment可以在内存中进行Compaction,当达到一定阈值后才将内存中的数据持久化为HDFS中的HFile文件

  4. 达到触发条件会进行Compaction,将多个HFile的交错无序状态,变成单个HFile的有序状态,降低读取延时

    小范围的HFile文件合并,称为MinorCompaction

    一个列族中将所有HFile文件合并,称为MajorCompaction,除了文件合并范围不同外,MajorCompaction还会清理过期,版本过旧以及标记删除的数据

  5. 随着Region增大到阈值后,会触发Split操作,将Region一分为二

读数据流程

  1. 定位Rowkey所关联Region,Client发送读取请求到对应的RegionServer
  2. RegionServer处理Get请求时先将Get转换成一个StartRow和StopRow重叠的Scan操作
  3. 扫描MemStore和HFile查询数据响应给Client
HDFS (Hadoop Distributed File System) 和 HBase 是 Apache Hadoop 生态系统中的两个重要组件,它们在分布式数据存储和处理中有各自的角色。 HDFS 读写流程大致如下: 1. **客户端发起请求**:用户通过 HDFS API 向 NameNode 发出文件操作请求(如读取或写入),NameNode 负责全局文件系统的元数据管理。 2. **元数据查询**:NameNode 接收请求后,验证权限并返回文件块的位置信息给客户端。 3. **数据定位**:客户端根据 NameNode 提供的信息找到 DataNode 的地址列表。 4. **数据传输**:客户端将数据分片(Block)发送到相应的 DataNode,并记录副本数以保证数据冗余。 5. **DataNode 数据接收和处理**:当 DataNode 收到数据后,将其写入磁盘并更新自身的块列表。 6. **读取过程**:如果需要读取数据,客户端同样先向 NameNode 查询文件位置,然后从 DataNode 获取数据HBase读写流程: 1. **客户端连接**:客户端通过 Java API 或其他客户端库连接到 ZooKeeper 集群获取 HBase Master 的地址。 2. **表和行键查询**:客户端将表名、行键发送到 Master,Master 返回 RegionServer 的位置。 3. **RegionServer定位**:客户端找到负责该 Region 的 RegionServer。 4. **数据读写**:对于写入操作,客户端将请求发送到 RegionServer,RegionServer 将数据写入 MemStore,之后可能会触发 Compaction 过程,将 MemStore 中的数据刷入 HFile 到硬盘;读取操作则直接从 HFile 中查找数据。 5. **结果返回**:读写完成后,结果通过网络返回给客户端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值