博客
关于我
Hbase
阅读量:713 次
发布时间:2019-03-21

本文共 1995 字,大约阅读时间需要 6 分钟。

概念

HBase 是一种分布式、面向列的开源数据库,其核心依赖HDFS、MapReduce和Zookeeper等技术。HDFS负责提供可靠的存储服务,MapReduce负责高效的数据处理,而Zookeeper则保证集群的高可用性和负载均衡。HBase采用列式存储模式,在每个查询中通过列来定义索引,从而实现自动索引化的优势。这种架构使得HBase能够在面对海量数据时,具备高速的存储和读取能力。

列式存储

列式存储的核心优势在于查询的优化。HBase的查询模式是基于列的,这意味着查询时整个数据库都通过列来定位数据。这种模式下,查询效率显著提高,因为系统会自动为每个列建立索引。以下是HBase和传统关系型数据库的对比:(图1显示HBase的列式存储结构,图2显示传统关系型数据库的表结构)

HBase 核心概念

Column Family(列族)

Column Family是HBase中的重要概念,用于划分数据的存储空间。每个列族下可以包含多个列,而HBase表在创建时必须预先定义列族的数量。HBase推荐使用1到3个列族,理由是过多的列族可能导致网络通信的开销增加。在实际应用中,默认使用单个列族已经能够满足大部分场景需求。

Rowkey(行键)

Rowkey在HBase中类似于传统数据库中的主键,用于唯一标识数据行。HBase支持三种基于Rowkey的查询模式: - 单行查询:通过Rowkey直接获取特定行的数据。 - 范围扫描:通过Rowkey的范围查询,获取多行数据。 - 全表扫描:获取表中所有数据。

Region(分区)

Region相当于大型表在HBase中进行分区的思想。通过Rowkey的范围,将数据划分成多个分区(Region),每个Region由不同的RegionServer负责存储和处理。这种机制不仅降低了查询的时延,还提高了系统的扩展性和可用性。

TimeStamp(时间戳)

TimeStamp是HBase支持多版本的关键机制。通过不同的时间戳,HBase可以在同一行的数据中区分不同版本的记录。默认访问最新版本的数据,而用户可以通过指定特定的时间戳来读取历史版本的数据。HBase会自动为每条数据行生成时间戳,确保数据有序排列。

HBase 核心架构

HBase的架构包括以下主要组件:

  • Client:负责与HBase进行交互,管理缓存。
  • Zookeeper:负责集群的元数据存储、高可用性管理以及RegionServer的监控。
  • Master:负责分配Region、处理负载均衡以及Region扩容和拆分。
  • RegionServer:执行写读请求,与HDFS交互存储数据。

RegionServer通过Zookeeper获取 META信息,最终定位目标Region所在的服务器。


Region 寻址方式

HBase的Region分布基于Zookeeper的META信息进行管理。客户端通过以下步骤获取数据: 1. 获取目标RegionServer的地址。 2. 刷新缓存的META信息。 3. 直接访问目标RegionServer。

HDFS

作为HBase的底层存储基础,HDFS不仅提供高效的数据存储,还支持HBase的高可用性。通过HDFS,HBase可以在RegionServer故障时,通过HLog恢复数据。

HBase 写入逻辑

HBase的写入流程包括以下步骤:(如图所示) 1. 获取目标RegionServer地址。 2. 通过HLog(HDFS)写入数据日志。 3. 通过MemStore缓存数据(完成之后,会刷盘进入HDFS)。

MemStore 刷盘机制

MemStore用于加速读写,但为了保证系统稳定性,会在内存膨胀到一定比例时或在特定事件触发下,批量刷盘至HDFS。以下是常见的触发条件: - **全局内存控制**:基于内存使用比例触发。 - ** MemStore 达到大小限制**:如128MB。 - **HLog 达到上限**:默认32条。 - **手动触发**:可通过命令强制刷盘。 - **Region 恢复完成后的自动刷盘**:Region故障恢复后会自动刷盘。

HBase VS Cassandra

对比项 HBase Cassandra
语言 Java Java                 
出发点 BigTable模型         BigTable和Dynamo模型    
许可证 Apache Apache                
协议 HTTP/RESTapi        自定义(Thrift)      
数据分布 Region划分          一致性哈希(虚拟节点)  
存储目标 大文件型数据         小文件型数据         
一致性模型 强一致性模型      最终一致性(Quorum NRW)

通过以上对比可以看出,HBase和Cassandra在数据分布方式和一致性模型上各有优势,选择哪种技术最优取决于具体应用场景。

转载地址:http://pmurz.baihongyu.com/

你可能感兴趣的文章
mysql清理undo线程_MySQL后台线程的清理工作
查看>>
mysql清空带外键的表
查看>>
MySQL清空表数据
查看>>
mysql源码安装
查看>>
Mysql源码安装过程中可能碰到的问题
查看>>
MySQL灵魂16问,你能撑到第几问?
查看>>
MySQL灵魂拷问:36题带你面试通关
查看>>
mysql状态分析之show global status
查看>>
mysql状态查看 QPS/TPS/缓存命中率查看
查看>>
mysql生成树形数据_mysql 实现树形的遍历
查看>>
mysql用于检索的关键字_Mysql全文搜索match...against的用法
查看>>
MySQL用得好好的,为什么要转ES?
查看>>
MySql用户以及权限的管理。
查看>>
MySQL用户权限配置:精细控制和远程访问的艺术!------文章最后有惊喜哦。
查看>>
mysql用户管理、常用语句、数据分备份恢复
查看>>
MySQL留疑问:left join时选on还是where?
查看>>
mysql登陆慢问题解决
查看>>
MySQL的 DDL和DML和DQL的基本语法
查看>>
mysql的 if else , case when then, IFNULL
查看>>
MySQL的10种常用数据类型
查看>>