我的编程空间,编程开发者的网络收藏夹
学习永远不晚

hbase数据原理及基本架构是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

hbase数据原理及基本架构是什么

这篇文章主要介绍了hbase数据原理及基本架构是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇hbase数据原理及基本架构是什么文章都会有所收获,下面我们一起来看看吧。

hbase是一个构建在hdfs上的分布式列存储系统;

hbase是apache hadoop生态系统中的重要一员,主要用于海量结构化数据存储

从逻辑上讲,hbase将数据按照表、行和列进行存储

hbase表特点:

  1.大:一个表可以有数十亿行,上百万列;

  2.无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;

  3.面向列:面向列(族)的存储和权限控制,列(族)独立检索;

  4.稀疏:对于空(null)的列,并不占用存储空间,表可以设计的非常稀疏;

  5.数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;

  6.数据类型单一:hbase中的数据都是字符串,没有类型

hbase与hdfs的对比:

  1.两者都具有良好的容错性和扩展性,都可以扩展到成百上千个节点。

  2.hdfs适合批处理场景,不支持数据随机查找,不适合增量数据处理,不支持数据更新。

行存储与列存储:

  传统行式数据库:

    1.数据是按行存储的

    2.没有索引的查询使用大量I/O

    3.建立索引和物化视图需要花费大量时间和资源

    4.面向查询的需求,数据库必须被大量膨胀才能满足性能要求

  列式数据库:

    1.数据是按列存储-每一列单独存放

    2.数据即是索引

    3.指访问查询涉及的列-大量降低系统I/O

    4.每一列由一个线索来处理-查询的并发处理

    5.数据类型一致,数据特征相似-高效压缩

第二:hbase数据模型

hbase是基于Google BigTable模型开发的,典型的key/value系统

第一:hbase介绍

hbase是一个构建在hdfs上的分布式列存储系统;

hbase是apache hadoop生态系统中的重要一员,主要用于海量结构化数据存储

从逻辑上讲,hbase将数据按照表、行和列进行存储

hbase表特点:

  1.大:一个表可以有数十亿行,上百万列;

  2.无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;

  3.面向列:面向列(族)的存储和权限控制,列(族)独立检索;

  4.稀疏:对于空(null)的列,并不占用存储空间,表可以设计的非常稀疏;

  5.数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;

  6.数据类型单一:hbase中的数据都是字符串,没有类型

hbase与hdfs的对比:

  1.两者都具有良好的容错性和扩展性,都可以扩展到成百上千个节点。

  2.hdfs适合批处理场景,不支持数据随机查找,不适合增量数据处理,不支持数据更新。

行存储与列存储:

  传统行式数据库:

    1.数据是按行存储的

    2.没有索引的查询使用大量I/O

    3.建立索引和物化视图需要花费大量时间和资源

    4.面向查询的需求,数据库必须被大量膨胀才能满足性能要求

  列式数据库:

    1.数据是按列存储-每一列单独存放

    2.数据即是索引

    3.指访问查询涉及的列-大量降低系统I/O

    4.每一列由一个线索来处理-查询的并发处理

    5.数据类型一致,数据特征相似-高效压缩

第二:hbase数据模型

hbase是基于Google BigTable模型开发的,典型的key/value系统

第三:hbase物理模型

每个column family存储在HDFS上的一个单独文件中;

Key和Version number在每个column family中均有一份

空值不被保存

eg:

info Column Family:

roles Column Family

数据物理存储:

1.Table中所有的行都按照row key的字典序列排列;

2.Table在行的方向上被分割为多个Region;

3.Region按照大小分割的,每个表开始只有一个region,随着数据的增多,region不断的增大,当增大到一个阀值的时候,region就会等分成两个新的region,之后会有越来越多的region;

4.Region是Hbase中分布式存储和负载均衡的最小单元,不同的region分布在不同RegionServer上;

5.Region虽然是分布式存储的最小单元,但并不是存储的最小单元。

  1)Region是由一个或者多个Store组成,每个store保存一个columns family;

  2)每个Store又由一个memStore和0或多个StoreFile组成

  3)memStore存储在内存中,StoreFile存储在HDFS上。

第四:hbase基础架构

Hbase架构:

在分布式的生产环境中,HBase 需要运行在 HDFS 之上,以 HDFS 作为其基础的存储设施。在 HBase 的集群中主要由 Master 和 Region Server 组成,以及 Zookeeper

Hbase相关的组件:

Clinet:

  包含访问Hbase的接口,并维护cache来加快对Hbase的访问。

