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. 劲(很)霸(不)酷(好)炫(用)的NLP可视化包:Dodorio 使用指北

    朋友们,朋友们,事情是这样的.最近心血来潮,突然想起很久以前看过的一个NLP可视化包.它的效果是下面这个样子: 在此之前,已经有一些文章从论文的角度对这个包进行了介绍,详情请见 推荐一个可交互的 At ...

  2. RTSP&IGMP详解

                                                                                 RTSP协议 一.概述 1)RTSP(Real ...

  3. .Net8的快速JIT,分层编译,R2R的设置

    前言 本篇通过一些简单的JIT设置,比如快速JIT,适用于循环的快速 JIT,分层编译,R2R等核心内容设置,快速进入.Net8核心区域. 概括 1.快速JIT 什么是快速JIT,顾名思义,被Rosy ...

  4. Django的message组件(源码分析)

    Django的Message组件(源码分析) 1. 配置 # MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackS ...

  5. 如何用 KMP 偏序 Z 函数

    KMP 算法求解字符串匹配的过程中 \(next\) 数组有着繁多的应用,主要是可以帮我们求 border. 然而用 \(s\) 串匹配 \(t\) 串产生的 \(f\) 数组应用相对较少. \(f\ ...

  6. 【Redis】Cluster集群

    一.Redis Cluster 工作原理 在引入哨兵机制后,解决了Redis主从架构Master故障时的主从切换问题,保证了Redis服务可用性.但依旧无法解决单机节点出现的写入性能瓶颈(网卡速率.单 ...

  7. 2020-10-04:java中GC Root 对象有哪些?

    福哥答案2020-10-04:#福大大架构师每日一题# 简单回答:1.局部变量.2.静态引用的对象.3.常量引用的对象.4.JNI引用的对象. 中级回答:1.虚拟机栈(栈帧中的本地变量表)中引用的对象 ...

  8. Express实战个人订阅号实现网站登录

    今天我们来实现一个使用个人订阅号实现网站的功能,后端使用的是 express .其它框架原理基本一致,只是定义路由或返回响应数据部分代码跟 express 有所出入.先来一波效果图: 1. 前言 20 ...

  9. 2019年蓝桥杯C/C++大学B组省赛真题(特别数的和)

    题目描述: 小明对数位中含有2.0.1.9 的数字很感兴趣(不包括前导0) 在1到40中这样的数包括1.2.9.10 至32.39 和40,共28 个,他们的和是574. 请问,在1到n 中,所有这样 ...

  10. Kubernetes GoRoutineMap工具包代码详解

    1.概述 GoRoutineMap 定义了一种类型,可以运行具有名称的 goroutine 并跟踪它们的状态.它防止创建具有相同名称的多个goroutine,并且在上一个具有该名称的 goroutin ...