【大数据】分布式数据库HBase

这篇具有很好参考价值的文章主要介绍了【大数据】分布式数据库HBase。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【大数据】分布式数据库HBase,大数据,大数据,分布式,数据库,hbase,bigdata,sstable

目录

1.概述

1.1.前言

1.2.数据模型

1.3.列式存储的优势

2.实现原理

2.1.region

2.2.LSM树

2.3.完整读写过程

2.4.master的作用


1.概述

1.1.前言

本文式作者大数据系列专栏中的一篇文章,按照专栏来阅读,循序渐进能更好的理解,专栏地址:

https://blog.csdn.net/joker_zjn/category_12631789.html?spm=1001.2014.3001.5482

当前的分布式数据库其实都是参考的Google的BigTable,所以学习分布式数据库之前先学一下BigTable会一通百通。专栏中有对BigTable进行介绍的前文:

【大数据】bigtable,分布式数据库的鼻祖-CSDN博客

分布式数据库底层依托于分部署文件系统进行存储,分布式数据库更像在分布式文件系统上做了一层封装。就像BigTable底层依托于GFS一样,HBase底层依托于HDFS,专栏有专门介绍HDFS的文章:

【大数据】分布式文件系统HDFS-CSDN博客

1.2.数据模型

HBase中一个具体的数据由行键、列族、列限定符、时间戳组成。数据类型是不定的,统一存储为Bytes数组。

【大数据】分布式数据库HBase,大数据,大数据,分布式,数据库,hbase,bigdata,sstable

之所以有时间戳是因为HBASE底层是用的HDFS来做存储的,HDFS只支持追加写,所以HBASE为了实现删除效果只能用时间戳来区分哪个数据是最新的。

列族是个很核心的概念,底层的物理存储以列族为单位进行存储,支持动态扩展,一个列族其实就是HDFS中的一个文件,同一列族下的数据一定是被存到HDFS中的一个文件中的。

【大数据】分布式数据库HBase,大数据,大数据,分布式,数据库,hbase,bigdata,sstable

1.3.列式存储的优势

大数据技术中为什么采用列式存储:

HDBASE采用的这种存储模式叫列式存储,传统的关系型数据库采用的行式存储,大数据中普遍都采用列式存储。大数据中之所以采用列式存储是因为列式存储往往更有利于分析,当需要做指标统计的时候往往只需要访问一个列即可,而且列族在物理磁盘上是连续存储的,速度会很快。行式存储要进行指标统计的时候要访问很多无用的列,而且数据在物理磁盘上也不是连续存储的,性能不会很好。

比如数据表是这样:

【大数据】分布式数据库HBase,大数据,大数据,分布式,数据库,hbase,bigdata,sstable

​行式和列式的区别会是:

【大数据】分布式数据库HBase,大数据,大数据,分布式,数据库,hbase,bigdata,sstable

2.实现原理

2.1.region

HBase最核心的概念!!!

hbase的架构直接参照bigtable即可,只是改了个名字。bigtable的核心是tablet,HBase的核心是region,存储region的服务器叫region server,对应bigtable中的tablet server。一个表会按照行键的字典序列进行排布,然后被分成多个region:

【大数据】分布式数据库HBase,大数据,大数据,分布式,数据库,hbase,bigdata,sstable

如何找到要的region?

HBASE参照BigTable的三层结构也维护了一个类树状结构用来快速查找到要的region:

叶子节点是region、meta表负责维护树形的层级结构,一个meta对应多个region,root只有一个,对应多个meta。

【大数据】分布式数据库HBase,大数据,大数据,分布式,数据库,hbase,bigdata,sstable

层次 名称 作用
第一层 root表 记录了META表的位置信息
第二层 meta表 记录了region表的位置信息,meta表相当于一个集合,将region分块的管理,用来维护了层级结构
第三层 用户表 用来记录用户数据

2.2.LSM树

LSM树是一种专门针对海量数据读写而升的数据结构,前文中作者聊bigtable的时候单独写了一篇文章对LSM树进行过讲解,可移步:

【大数据】LSM树,专为海量数据读写而生的数据结构-CSDN博客

同样HBASE中也用了LSM树,也有类似于memtable和sstable的东西:

memstore->memtable

storefile->sstable

这里HBase和bigtable唯一有区别的就是bigtable的一个tablet里只会有一条线的memtable和sstable,而HBase由于支持多个列族所以会有多条线的memtable和sstable。

【大数据】分布式数据库HBase,大数据,大数据,分布式,数据库,hbase,bigdata,sstable

2.3.完整读写过程

写过程:

【大数据】分布式数据库HBase,大数据,大数据,分布式,数据库,hbase,bigdata,sstable

  • 客户端发起写请求 客户端应用通过HBase客户端API(如Java API)向HBase提交一个PUT请求,包含待写入的数据(包括RowKey、列族、列限定符、值以及可选的时间戳等)。

  • 定位目标Region 访问ZooKeeper:客户端首先访问ZooKeeper集群,先查询hbase:root表以获取hbase:meta表所在的Region Server位置。 缓存元数据:客户端将获取到的元数据信息(如hbase:meta表或目标Region的位置)缓存在本地Client Cache中,以减少后续操作对ZooKeeper的依赖和网络开销。

  • 查找目标Region 查询元数据表:客户端使用缓存的信息连接到hbase:meta表所在的Region Server,根据待写入数据的RowKey在hbase:meta表中查找目标Region的位置。这个过程可能涉及Region的三层定位(Namespace、表名、RowKey区间),确保找到正确的Region负责处理该RowKey的数据。 更新缓存:客户端将查询到的目标Region的位置信息(包括Region Server地址和Region边界)更新到本地缓存中。

  • 与目标Region Server交互 发送写请求:客户端根据缓存中的信息,向目标Region Server发送实际的PUT请求。

  • Region Server内部处理 追加写入HLog(WAL,Write Ahead og):Region Server接收到PUT请求后,首先将写操作作为一条日志记录追加到HLog。HLog是一种预写式日志,用于保证在发生故障时能够恢复未持久化到磁盘的数据。 随机写入MemStore:接着,Region Server将数据随机写入对应Region的MemStore。MemStore是内存中的数据结构,用于临时存储待写入HFile(HBase的数据文件)的修改。

  • 更新BlockCache 读写加速:写入完成后,新写入的数据会被添加到Region Server的BlockCache中。BlockCache是一种基于LRU(最近最少使用)策略的缓存,用于加速后续对相同数据块的读取。

读过程:

【大数据】分布式数据库HBase,大数据,大数据,分布式,数据库,hbase,bigdata,sstable

  • 定位目标Region 访问ZooKeeper:客户端首先访问ZooKeeper集群,查询HBase的元数据表(hbase:meta)的位置信息。这里同样可能存在旧版流程(先查询hbase:root表)和新版流程(直接查询hbase:meta表)的区别。 缓存元数据:客户端将获取到的元数据信息(如hbase:meta表或目标Region的位置)缓存在本地Client Cache中,以减少后续操作对ZooKeeper的依赖和网络开销。

  • 查找目标Region 查询元数据表:客户端使用缓存的信息连接到hbase:meta表所在的Region Server,根据待读取数据的RowKey在hbase:meta表中查找目标Region的位置。这一步确保客户端知道应该向哪个Region Server的哪个Region发送读请求。 更新缓存:客户端将查询到的目标Region的位置信息更新到本地缓存中。

  • 与目标Region Server交互 发送读请求:客户端根据缓存中的信息,向目标Region Server发送实际的GET请求。

  • Region Server内部处理 查询BlockCache:Region Server首先在本地BlockCache中查找是否有请求的数据。BlockCache是一种基于LRU(最近最少使用)策略的缓存,存储最近访问过的HFile数据块。如果数据在BlockCache中命中,则直接返回给客户端,避免了磁盘I/O。 查询MemStore:如果BlockCache中未找到数据,Region Server接着在对应Region的MemStore中查找。MemStore存储了尚未刷写到HFile的最新数据,如果请求的数据在这里存在且是最新的版本,则直接返回给客户端。 查询HFile:如果BlockCache和MemStore均未命中,Region Server将从磁盘上的HFile中读取数据。HFile是按RowKey排序的持久化存储文件,通过二分查找等高效算法快速定位数据。读取到的数据将返回给客户端,并可能被加入到BlockCache中以供后续读取加速。 合并版本与过滤:对于同一RowKey的多个版本(依据时间戳区分),Region Server按照请求的时间戳范围或其他过滤条件(如列族、列限定符等)筛选并合并结果集,只返回满足条件的数据版本。

  • 客户端接收响应 处理响应:客户端接收到Region Server返回的数据后,解析并呈现给应用程序。如果请求涉及多个列族或多行数据,客户端可能需要合并来自不同Region Server的响应。

数据flush与compaction:

MemStore flush:当MemStore达到一定大小阈值时,Region Server将其内容刷写到硬盘上的HFile中,并清空MemStore。同时,对应的HLog记录可以被安全地截断(truncated),因为其数据已持久化。 Compaction:随着时间推移,针对同一Region可能会产生多个HFile。HBase后台会定期执行Compaction操作,合并小文件、删除过期版本的数据,并可能进行压缩,以优化读性能和存储空间利用率。

合并没有什么好说的,和bigtable一样,值得注意的是一直合并下去,单体过大后又会分成小块来存储,这个分块存储的过程就会造成一个大region1分成一个个小region。

【大数据】分布式数据库HBase,大数据,大数据,分布式,数据库,hbase,bigdata,sstable

2.4.master的作用

master主要就是负责整个集群的管理:

  • 通过master来对表进行增删改查

  • 负责region的分布

  • 负责不同region服务器的负载均衡,将负载较重的region服务器上的region重新分布到其它负载轻的region服务器上去。

  • region服务器故障失效后,借助master来将上面的region重新分配给其它服务器。文章来源地址https://www.toymoban.com/news/detail-860322.html