zookeeper:

  保证任何时候,集群中只有一个master

  存储所有Region的寻址入口

  实时监控Region Server的上线或者下线信息,并实时通知给Master

  存储HBase的schema和table元数据

  zookeeper作用:

    HBase依赖zk;

    默认情况下Hbase管理zk实例,eg:启动或者停止zk

    Master与RegionServers启动时会向zk注册

    Zookeeper的引入使得Master不在是单点故障

Master:

  为Region Server分配region

  负责Region Server的负载均衡

  发现失效的Region Server并重新分配他上面的region

  管理用户对table的增删改查操作

Region Server:

  维护region,处理对这些region的IO请求

  负责切分在运行过程中变得过大的region

-ROOT-表与-META-表:

-ROOT-表:

  包含-META-表所在的region列表,该表只会有一个Region;

  zookeeper中记录了-ROOT-表的位置

-META-表:

  包含所有的用户空间region列表,以及RegionServer的服务器地址

详解:

1.HBase的所有Region元数据被存储在.META.表中,随着Region的增多,.META.表中的数据也会增大,并分裂成多个新的Region。为了定位.META.表中各个Region的位置,把.META.表中所有Region的元数据保存在-ROOT-表中,最后由Zookeeper记录-ROOT-表的位置信息。所有客户端访问用户数据前,需要首先访问Zookeeper获得-ROOT-的位置,然后访问-ROOT-表获得.META.表的位置,最后根据.META.表中的信息确定用户数据存放的位置,如上图所示。

2.-ROOT-表永远不会被分割,它只有一个Region,这样可以保证最多只需要三次跳转就可以定位任意一个Region。为了加快访问速度,.META.表的所有Region全部保存在内存中。客户端会将查询过的位置信息缓存起来,且缓存不会主动失效。如果客户端根据缓存信息还访问不到数据,则询问相关.META.表的Region服务器,试图获取数据的位置,如果还是失败,则询问-ROOT-表相关的.META.表在哪里。最后,如果前面的信息全部失效,则通过ZooKeeper重新定位Region的信息。所以如果客户端上的缓存全部是失效,则需要进行6次网络来回,才能定位到正确的Region。

高可用

Write-Ahead-Log(WAL)保障数据高可用

理解高可用首先:必须理解下HLog的作用,HBase中的Hlog机制是WAL的一种实现,而WAL是事务机制中常见的一致性的实现方式。每个RegionServer中都会有一个HLog的实例,RegionServer会将更新操作(put,delete等),先记录到WAL(也就是HLog中),然后再将其写入到Store的MemStore,最终Memstore达到一定的阀值后,在写入到HFile中,这样就保证了HBase的写的可靠性,若没有WAL,当RegionServer挂掉的时候,MemStore还没有写到HFile的数据,或者说StoreFile没有保存的时候,数据会丢失。(说到这里或许有人会问,假如HFile本身丢失了怎么办,这是由HDFS来保证的。在HDFS中的数据默认会有3份)

HFile是由很多个数据块(Block)组成,并且有一个固定的结尾块,其中的数据块是由一个Header和多个Key-Value的键值对组成,在结尾的数据块中包含了数据相关的索引信息,系统也是通过结尾的索引信息找到HFile中的数据。

组件的高可用

Master容错:Zookeeper重新选择一个新的Master

  无Master过程中,数据读取任然照常进行

  无Master过程中,region切分、负载均衡等无法进行

RegionServer容错:

  定时向Zookeeper汇报心跳,如果一旦一段时间内未出现心跳,Master将该RegionServer上的Region重新分配到其他的RegionServer上;

  失效的服务器上“预写”日志由主服务器进行分割并派送给新的RegionServer上

zookeeper容错:zookeeper是一个可靠的服务

  一般是3到5个zookeeper实例

读写流程

  写操作:

    1)client通过zookeeper的调度,向regionserver发出写数据的请求,在Region中写数据

    2)数据首先记录在HLog中,然后再将其写入到Store的MemStore,直到MemStore达到预定阀值

    3)MemStore中的数据被Flush成一个StoreFile

    4)随着StoreFile文件的不断增多,当其数据增长到一定阀值后,触发Compact合并操作,将多个StoreFile合并成一个StoreFile,同时进行版本合并和数据删除

    5)StoreFiles通过不断的Compact合并操作,逐步形成越来越大的StoreFile

    6)单个StoreFile大小超过一定阀值后,触发Split操作,把当前Region Split成2个新的Region,父Region会下线,新Split出的2个子Region会被HMaster分配到相应的RegionServer上,使原先1个Region的压力得以分流到2个Region上面

  通过上述的写流程可以发现,HBase更新、删除等操作都是在后续Compact历程中进行的,使得用户的写操作只要进入内存就可以立刻返回,实现可HBase I/0的高性能。

  读操作:

    1)client访问zk,查找-ROOT-表,获取.META.表的信息。

    2)从.META.表查找,获取存放目标数据的Region信息,从而找到对应的RegionServer。

    3)通过RegionServer获取需要查找的数据

    4)RegionServer的内存分为MemStore和BlockCache两部分,MemStore主要用于写数据,BlockCache主要用于读数据,读请求先到MemStore中查数据,查不到就到BlockCache中查,在查不到就会到StoreFile上读,并把读的结果放入BlockCache中。

  读取流程:client-->zookeeper-->-ROOT-表-->.META.表-->RegionServer-->Region-->client

