会挽雕弓如满月,西北望,射天狼。|

园龄:粉丝:关注:

学习 HBase

1 由来

HBase 应大数据而生,是Apache Hadoop项目孵化而来的一种NoSQL数据库,HBase 是 Hadoop Database 的简称。

它的出现有以下几个原因:
大数据时代的到来:随着互联网技术和信息化水平的不断提高,数据量不断增加,对数据的存储、处理和分析提出了更高的要求。传统的关系型数据库在处理大规模数据时面临着性能瓶颈和扩展性问题,因此需要一种更为适合大数据存储和处理的NoSQL数据库。
数据访问的灵活性:随着互联网应用的不断发展,数据访问的灵活性和查询效率变得越来越重要。HBase采用基于列的数据存储方式,支持随机读写和范围查询,具有更高的查询效率和数据访问的灵活性。
数据复制和高可用性:随着数据量的不断增加,数据的可靠性和高可用性变得越来越重要。HBase采用数据的副本机制和多节点部署方式,可以实现数据的复制和高可用性。
数据分析和挖掘的需求:随着数据量的不断增加,数据分析和挖掘的需求也越来越强烈。HBase提供了MapReduce和Hive等数据分析工具,可以方便地进行数据分析和挖掘。

2 架构

HBase = HMaster + HRegionServer + ZooKeeper + HDFS(DataNode) + Client

2.1 HMaster

HMaster是HBase集群的管理节点,负责管理HBase的元数据,包括表的结构、Region的分配等。HMaster还负责监控RegionServer的状态,并进行负载均衡和故障转移等工作。

2.2 RegionServer

RegionServer是HBase集群中的数据存储节点,每个RegionServer可以管理多个Region。RegionServer负责存储和管理数据,并提供数据的读写服务。每个RegionServer会为每个Region维护一个MemStore和多个StoreFile,用于存储数据。

2.3 ZooKeeper

ZooKeeper是HBase集群的协调节点,它用于管理HBase的配置信息、元数据和集群状态等。ZooKeeper还负责监控RegionServer的状态,并进行故障检测和转移等工作。

2.4 HDFS

HDFS是HBase集群中的存储层,用于存储HBase的数据。HBase将数据存储在HDFS的数据块中,以实现高可靠性和高可扩展性。

2.5 客户端

客户端是使用HBase的应用程序。客户端通过HBase API连接HBase集群,并进行数据的读写和管理。

3 Region 介绍

在HBase中,Region是一个基本的存储单元,用于存储HBase表中一部分的数据,是HBase实现分布式存储和管理的基本单元。HBase中的每个Region包含一段连续的行键范围,并存储在一个或多个RegionServer上。

具体来说,HBase中的Region具有以下特点:

  • 数据存储顺序:Region中的数据按照行键顺序存储,因此可以支持行键的范围查询。

  • 可动态扩展:当Region中的数据达到一定大小时,HBase会自动进行Region分裂,将一个大Region分成两个小Region,以保证数据均衡和查询效率。

  • 数据副本:每个Region在HBase集群中都有多个副本,以保证数据的可靠性和高可用性。

  • 多版本支持:HBase支持多版本数据存储,可以在同一个行键中存储多个版本的数据,并支持按版本号查询。

  • 分布式管理:HBase集群中的Region分布在多个RegionServer上,每个RegionServer可以管理多个Region,以达到分布式管理的目的。

  • HBase中的Region是自动分配的,当一个表被创建时,HBase会为该表自动创建一个或多个Region,并将它们分配给不同的RegionServer。Region的分配是自动的,并且可以根据集群负载和数据均衡进行调整。当Region中的数据达到一定大小时,HBase会自动进行Region分裂,将一个大Region分成两个小Region,以保证数据均衡和查询效率。

在HBase的架构中,数据被分割成多个Region,并分布在多个RegionServer上。每个RegionServer管理多个Region,每个Region包含一段连续的行键范围。这样,HBase就可以实现数据的水平扩展和负载均衡,从而提高了系统的可靠性和性能。

详细可参考: HBase-Region详解

4 Region 是怎么存储数据的

在HBase中,Region是一个基本的存储单元,用于存储HBase表中一部分的数据。当一个Region中的数据达到一定大小时,HBase会自动进行Region分裂,将一个大Region分成两个小Region,以便于数据的管理和查询。HBase的Region是按照行键范围进行划分的,每个Region包含一段连续的行键范围。具体来说,HBase的Region存储数据的方式如下:

  • Region分割:HBase首先将表分成多个Region,并将这些Region分配给不同的RegionServer。在RegionServer上,每个Region会分成多个Store,用于存储数据。

  • 数据存储:在每个Store中,数据按照列族存储,列族中的每个列都会存储相同的类型的数据。在每个列族中,数据按照行键顺序存储,并且可以存储多个版本的数据。

  • 内存缓存:每个RegionServer会为每个Region维护一个MemStore,用于缓存数据的写入操作。当MemStore中的数据达到一定大小时,HBase会将其持久化到磁盘中的StoreFile中。

  • StoreFile:在每个Store中,数据会被持久化到多个StoreFile中,每个StoreFile对应一个HFile文件。HFile文件是HBase中的一个底层存储格式,它将数据按照行键顺序存储,并支持快速的随机读取和范围查询。

  • 数据合并:当RegionServer中的StoreFile数量达到一定数量时,HBase会对StoreFile进行合并,以减少文件数量和提高查询效率。同时,HBase还会对StoreFile进行压缩和归档,以减小磁盘空间的占用。

5 附录:HDFS 的优点和缺点

HDFS(Hadoop Distributed File System)是Hadoop生态系统中的分布式文件系统,它是一个高容错、高可靠、高性能的分布式存储系统,具有以下优点:

优点:

  • 高可靠性:HDFS采用了数据冗余机制,将数据分为多个块并备份到不同的节点上,一旦某个节点失效,数据可以从备份节点上恢复。

  • 高可扩展性:HDFS支持添加新的节点来扩展存储容量和计算能力,可以轻松地扩展到PB级别的数据规模。

  • 高性能:HDFS采用了数据本地性原则,将数据存储在离计算节点最近的节点上,以减少数据的网络传输和提高数据访问速度。

  • 适合大数据处理:HDFS适合存储和处理大规模的数据集,可以支持PB级别的数据存储和处理。

  • 开源免费:HDFS是开源的,可以免费使用,没有任何授权费用。

缺点:

  • 不适合小文件存储:因为HDFS将数据分为多个块并备份到不同的节点上,因此存储小文件时会造成存储空间的浪费。

  • 不支持高并发写入:HDFS的写入性能较低,不支持高并发写入,因此不适合高并发写入场景。

  • 不支持低延迟访问:HDFS的数据访问速度较慢,不支持低延迟访问,因此不适合对响应时间要求较高的应用场景。

  • 需要专门的管理和维护:HDFS是一个分布式的系统,需要专门的管理和维护

本文作者:武平宁

本文链接:https://www.cnblogs.com/dewan/p/17260661.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   武平宁  阅读(15)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起