返回空kong的回答

空kong空kong其它某单位

Hbase 读取数据流程:
1 、首先, Client 先访问 zookeeper ,获取系统 'hbase:meta' 元数据表的 region 信息和 HRegionServer 信息(确定 'hbase:meta' 元数据表的位置),从而获取到 'hbase:meta' 元数据表
2 、其次,根据 namespace 、 tablename 、 rowkey ,在 'hbase:meta' 元数据表查找对应的的 Region 信息和 HRegionserver 信息
3 、最后,根据已经获取到的 regionserver 和 region 信息,去 regionserver 节点上查找数据,先从 memstore 读取,如果没有,再到 storeFile 上读取(为了读取的效率)
从这个过程可以看出,真正的读写并不依赖于 master ,在读写的过程中如果 master 节点出现宕机,短暂性的是不会出现太大的问题

Hbase 写入数据流程:
1 、当客户端发起一个 Put 请求时,首先它从 hbase:meta 表中查出该 Put 数据最终需要去的 HRegionServer ;然后客户端将 Put 请求发送给相应的 HRegionServer ,在 HRegionServer 中它首先会将该 Put 操作写入 WAL 日志;
2 、写完 WAL 日志文件后, HRegionServer 根据 Put 中的 TableName 和 RowKey 找到对应的 HRegion ,并根据 Column Family 找到对应的 HStore ,并将 Put 写入到该 HStore 的 MemStore 中,此时写成功,并返回通知客户端。

保险 · 2020-01-08
浏览944

回答者

空kong
其它某单位
擅长领域: 大数据数据库大数据平台

空kong 最近回答过的问题

回答状态

  • 发布时间:2020-01-08
  • 关注会员:2 人
  • 回答浏览:944
  • X社区推广