关于“hbase数据原理及基本架构是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“hbase数据原理及基本架构是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

hbase数据原理及基本架构是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Nginx的基本架构及工作原理是什么

Nginx是一个高性能的HTTP和反向代理服务器,采用事件驱动架构来处理请求。它的基本架构是由Master和Worker进程组成。Master进程负责管理Worker进程的生命周期,处理信号、配置文件的加载和重新加载等工作。Worker进
Nginx的基本架构及工作原理是什么
2024-04-03

Ansible架构及工作原理是什么

Ansible架构及工作原理是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Ansible 是一个模型驱动的配置管理器,支持多节点发布、远程任务执行。默认使用 SSH
2023-06-19

zookeeper数据结构及基本命令是什么

Zookeeper是一个开源的分布式协调服务,它可以用于构建和管理分布式应用程序的配置信息,命名服务、分布式锁、分布式队列等。Zookeeper的数据模型是一个类似于文件系统的层级命名空间,其中的每个节点称为一个Znode。Zookeep
2023-10-22

Kappa架构原理是什么

本篇内容介绍了“Kappa架构原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Lambda架构回顾Lambda架构的核心思想是把大数
2023-06-05

mfc框架的基本运行原理是什么

MFC(Microsoft Foundation Classes)框架是微软公司开发的一套C++类库,用于简化Windows应用程序的开发。MFC框架的基本运行原理包括以下几个方面:消息映射:MFC框架通过消息映射机制来处理Windows消
mfc框架的基本运行原理是什么
2024-03-02

vsan超融合架构数据恢复原理是什么

这篇文章主要介绍“vsan超融合架构数据恢复原理是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vsan超融合架构数据恢复原理是什么”文章能帮助大家解决问题。一、vsan分布式存储故障情况介绍近
2023-06-03

Kafka的架构原理是什么

Kafka的架构原理主要是基于分布式发布-订阅消息系统的设计理念。其架构包括以下几个核心组件:生产者(Producer):负责向Kafka集群发送消息。主题(Topic):消息的逻辑分类,生产者可以将消息发送到指定的主题。分区(Partit
Kafka的架构原理是什么
2024-03-14

SpringSecurity基本原理是什么

小编给大家分享一下SpringSecurity基本原理是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、SpringSecurity 本质SpringSecurity 本质是一个过滤器链;从启动是可以获取到(加载)过
2023-06-15

Rails基本原理是什么

这篇文章主要介绍“Rails基本原理是什么”,在日常操作中,相信很多人在Rails基本原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Rails基本原理是什么”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-17

Redis数据结构原理是什么

本篇内容介绍了“Redis数据结构原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!RedisDbRedis服务器默认有16个数据库,
2023-07-05

数据库之Hive概论和架构和基本操作是什么

今天小编给大家分享一下数据库之Hive概论和架构和基本操作是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Hive概论H
2023-04-14

LAMP架构实现原理是什么

LAMP架构是一种常用的Web应用程序开发和部署架构,它由以下四个核心组件组成:1. Linux操作系统:作为底层操作系统,提供了稳定、安全的基础环境。2. Apache HTTP服务器:作为Web服务器,接收并处理客户端请求,并将静态文件
2023-09-21

webService的基本原理是什么

Web服务的基本原理是通过网络来实现不同系统之间的通信和数据交换。它基于HTTP协议,通过使用XML或JSON等标准的数据格式来传输数据。Web服务的基本原理包括以下几个方面:定义接口:Web服务首先需要定义一组接口,这些接口描述了可以通
webService的基本原理是什么
2024-02-29

数据库数据结构的基本概念是什么

这篇文章主要介绍“数据库数据结构的基本概念是什么”,在日常操作中,相信很多人在数据库数据结构的基本概念是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”数据库数据结构的基本概念是什么”的疑惑有所帮助!接下来
2023-06-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录