HBase读写流程

2024-01-24 17:34:03 浏览数 (2)

写流程

  1. 客户端与 HBase 集群建立连接:客户端应用程序使用 HBase 提供的 Java API 或其他支持的编程语言与 HBase 集群建立连接。
  2. 创建 HTable 对象:客户端使用 HBase 提供的 API 创建一个 HTable 对象,该对象表示要写入数据的表。
  3. 构建 Put 对象:客户端创建一个 Put 对象,并指定要写入的行键(Row Key)。
  4. 添加列族和列数据:客户端可以为 Put 对象添加一个或多个列族和列数据。每个列数据由列族、列限定符(Column Qualifier)和值组成。
  5. 执行数据写入:客户端调用 HTable 对象的 `put()` 方法,将 Put 对象传递给它。HTable 对象将负责将数据写入 HBase 集群。
  6. 数据写入 HBase RegionServer:HTable 对象将数据发送到 HBase 集群中的 RegionServer。RegionServer 根据行键的哈希值将数据路由到相应的 Region。
  7. 写入 MemStore:RegionServer 接收到数据后,将数据写入内存中的 MemStore。MemStore 是 HBase 用于暂存数据的内存缓冲区。
  8. 刷写到磁盘:当 MemStore 中的数据积累到一定大小时,RegionServer 将其刷写到磁盘上的 HFile 文件。HFile 是 HBase 的数据存储格式之一。
  9. WAL 日志写入:在数据写入 MemStore 和刷写到磁盘之前,RegionServer 会将写操作记录到 Write-Ahead Log(WAL)中。WAL 是 HBase 用于持久化写操作的日志文件。
  10. 数据写入完成:当数据成功写入 MemStore 和 HFile 文件,并且 WAL 日志记录成功后,数据写入流程完成。

读流程

  1. 客户端与 HBase 集群建立连接:客户端应用程序使用 HBase 提供的 Java API 或其他支持的编程语言与 HBase 集群建立连接。
  2. 创建 HTable 对象:客户端使用 HBase 提供的 API 创建一个 HTable 对象,该对象表示要读取数据的表。
  3. 构建 Get 对象:客户端创建一个 Get 对象,并指定要读取的行键(Row Key)。
  4. 添加列族和列限定符:客户端可以为 Get 对象添加一个或多个列族和列限定符,以指定要读取的列。
  5. 执行数据读取:客户端调用 HTable 对象的 `get()` 方法,将 Get 对象传递给它。HTable 对象将负责从 HBase 集群中读取数据。
  6. 数据读取 HBase RegionServer:HTable 对象将 Get 请求发送到 HBase 集群中的 RegionServer。RegionServer 根据行键的哈希值将请求路由到相应的 Region。
  7. 从 MemStore 和 HFile 中读取数据:RegionServer 从内存中的 MemStore 和磁盘上的 HFile 文件中读取数据。如果数据在 MemStore 中找到,则直接返回;如果在 MemStore 中未找到,则从 HFile 文件中读取。
  8. 返回数据给客户端:RegionServer 将读取到的数据返回给 HTable 对象,然后 HTable 对象将数据返回给客户端应用程序。
  9. 数据读取完成:客户端应用程序接收到数据后,读取流程完成。

0 人点赞