HBase理论_HBase架构组件介绍

        近来有些空闲时间,正好最近也在开发HBase相关内容,借此整理一下学习和对HBase组件的架构的记录和个人感受,付出了老夫不少心血啊,主要介绍的就是HBase的架构设计以及我的拓展内容。内容如有不当或有其他理解

matirx70@163.com

HBase架构设计

HBase master 架构介绍

        hbase master采用主备架构,master与regionserver采用主从架构(即一个HMaster会控制多个regionserver),HBase由zookeeper、HMaster、HRegionServer三部分组成,底层数据存储在HDFS上(存储到HDFS中的是Hfile文件)。

【个人拓展:主备架构和主从架构

        1、主备架构和主从架构有什么区别?

       主备架构:只有主库提供读写服务,备库冗余作故障转移用

hadoop中的namenode,一个是master(active),另一个master(standby)

也就是主机节点宕机了,另一台备用节点就会变为active,变为主,这是主备架构

        主从架构: master , slave

        就是我们namenode 下面挂着datanode ,他们之间的关系是主从,

        在CDH的平台上也可以看到它。具体操作如下进入到 HBase ->实例,可以看到Master和Regionserver。

                                                              【我自己拍的图】

        进入到配置中可以看到ZK,HBase要依赖ZK的,同时在下面有一个HBase的长连接的目录

                                                            【我自己拍的图】

        如何查看这个长连接目录?

# 进入集群,简单看一下zk存在的地方
[root@worker-1 ~]# zookeeper-client
[zk: localhost:2181(CONNECTED) 0] ls /
[hive_zookeeper_namespace_hive, zookeeper, ngdata, hbase, solr]
[zk: localhost:2181(CONNECTED) 1] ls /hbase
[meta-region-server, rs, splitWAL, backup-masters, table-lock, flush-table-proc, master-maintenance, online-snapshot, acl, switch, master, running, tokenauth, draining, namespace, hbaseid, table]
[zk: localhost:2181(CONNECTED) 2]  ls /hbase/master
[]#f防伪标识:作者csdn: matrix70     --->  xidaolaoli

 HBase官方架构图

                                       【HBase官方架构图】

【个人经验拓展架构图理解】

        这个官方的架构图有歧义,在Memstore溢写时,溢写到StoreFile中,StoreFile中实际存储的是HFile文件,StoreFile实际存储在HDFS上,即图中StoreFile应放在HDFS中,而不应该划分到Region中,这就是有歧义的地方。后续我会给出一个新的架构图。

        要记住这个Hlog是做什么的,一个regionserver下面只有一个Hlog,wal这里还有一个协处理器,可二次开发,但是要注意我们处理器是监控不了我们的TSV + bulkload的,基于HBase底层做二次开发的,要注意这一个点,协比如麒麟做一个二次开发。这是题外话了,我在这里简单扩展一下。

简述官方架构图功能:

Client客户端

        Client客户端,它提供了访问HBase的接口,并且维护了对应的cache来加速HBase的访问。

Zookeeper

        存储HBase的元数据(meta表),无论是读还是写数据,都是去Zookeeper里边拿到meta元数据告诉给客户端去哪台机器读写数据

HRegionServer regionServer 服务器端

        它是处理客户端的读写请求,负责与HDFS底层交互,是真正干活的节点。

总结大致的流程就是:client请求到Zookeeper,然后Zookeeper返回HRegionServer地址给client,client得到Zookeeper返回的地址去请求HRegionServer,溢写HRegionServer读写数据后返回给client。

HBase 架构组件介绍

HMaster

        HBase引入zookeeper,避免HMaster单点问题,HMaster主要负责table和region的管理工作:

        1 )管理用户的读写操作

        2 )管理HRegionServer的负载均衡,调整region分布,这是region切分的时候要用的

        3 )region split后,负责新region重分

        4 )在HRegionServer停机后,负责失效的HRegionServer上region的迁移,如果这个HRS服服务挂了,那么Master会把RegionServer中的Region中的数据迁移到正常的HRS中

【个人扩展-->如何解决主备的单点问题?】

        与Namenode的单点问题解决方式是同一个,Namenode中单点问题是通过zookeeper解决,即如果主节点挂掉,则zk中的临时节点就会消失,然后备用的节点重新注册一个临时节点,然后它就升级为主节点了。

HRegionServer

        是HBase中最核心的模块,也是干活的模块,一般HRegionServer会选择和DataNode部署在同一个节点,实现短路读/数据本地化,HRS主要功能:

        1 )维护Region,每个Region下面存着数据的,处理这些Region的IO请求

        2 )Regionserver负责切分在运行过程中逐渐变大的Region​ 一个HRegionServer下面可以有多个Region

HRegion/Region

        HBase使用rowkey将表水平切割成多个HRegion/Region.

