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. ubuntu20安装docker、redis、mysql及部署net6应用

    一.更新系统软件包索引 sudo apt update 二.安装docker sudo apt install docker.io 三.在docker中安装Mysql 拉取mysql镜像 docker ...

  2. C++ Primer 5th 阅读笔记:变量和基本类型

    一些语言的公共特性 内建类型,如整型,字符型等: 变量,为值绑定的一个名字: 表达式和语句,操作值. 分支和循环,允许我们条件执行和重复执行: 函数,定义抽象计算单元. 扩展语言的方式 自定义类型: ...

  3. Extjs4 Tree Grid 综合示例(展开、编辑列、获取数据)

    用json数据模拟后端传回来的结果,Extjs tree支持两种类型的结构,一种是带children属性的嵌套式的数据,一种是扁平的,每条记录带pid的数据,带pid的添加配置项可以自动解析成树形结构 ...

  4. 2023-01-13:joxit/docker-registry-ui是registry的web界面工具之一。请问部署在k3s中,yaml如何写?

    2023-01-13:joxit/docker-registry-ui是registry的web界面工具之一.请问部署在k3s中,yaml如何写? 答案2023-01-13: yaml如下: apiV ...

  5. 2023-01-05:konradkleine/docker-registry-frontend是registry的web界面工具之一。请问部署在k3s中,yaml如何写?

    2023-01-05:konradkleine/docker-registry-frontend是registry的web界面工具之一.请问部署在k3s中,yaml如何写? 答案2023-01-05: ...

  6. 2021-08-25:给定数组father大小为N,表示一共有N个节点,father[i] = j 表示点i的父亲是点j, father表示的树一定是一棵树而不是森林,queries是二维数组,大小为

    2021-08-25:给定数组father大小为N,表示一共有N个节点,father[i] = j 表示点i的父亲是点j, father表示的树一定是一棵树而不是森林,queries是二维数组,大小为 ...

  7. openstack部署2

    检查服务,查看dashboard页面有哪些功能 检查服务状态 检查计算节点,控制节点服务是up状态 检查网络节点是True的状态.这里的每个计算节点,都是一个neutron的客户端. 查看dashbo ...

  8. ArcGIS如何自动获得随机采样点?

      本文介绍基于ArcMap软件,实现在指定区域自动生成随机点的方法.   在GIS应用中,我们时常需要在研究区域内进行地理数据的随机采样:而采样点的位置往往需要在结合实际情况的前提下,用计算机随机生 ...

  9. linux nfs共享存储服务

    目录 一.nfs服务 二.nfs优点 三.配置文件 四.共享文件配置过程 五.实验 1.创建共享文件(两台终端共享) 一.nfs服务 概念:网络上共享文件系统的协议,运行多个服务器之间通过网络共享文件 ...

  10. 解决org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource **/**/dao/**Mapper.xml问题

    1. 问题分析 出现此问题的原因是资源过滤的问题,编写在DAO包中的XML文件没有被打包. 2. 解决方案 在pom.xml文件中加入如下资源过滤: <!-- 静态资源导出问题 --> & ...