HBase的读写流程

HBase的读流程

  • 客户端拿到一个RowKey(首先得知道这rowKey存在那个region中)
  • 根据zk查询获取hbase:meta表,这个表中存放了region的信息,根据namespace,表名,就可以根据rowkey的startkey,endkey返回region的信息
  • 还需要查询region是在哪个HRegionServer(因为我们是region会存在什么地方的)
  • 读取Store
    • 优先读取写缓存
      -读取BlockCache(LRUBlockCache、BucketBlockCache)
    • 再读取HFile

HBase的写流程

  1. 首先要将数据写入到MemStore中
  2. MemStore大小到达128M、MemStore数据已经超出一小时,会自动Flush到HDFS中的HFile
  3. compaction合并
    1. 一阶段合并:如果每一个MemStore写满后,都会一溢写到HFile中,这样会有很多的HFile,对将来的读取不利。所以需要将这些小的HFile合并成大一点的HFile
    2. 二阶段合并:将所有的HFile合并成一个HFile
      写数据的两阶段合并
      HBase 2.0+ In memory compaction(总共的流程为三个阶段的合并)
  • In memory comapaction主要是延迟flush到磁盘的时间,尽量优先写入到内存中,有一系列的合并优化操作
  • 数据都是以segment(段)来保存的,首先数据会写到active segment,active segment写完后会将segment合并到piepline里面,合并pipeline的之后会有一定的策略
    • basic:只管存,合并,不会优化重复数据
    • eager:会将一些重复数据进行优化
    • adaptive:会根据重复度来进行优化合并
  • pipeline如果到达一定的阈值,就开始Flush
  • in -memory合并
    • In memory comapaction主要是延迟flush到磁盘的时间,尽量优先写入到内存中,有一系列的合并优化操作
  • 数据都是以segment(段)来保存的,首先数据会写到active segment,active segment写完后会将segment合并到piepline里面,合并pipeline的之后会有一定的策略

在这里插入图片描述

Action溢写多个Segment,多个Segment之间进行合并,然后选取最新的segment写入flush (目的数去除掉同一批重复的,多余的操作)

in -memory合并的三种策略

  • basic:只管存,合并,不会优化重复数据
  • eager:会将一些重复数据进行优化
  • adaptive:会根据重复度来进行优化合并
  • pipeline如果到达一定的阈值,就开始Flush

在这里插入图片描述

StoreFile合并

> 这是对已经存在hdfs上的文件进行的
  • minorcompaction
    • 小范围合并3-8个,轻量级
    • 合并但不删除原文件
  • major compaction
    • 大范围的(全部),重量级
    • 合并成一个,并且删除原文件.
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、付费专栏及课程。

余额充值