到了这里,关于【大数据】分布式数据库HBase的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据之Hadoop分布式数据仓库HBase

    HBase 是一个构建在 Hadoop 文件系统之上的面向列的数据库管理系统。 要想明白为什么产生 HBase,就需要先了解一下 Hadoop 存在的限制?Hadoop 可以通过 HDFS 来存储结构化、半结构甚至非结构化的数据,它是传统数据库的补充,是海量数据存储的最佳方法,它针对大文件的存储,

    2024年02月02日
    浏览(55)
  • 头歌大数据——HBase 伪分布式环境搭建

    第1关:HBASE伪分布式环境搭建 编程要求 好了,到你啦,你需要先按照上次实训——HBase单节点安装的方式将 HBase 安装在 /app 目录下,然后根据本关知识配置好伪分布式的 HBase ,最后点击测评即可通关。 测试说明 程序会检测你的 HBase 服务和 Hadoop 服务是否启动,以及伪分布

    2024年02月08日
    浏览(73)
  • 大数据开源框架环境搭建(五)——Hbase完全分布式集群的安装部署

    目录 实验环境: 实验步骤: 〇、Zookeeper安装配置: 一、安装前注意事项 二、HBase安装  三、Hbase集群配置 1.配置hbase-env.sh文件,位于Hbase安装目录/conf/ 2.配置hbase-site.xml文件,位于Hbase安装目录/conf/ 3.配置regionservers 4.新建 backup-masters文件,添加备份HMaster机器名 四、将配置好

    2024年02月08日
    浏览(45)
  • Hbase 系列教程:HBase 分布式文件存储系统解析

    作者:禅与计算机程序设计艺术 : Hbase 是 Apache 的开源 NoSQL 数据库项目之一。它是一个分布式、可扩展的、高性能、面向列的非关系型数据库。作为 Hadoop 大数据生态的一部分,Hbase 以高可用性、可伸缩性和水平可扩展性著称。它提供了一个列族模型(Column Family Model),能

    2024年02月05日
    浏览(52)
  • hbase分布式安装

    目录 1.安装Hbase 2.配置文件 3.Hbase服务启动      Zookeeper和Hadoop集群正常启动           进入/export/software目录,将hbase软件包导入该目录下。解压hbase软件包 到/export/servers目录下,并重命名为hbase。         进入hbase安装目录下,进入conf目录,修改hbase-env.sh、 hbase-si

    2024年02月10日
    浏览(54)
  • HBase 分布式搭建

    前言: 请先确保 Hadoop 集群搭建完成。 Hadoop 完全分布式搭建(超详细) 搭建环境介绍: 三台主机,一主两从,系统为 Centos 7.5。 相关组件版本信息如下: jdk1.8 hadoop-3.1.3 zookeeper-3.5.7 hbase-2.2.3 注意,以下安装教程中涉及到的路径请替换成自己的! ZooKeeper 安装 解压并改名 添

    2024年02月04日
    浏览(44)
  • 搭建HBase分布式集群

    0. Prerequisite There are 3 VMs - hadoop3/hadoop4/hadoop5 for fully-distributed HBase cluster, the setup plan looks like: hadoop3 hadoop4 hadoop5 Hadoop hdfs NameNode:8020 DateNode:50010 JobHistoryServer:19888 DataNode:50010 SecondaryNameNode:50090 DateNode:50010 Hadoop yarn NodeManger:8040 ResourceMananger:8088 NodeManger:8040 NodeManger:8040 Zookeeper Quor

    2024年02月08日
    浏览(36)
  • 搭建HBase伪分布式集群

    1. Install zookeeper 1) download zookeeper from https://zookeeper.apache.org/releases.html#download 2) extract binary 3) configurate zoo.cfg 4) start zookeeper 5) try zookeeper Note: use following command to stop zookeeper 2. Install Hadoop 1) download Hadoop from https://hadoop.apache.org/releases.html 2) extract binary 3) configurate 4) format the filesyst

    2024年02月10日
    浏览(47)
  • HBase(单机)伪分布式安装

    准备工作:Hadoop已经安装、hbase-1.2.6-bin安装包。 1、上传hbase-1.2.6-bin.tar.gz压缩包到/home/hadoop目录下,并使用tar xvf 解压。 2、终端下输入:vim .bashrc,即用vim编辑器打开bashrc文件。 3、在bashrc文件的末尾设置如下Hbase的环境变量,要注意hbase解压后的文件名是hbase-1.2.6还是hbase-1

    2024年02月04日
    浏览(61)
  • HBase 伪分布式环境搭建 - 头歌

    mkdir /app cd /opt tar -zxvf hbase-2.1.1-bin.tar.gz -C /app cd /app cd hbase-2.1.1 cd conf echo $JAVA_HOME /usr/lib/jvm/jdk1.8.0_111 vim hbase-env.sh 进入文件,找到下图中红色框框内的路径,将#去掉,把=号后面的路径改成/usr/lib/jvm/jdk1.8.0_111。注意:记得先按A,才能改。 按esc键,输入  :wq  ,回车。 vim hb

    2024年04月28日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包