博客
关于我
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/

你可能感兴趣的文章
Python化身“安全老中医”:一键搞定工控系统漏洞,从零基础到精通,收藏这篇就够了!
查看>>
Python加速运行技巧
查看>>
python办公自动化基础遍历文件夹
查看>>
python办公自动化基础输出文件和文件夹
查看>>
python办公自动化基础搜索文件
查看>>
python前端之css
查看>>
Python制作进度条,原来有这么多方法
查看>>
Python制作简单的学生成绩管理系统
查看>>
python制作甘特图的基本知识(附Demo)
查看>>
python制作一个简单的服务器,【Python】 做一个简单的 http 服务器
查看>>
Python到底能做什么?它的优点在哪?
查看>>
python利用pytorch库导出图像分割算子
查看>>
python利用pyshark监听网卡来抓包其中pyshark中摸索的一些可用参数
查看>>
python利用excel分析过杀漏失
查看>>
python判断汉字数目
查看>>
python判断文件是空的,如果是空的,就删除
查看>>
python判断密码是否正确_python密码判断是否符合要求的方法
查看>>
python判断字符串包含中文_Python 判断字符串是否包含中文
查看>>
python删除第一行_Python 乱码指北:一行删掉根目录
查看>>
Python删除列表元素的三种方法
查看>>