【个人拓展理解-->HRegion】

        从HMaster的角度,每个HRegion都记录了startkey和endkey(第一个Region的startkey为空,最后一个Region的endkey为空),由于rowkey是有序的,有序就会做一个索引,因此client端可以通过HMaster快速定位到某个rowkey在哪个HRegion中,不需要全表去扫描了,通过key-value的形式就干出来了。

【个人拓展理解-->Rowkey是如何水平切分HRegion 】

        这一个可是精华,学习的时候理解了半天,当然,我还是会用图演示出来方便些,我愿称之为全网最NB的理解,请把NB打在评论区!!

        废话不多说:如果建表时未进行预分region,startkey和endkey都为空,则区间为(负无穷,正无穷),随着数据增加,region分裂后会生成新的region,此时startkey和endkey会生成具体的值。

【演示Rowkey是如何水平切分HRegion的】

【演示Region分裂】

【个人拓展->Region是怎样产生的】

        1)按照Rowkey预分Region

        2)如果没有按照Rowkey预分Region,则当一个Region达到一定的值的时候,会自动进行Region分裂。具体到什么值,后面我会详细来说说,哈哈哈。

HStore/Store

        每一个列族对应一个HStore/Store,一个HRegion/Region里包含一个或者多个HStore/Store,由此在设计cf时,尽量将同一系列的数据存在一个列族中,便于同一系列的数据都存在同一个region中。

【列族设计】

Hlog

        hbase WAL(write ahead log)(预写日志机制),在用户发起写请求时先向Hlog写一份,然后再将数据向memstore中写,Hlog数据是写磁盘,为了避免HRegionServer故障时memstore数据丢失,Hlog并不是无限去存储的,否则就冗余了,他也有阈值,会滚动更新,达到阈值,会提示memstore把数据溢写到HDFS上,等memstore的数据全部溢写到磁盘上,则Hlog的备份的数据会清空,而新数据的加入会对应冲抵掉较早的Hlog数据。

Memstore(阈值128M)

        hbase写缓存,在用户发起写请求时先写入hlog,然后再写入memstore中,当memstore写入达到flush阈值时,将memstore中的数据写到hdfs上(hfile),每个列族对应一个memstore,即一个HStore/Store中只有一个memstore。

storefile

        当memstore写数据达到设定的阈值之后,会将数据溢写到hdfs,即storefile,内部存储hfile。storefile会进行合并,否则可能出现小文件的问题,当storefile经过多次合并后变得已经达到指定规则的分裂阈值,则再进行region分裂。

HRS、DataNode、table、region、columnfamily、Hstore/store、memstore、storefile关系图,修正了部分

有空补充

参考资料:

1、hbase官网Apache HBase® Reference Guide

2、大神给我的讲解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/886143.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第九部分 :1.STM32之通信接口《精讲》(USART,I2C,SPI,CAN,USB)

