hbase有哪些特点:适配海量稀疏数据

hbase有哪些特点,它属于分布式列存储数据库,依托HDFS做底层存储,支持百亿行、千万列级别的稀疏数据读写,适合日志、时序、画像这类单条记录字段数量波动大、读请求以行键精准查询为主的业务,不适合需要复杂多表关联、事务一致性要求高的场景,同一行内不同列可以分开存储,空列不会占用磁盘空间,集群横向扩容依靠新增RegionServer节点完成,扩容过程不需要停机重分布全部数据。

hbase存储模型特点

数据按行键做有序分区,行键是查询的核心索引,没有二级索引,不支持像关系型数据库那样随意按普通字段筛选。一张表会切分成多个Region,每个Region对应一段连续行键范围,由RegionServer负责承载。数据内部按列族划分,列族在建表时提前定义,列可以动态新增,同一个列族下的数据会放在一起存储,方便批量读取一组关联字段。

空值不占用存储空间。

hbase读写架构特点

写入流程先写入WAL预写日志,再写入内存MemStore,内存满了之后才刷写到HDFS上的HFile文件,这个机制可以在节点宕机之后依靠WAL恢复还没落盘的数据,降低数据丢失概率。写入是追加模式,不会修改原有HFile,更新和删除操作只是写入标记,真正的清理合并在后台Compaction阶段执行,大量频繁更新会增加Compaction压力,带来短暂的IO抖动。

读取需要先查内存,再依次读取多个HFile,文件数量越多,单次查询的延迟越高,运维时需要控制Compaction策略,避免大量文件堆积拖慢查询。集群里的ZooKeeper承担元数据管理、Region分配、主节点HMaster故障转移的工作,HMaster本身不处理读写请求,只负责调度,读写流量直接走RegionServer。

hbase事务与一致性特点

它只提供单行内的原子性,同一行的多个列的写入或者修改操作要么全部成功要么失败,跨行、跨表无法保证事务,也不支持JOIN、分组聚合这类SQL原生能力。版本机制内置,每一次修改都会生成一个数据版本,你可以设置保留版本数量,查询时读取最新版本或者指定历史版本,适合需要回溯数据变更记录的业务。

hbase运维与扩展特点

扩展属于线性扩展,增加RegionServer就能提升读写吞吐,不需要改动表结构,数据会随着Region拆分自动迁移到新节点。底层依赖HDFS,天然继承HDFS的多副本持久化能力,数据副本数量在建表或者集群配置里指定,副本分散在不同节点,提升容错能力。它的运维成本偏高,需要持续监控Region倾斜、Compaction队列、WAL文件大小,行键设计不合理很容易出现热点,大量请求集中在单个RegionServer,造成性能瓶颈。

hbase适用边界

适合高吞吐写入、随机单行查询、数据稀疏、需要保存多版本的业务,比如用户行为日志、设备时序上报、互联网用户画像。业务需要强跨行事务、复杂报表查询、多条件模糊检索的时候,选择关系型数据库或者OLAP引擎会更合适。行键设计是使用的核心门槛,热点行键会直接抵消分布式带来的扩容优势,常见优化手段是加盐、哈希、时间反转。

对比项HBaseMySQL
存储类型分布式列存储行式关系存储
事务能力单行原子跨行ACID事务
扩容方式横向加节点分库分表,改动较多
索引支持仅行键索引丰富二级索引

Apache基金会在2010年正式发布HBase,它是Hadoop生态里的组件,和HDFS、MapReduce、Spark可以无缝对接,方便离线批量扫描全表数据做统计分析。

敬慕百科汇集百科知识与游戏文化,带你发现世界的每一个精彩角落。

想要了解更多关于hbase有哪些特点的文章欢迎访问:百科