Hbase中的hfile和data compact过程疑问,求解答,感激不尽

发布于 2021-11-15 10:05:19 字数 390 浏览 704 评论 2

小弟最近初识Hbase,存在如下疑问:

1.首先每个storefile的实例化形式是Hfile,这个hfile会被写入到hdfs上。那么我认为这个hfile的物理存放形式对于hbase是透明的,即一个hfile可能被hdfs切分成很多split并且存储在不同的节点上。不知道我这么理解正确与否?

2.data compact的过程需要将多个hfile读出,合并成一个大的hfile,那么这个过程实际上需要将多个hfile从hdfs中读出到regionserver本地,合并之后再将其写会hdfs么?这样做不是会产生很大的网络IO么,另外,当一个hfile大小到达256M会触发分裂,变成2个128M的hfile,那么新产生的hfile不是一样还会面临重新被合并的可能么。实在很不理解HBase这种把数据管理和实际存储的分离的设计理念。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

离去的眼神 2021-11-21 22:40:23

我也是刚在研究Hbase,对于您提的问题,我发表自已的看法。
1、一个hfile可能被hdfs切分成很多split并且存储在不同的节点上,对于这句话,我的理解是,在Hbase中,Hfile是存储的最小单元,而对于分布式的最小单元应该是Hregion,Hregion的分布则由Master进行调度与管理了。

2、在第2点中,我的理解是,在compact过程中,应该不是从HDFS中读取Hfile文件,因为在每一次flush时,都会生成一个StoreFile文件,而在store下面存放的应该是列簇的数据。所以我觉得它并不是从HDFS中获取,而只是将store下面的storeFile进行合并。

以下如有错误之处,请指正。谢谢

 

海之角 2021-11-16 23:57:01

关于数据管理和实际存储的分离,其实不是完全的分离,RegionServer会优先在本地存储一份。我的理解是RegionServer认为是存在本地了,其实HDFS会另外做备份。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文