本芯片使用的是STM32F103C8T6型号 STM32F103C8T6是STM32F1系列中的一种较常用的低成本ARM Cortex-M3内核MCU,具有丰富的通信接口,包括USART、SPI、I2C等。下面是该芯片上通信接口的管脚分布、每个接口的工作模式、常用应用场景和注意事项。 1. USART (通…

ODOO学习笔记(8):模块化架构的优势

灵活性与可定制性 业务流程适配:企业的业务流程往往因行业、规模和管理方式等因素而各不相同。Odoo的模块化架构允许企业根据自身的具体业务流程,选择和组合不同的模块。例如,一家制造企业可以启用采购、库存、生产和销售模块,并通…

搜维尔科技:Manus VR数据手套集成,遥操作五指灵巧手解决方案

Manus VR数据手套集成,遥操作五指灵巧手解决方案 搜维尔科技:Manus VR数据手套集成,遥操作五指灵巧手解决方案

MATLAB课程:AI工具辅助编程——MATLAB+LLMs

给出一些可能有用的方法辅助大家写代码。 方法一:MATLAB软件LLM (不太懂配置的同学们为了省事可以主要用这个方法) 方法一特别针对本门MATLAB教学课程,给出一种辅助ai工具的操作指南。MATLAB中可以安装MatGPT插件,该插件通过调用ChatGPT的API…

C++二叉平衡搜索树:AVL树的插入、删除与平衡

目录 引言 AVL树的概念 AVL树节点的定义 AVL树的插入 AVL树的基本结构 AVL树的插入 第一步:按搜索树的规则进行插入 第二步:更新平衡因子 1、父节点的平衡因子为 parent->bf 0 2、更新完 parent 的 bf,如果 parent->bf 1…

机器学习(1)

一、机器学习 机器学习(Machine Learning, ML)是人工智能(Artificial Intelligence, AI)的一个分支,它致力于开发能够从数据中学习并改进性能的算法和模型。机器学习的核心思想是通过数据和经验自动优化算法&#xff…

【vue3中el-table表格高度自适应】

分享一种开发中遇到的比较方便的表格高度自适应方案 template代码 <div class"page"><div class"table_wrap"><el-table></el-table></div> </div>css代码 将el-table设置为绝对定位&#xff0c;相对于父元素定位且…

【Kafka】集成案例:与Spark大数据组件的协同应用

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《大数据前沿&#xff1a;技术与应用并进》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、什么是kafka 2、Kafka 的主要特性 3、Kafka 的…

【卡尔曼滤波】递归算法Recursive的应用 C语言、Python实现(Kalman Filter)

【卡尔曼滤波】递归算法Recursive的应用 C语言、Python实现&#xff08;Kalman Filter&#xff09; 更新以gitee为准&#xff1a; gitee地址 文章目录 递归算法算术平均的递归算法例子卡尔曼滤波递归Python实现C语言实现与普通卡尔曼滤波的比较附录&#xff1a;压缩字符串、大…

C#界面设计

C#界面设计通常指的是使用C#编程语言及其相关的图形用户界面&#xff08;GUI&#xff09;框架&#xff08;如Windows Forms、WPF&#xff08;Windows Presentation Foundation&#xff09;或Uno Platform等&#xff09;来创建应用程序的用户界面。以下是一些关于C#界面设计的基…

python+pptx:(二)添加图片、表格、形状、模版渲染

目录 图片 表格 合并单元格 填充色、边距 写入数据 形状 模版渲染 上一篇&#xff1a;pythonpptx&#xff1a;&#xff08;一&#xff09;占位符、文本框、段落操作_python输出ppt母版占位符标号-CSDN博客 from pptx import Presentation from pptx.util import Cm, In…

【Windows】CMD命令学习——系统命令

CMD&#xff08;命令提示符&#xff09;是Windows操作系统中的一个命令行解释器&#xff0c;允许用户通过输入命令来执行各种系统操作。 系统命令 systeminfo - 显示计算机的详细配置信息。 tasklist - 显示当前正在运行的进程列表。 taskkill - 终止正在运行的进程。例如&am…

Java的栈与队列以及代码实现

Java栈和队列 栈的概念&#xff08;Stack&#xff09;栈的实现代码队列&#xff08;Queue&#xff09;模拟实现队列(双链表实现)循环队列&#xff08;循环数组实现&#xff09;用队列实现栈用栈来实现队列总结 栈的概念&#xff08;Stack&#xff09; 栈是常见的线性数据结构&…

Node.js is Web Scale

点击“打开/下载题目”进去看看情况&#xff1a; 为了方便查看翻译成中文简体来看&#xff1a; emmm&#xff0c;看不懂什么意思&#xff0c;查看源代码&#xff0c;js表示是一段JavaScript代码&#xff0c;丢给AI分析一下&#xff1a; // server.js const express require(&…

Unity编辑器的高级扩展技术

一、Unity编辑器扩展的基础知识 Unity编辑器提供了丰富的API&#xff0c;允许开发者创建自定义的编辑器窗口、属性和工具。这些API主要分布在UnityEditor命名空间中&#xff0c;主要包括以下几个类别&#xff1a; Editor Windows&#xff1a;自定义窗口&#xff0c;用于提供独…

缓冲区溢出,数据被踩的案例学习

继续在ubuntu上学习GDB&#xff0c;今天要学习的是缓冲区溢出。 程序的地址&#xff1a; GitHub - gedulab/gebypass: bypass password by heap buffer overflow 编译的方法&#xff1a; gcc -g -O2 -o gebypass gebypass.c 照例设置一下科学shangwang代理&#xff1a; e…

数字人直播骗局大曝光!真假源码厂商搭部署的源码有何差异?

随着数字人直播技术的不断发展成熟&#xff0c;它所蕴含着的市场前景和收益潜力开始逐渐显化&#xff0c;使得有意向入局的人数持续增多的同时&#xff0c;也让不少骗子看到了可乘之机&#xff0c;从而炮制出了一个又一个的数字人直播骗局。 其中&#xff0c;最为经典的便是dai…

【AI日记】24.11.14 复习和准备 RAG 项目 | JavaScript RAG Web Apps with LlamaIndex

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 今天的所有工作都是为了明天要开始的个人项目做准备 核心工作 1 内容&#xff1a;JavaScript RAG Web Apps with LlamaIndex时间&#xff1a;2 小时评估&#xff1a;不错&#xff0c;完成收获&#xff1a;学习…

git配置远程仓库的认证信息

git配置远程仓库的认证信息 远程仓库的认证信息是什么&#xff1f;为何需要&#xff1f;如果不配置认证信息的话 配置认证信息的方式有哪些&#xff1f;用户名和密码Git 凭证助手&#xff08;Credential Helper&#xff09;SSH密钥认证使用主机认证信息的配置文件~/.netrc 远程…

#渗透测试#SRC漏洞挖掘#云技术基础03之容器相关

目录 一、Podman相关 &#xff08;一&#xff09;Podman简介 &#xff08;二&#xff09;Pod相关操作 二、容器相关 &#xff08;一&#xff09;容器概念 &#xff08;二&#xff09;容器的历史发展 &#xff08;三&#xff09;Capabilities相关 三、Kubernetes&#x…