赞
踩
HBase 是 Hadoop 中表存储层中的分布式数据库(列式存储)。
HBase适用于需要处理大量结构化数据的场景,例如日志分析、在线分析处理(OLAP)、时间序列数据等。它在Hadoop生态系统中扮演着重要的角色,并且被广泛应用于大数据领域。
HBase 的表逻辑视图包括列族,列标识,行键,分区,时间戳。
列族
列标识
行键
通过单个 row key 访问,通过 row key 的 range,全表扫描
分区
时间戳
存储单元格
每个 Cell 保存着同一份数据的多个版本。
Cell 中没有数据类型,完全是字节存储。
HBase的物理视图主要涉及到数据在磁盘上的存储和组织方式,以 key-value 的形式存储在分布式文件系统上,key 包括行键,列族和列,时间戳信息来确定一个值。
存储文件(Store File)是 HBase 中实际存储数据的文件,每个列族在磁盘上都有一个或多个存储文件。存储文件时按照列族和行键的顺序进行排序的,并且被分成多个数据块。
相同的列族会保存在同一个存储文件中。
逻辑VS物理
逻辑视图以二维表的形式展示,物理存储以 key-value 的形式存储,同一个列族的列会被存储在同一个存储文件中,所以上图中的 Personal 存储在一个文件中,Office 存储在一个文件中。
HMaster
Region
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H3tu6sq8-1688551548430)(https://cdn.nlark.com/yuque/0/2023/png/29051477/1688539360581-dc1fefbb-ff20-4064-894b-2fb9dabac0c4.png#averageHue=%23ecbba3&clientId=u032b0f9a-5501-4&from=paste&height=260&id=u1be69605&originHeight=260&originWidth=865&originalType=binary&ratio=1&rotation=0&showTitle=false&size=43091&status=done&style=none&taskId=u4aab6af9-87af-4c78-86fa-7f7a4b7c178&title=&width=865)]
Region Server
WAL 技术
ZooKeeper 和 Client
为什么需要 Compaction?
HBase 的 MemStore 在满足阈值的情况下会将内存中的数据刷写成 HFile ,一个 MemStore 刷写就会形成一个 Hfile。
随着时间的推移,同一个 Store 下的 HFile 会越来越多,文件太多会影响HBase查询性能,主要体现在查询数据的io次数增 加。
为了优化查询性能,HBase会合并小的HFile以减少文件数量,这种合并HFile的操作称为Compaction,这也是为什么要进行Compaction的主要原因。
HBase 有两种合并方式
Compaction 存在的问题
Compaction是一个IO密集型操作,必然对读写造成性能影响。
随着 Hadoop 的式微,HBase 也渐渐退出了历史的舞台,在笔者所在公司,基本上已经使用 ClickHouse 替换了 HBase, 只有少量的业务场景,还在使用 HBase。
这里对 HBase 和 ClickHouse 做一个对比:
因此,选择使用HBase还是ClickHouse取决于具体的需求和使用场景。如果需要处理大量的随机读写操作或与Hadoop生态系统紧密集成,HBase可能更适合。如果需要进行大规模的数据分析和聚合查询,并且对性能和扩展性有较高的要求,ClickHouse可能更适合。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。