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是一个分布式的系统,需要专门的管理和维护

学习 HBase的更多相关文章

  1. 暑假第五周总结(学习HBASE相关知识)

    本周主要对HBASE的相关知识进行了学习,主要是通过视频的讲解了解到了HBASE的存储机制,HBASE的机制与普通的关系型数据库完全不同,HBASE以列进行存储,其主要执行的就是增删查操作,其更改主要 ...

  2. 深入学习HBase架构原理

    HBase定义 HBase 是一个高可靠.高性能.面向列.可伸缩的分布式存储系统,利用Hbase技术可在廉价PC Server上搭建 大规模结构化存储集群. HBase 是Google Bigtabl ...

  3. HBase学习-HBase原理

    1.系统架构 1.1 图解   从HBase的架构图上可以看出,HBase中的组件包括Client.Zookeeper.HMaster.HRegionServer.HRegion.Store.MemS ...

  4. 一脸懵逼学习HBase的搭建(注意HBase的版本)

    1:Hdfs分布式文件系统存的文件,文件存储. 2:Hbase是存储的数据,海量数据存储,作用是缓存的数据,将缓存的数据满后写入到Hdfs中. 3:hbase集群中的角色: ().一个或者多个主节点, ...

  5. 深入学习hbase:表,列族,列标识,版本和cell

    HBase是面向列的分布式的数据库,和传统的关系型数据库有很大的不同:物理模型和逻辑模型.这里我们要首先讲一下HBase数据库相关的区别于关系型数据库的几个基本概念:          表:HBase ...

  6. 大数据学习——hbase的shell客户端基本使用

    1  基本shell命令 1 在hbase的 bin目录下进入命令行 ./hbase shell 2 查看有哪些表 list 3 创建一个表 create 't_user_info', {NAME = ...

  7. 大数据学习——hbase数据库

    Hhbase集群搭建 一 第一步 准备:搭建hadoop集群,搭建zookeeper 二 第二步:上传安装包 解压 1 tar -zxvf  hbase-1.2.1-bin.tar.gz 重命名 2 ...

  8. 大数据学习——Hbase

    1. Hbase基础 1.1 hbase数据库介绍 1.简介 hbase是bigtable的开源java版本.是建立在hdfs之上,提供高可靠性.高性能.列存储.可伸缩.实时读写nosql的数据库系统 ...

  9. Hbase学习Hbase基础介绍

    一.产生背景 自1970年以来,关系数据库用于数据存储和维护有关问题的解决方案.大数据的出现后,好多公司实现处理大数据并从中受益,并开始选择像Hadoop的解决方案.Hadoop使用分布式文件系统,用 ...

  10. Hbase学习笔记01

    最近做项目接触到了HDFS.mapreduce以及Hbase,有了实战机会,今天打算将这些知识好好总结下,以备不时之需.首先从Hbase开始吧. Hbase是建立在HDFS上的分布式数据库,下图是Hb ...

随机推荐

  1. vue-cli3构建和发布 实现分环境打包步骤(给不同的环境配置相对应的打包命令)

    https://panjiachen.github.io/vue-element-admin-site/zh/guide/essentials/deploy.html#%E6%9E%84%E5%BB% ...

  2. VS 查看引用的DLL/Nuget包源码时,无法看到注释

    一.问题描述 在下面的截图中,我们发现,源码有添加一段注释. 然后通过Nuget包引用,在VS中用Reshaper反编译时,发现没有注释: 原来,DLL是默认不带注释的.即你生成一个DLL,给另一个项 ...

  3. [Pytorch框架] 2.1.4 数据的加载和预处理

    文章目录 PyTorch 基础 :数据的加载和预处理 Dataset Dataloader torchvision 包 torchvision.datasets torchvision.models ...

  4. Prometheus-Operator使用ServiceMonitor监控配置时遇坑与解决总结

    摘要 本文范围: Prometheus-Operator & kube-prometheus 安装:以及在解决使用ServiceMonitor时遇到的坑. Prometheus Operato ...

  5. workerman、websocket简单聊天功能从0到1实现

    一.workerman安装,测试环境为linux 1.在网站根目录,用命令行安装,要是出现root权限提示,输入y回车就行,或者新建一个用户再进入安装 Linux系统可以使用以下脚本测试本机PHP环境 ...

  6. 2020-10-31:java中LinkedTransferQueue和SynchronousQueue有什么区别?

    福哥答案2020-11-01:SynchronousQueue:线程A使用put将数据添加到队列,如果没有其他线程使用take去获取数据,那么线程A阻塞,直到数据被其他线程获取,同理 如果线程B从队列 ...

  7. 2022-04-26:给定四个整数 sx , sy ,tx 和 ty,如果通过一系列的转换可以从起点 (sx, sy) 到达终点 (tx, ty),则返回 true,否则返回 false。 从点 (x

    2022-04-26:给定四个整数 sx , sy ,tx 和 ty,如果通过一系列的转换可以从起点 (sx, sy) 到达终点 (tx, ty),则返回 true,否则返回 false. 从点 (x ...

  8. vue全家桶进阶之路7:Vue的第一个程序

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. idea构建grpc项目

    转载请注明出处: 安装protocbuf插件 idea 建议下载一个 protobuf的插件, 可以有代码提示. 这里直接去pluging里搜就行了. 在idea的plugins中搜索proto,然后 ...

  10. (偶尔更新)【Linux】Linux常见不常用命令收集

    本文时间 2023-05-20 作者:sugerqube漆瓷 cd,vi,clear这些属于常见常用命令本文不再赘述. 安装命令 yum install vim举例安装vim rpm -ivh a.r ...