Hbase 理论知识

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

要学习Hbase了,工欲善其事必先利其器,要真正在学习的时候看懂每一步操作,必须先把理论知识先过一遍,总结了一点Hbase的网络知识。

Hbase简介

        Hbase 是构建在HDFS上的分布式列存储数据库,是一个高可靠性、高性能、面向列、客伸缩的分布式存储系统,利用Hbase技术可以再廉价PC sever上 搭建大规模结构化存储集群。

        Hbase 是Google Bigtable 的开源实现,类似Google Bigtable 利用GFS 作为其我呢见存储系统,Google 运行Mapreduce 来说处理Bigtable 中的海量数据,Hbase 同样利用Hadoop Mapreduce 来处理 Hbase 中的海量数据;Google Bigdata利用 Chubby 作为协同服务,Hbase利用 Zookeeper作为协同服务。

Hbase生态圈

Hbase 理论知识

 Hbase 利用HDFS 分布式文件系统存储数据,确保HDFS是ok的,先搭建HDFS再搭建HBase。海量存储与高并发操作就是要利用HBase。

HBase的特点

与传统数据库相比,Hbase具有如下特点:

  1. 大:单表可以数十亿行,数百万列(上TB级别的数据,底层采用分布式存储,从下往上解决存储,在想我的电脑才两个TB,每个虚拟机都才分配了20gb,看来到时候要租服务器玩了)
  2. 无模式:同一个表的不同行可以有截然不同的列(传统数据库有字段,空着也在占空间,Hbase空着的不占空间,每一行的列数都可以不一样)
  3. 面向列:存储、权限控制、检索均面向列(按列存储,同一类型的数据一个文件可以方便压缩,降低I/O,加快读取速度,Hbase的优势)
  4. 稀疏:空列不占用存储,表是稀疏的
  5. 多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳(每个单元格按不同时间插入可不同版本)
  6. 数据类型单一:数据都是字符串,没有类型(插入前转换成类型单一的字符串,读取的时候再转换回去)

HBase数据模型

Hbase 理论知识

 第一列 Row Key 主键

第二列 version   版本

第三列 ColumnFamily 列簇1

第四列 ColumnFamily 列簇2  

1.表

        在Hbase 中数据是以表的形式存储的,通过表可以将某些列放在一起访问,同一个表中的数据通常是相关的,可以通过列簇进一步放在一起进行访问。用户可以通过命令行(shell)或者Java API 来创建,创建表时只需要指定表名和至少一个列簇。

        Hbase的列式存储结构允许用户存储海量的数据到相同的表中,而在传统数据库中,海量数据需要被切分成多个表进行存储。

        

 2.行键(Row Key)

        RowKey既是Hbase表的行键,也是HBase表的主键。Hbase表中的记录是按照Rowkey的字典顺序进行存储。

        在HBase中,为了高效地检索数据,需要设计良好地Rowkey来提高查询性能。首先,Rowkey被冗余存储,所以长度不宜过长,Rowkey过长见会占用大量地存储空间同时会降低检索效率:其次RowKey应该尽量均匀分布,避免产生热点问题(Hbase可划分成很多regions,最好分散均匀,保证负载均衡);另外需要保证Rowkey的唯一性。

3.列簇(ColumnFamily)

  
        HBase表中的每个列都归属于某个列簇,一个列簇中的所有列成员有着相同的前缀。比如,列url和host都 是列簇RI的成员。列簇是表的schema的一部分,必须在使用表之前定义列簇,但列却不是必须的,写数据的时候可以动态加入。一般将经常一起查询的列放在一个列簇中,合理划分列簇将减少查询时加载到缓存的数据,减少I/O,提高查询效率,但也不能有太多的列簇,因为跨列簇访问是非常低效的。

4.单元格

        HBase中通过Row和Column确定的一个存储单元称为单元格(Cell)。每个单元格都保存着同一份数据的多个版本,不同时间版本的数据按照时间顺序倒序排序,最新时间的数据排在最前面
        为了避免数据存在过多版本造成的管理代包括存储和索引)负担,HBase提供了两种数据版本回收方式。是保存数据的最后n个版本;是保存最近一段时间内的数据版本,比如最近七天。用户可以针对每个列族进行设置。

Hbase物理模型

  • 每个列簇存储在HDFS上的一个单独文件里
  • RowKey和version在每一个列簇里均有一份
  • 空值不保存,占位符都没有

Hbase 理论知识

 文章来源地址https://www.toymoban.com/news/detail-430660.html

  • Table中的所有行都按照Row key 的字典序排列
  • Table 在行的方向上分割为多个Region

Hbase 理论知识

 

 (Hbase之所以可以分布式存储,是由下而上彻底解决分布式存储问题,如果不能拆分成很多Region 那就是一个整体,就没办法分别存储到各个节点。和hdfs 的数据块blocks差不多的意思,最终存储还是按照hdfs的blocks存储。)(负载均衡)

Table 默认最初只有一个Region,随着记录数不断增加而变大之后,会逐渐分裂成多个region,一个region由【startkey,endkey】表示,不同的region会被Master分配给相应的RegionSever进行管理。(每个regionserver都是不同节点,查询的时候不同需求不同节点,可以达到负载均衡

Hbase 理论知识

Region 是Hbase 中分布式存储和负载均衡的最小单元,不同Region分布到不同的Regionserver。

(每个表的region分布在各个节点上,节点的region数量不同各节点之间会相互迁移region,平均分region达到负载均衡。)

Hbase 理论知识

 

region内部结构

  • Region虽然是分布式存储的最小单元,但是并不是存储的最小单元。(最小存储单元是StoreFile)
  • Region有一个或多个Store组成,每个Store保存一个columns family 。
  • 每个Store 又由一个memStore 和0个或多个StoreFile组成
  • memStore存储在内存中,StoreFile存储在HDFS

Hbase 理论知识

 


 

HBase系统架构

总架构

Hbase 理论知识

         Hbase 采用Master /Slave 架构搭建集群,由HMaster节点,HRegionServer节点,Zookeeper集群组成,而在底层他将数据存储在HDFS中,因而涉及到HDFS的namenode,datanode等,每个Datanode上面最好启动一个HRegionServer,这样在一定程度上保持数据的本地性。(写的是最好,其实我感觉是一定,放在一个节点上,DN和HRS,提升请求反应的效率

        

Hbase 理论知识

架构——Zookeeper

        Zookeeper协调所有节点的共享信息,在HMaster和HRegionServer连接到Zookeeper后创建临时节点(Ephemeral节点),并使用Heartbeat机制维持这个节点的存活状态,如果某个Ephemeral节点失效,则HMaster会收到通知,并作相应的处理。 

         HMaster通过监听ZooKeeper中的Ephemeral节点(默认: /hbase/rs/*)来监 控HRegionServer的加入和宕机。在第一个HMaster连接到ZooKeeper时会创建Ephemeral节点(默认 : /hbase /master)来 表示Active的HMaster,其后加进来的HMaster则监听该Ephemeral节点,如果当前Active的HMaster宕机,则该节点消失,因而其他HMaster得到通知,而将自身转换成Active的HMaster,在变为Active的HMaster之前,它会创建在/hbase/back- masters/下创建自己的Ephemeral节点。

 架构——Master

  1. 管理HRegionServer,实现其region负载均衡。
  2. 管理和分 配HRegion,在HRegion split时分配新的HRegion;在HRegionServer退 出时迁移其内的HRegion到其他HRegionServer上。
  3. 监控 集群中所有HRegionServer的状态。
  4. 实现DDL操作 (Data Definition Language, namespace和table的增删改,columnfamiliy的增删改等)。
  5. 管理namespace 和table的元数据(实际存储在HDFS上)。

架构-RegionServer

  1. Region server维护Master分配给它的region,处理对这些region的IO请求
  2. Region server负责切分在运行过程中变得过大的region。
  3. HRegionServer 一般和DN在同一台机器上运行,实现数据的本地性。
  4. HRegionServer包 含多个HRegion,由WAL(HLog)(预写日志)、BlockCache(读缓存)、MemStore(写缓存)、HFile(封装后变成StoreFile)组成。

Hbase 理论知识

 

到了这里,关于Hbase 理论知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 工欲善其事,必先利其器之—react-native-debugger调试react native应用

    调试react应用通常利用chrome的inspector的功能和两个最常用的扩展 1、React Developer Tools (主要用于debug组件结构) 2、Redux DevTools (主要用于debug redux store的数据) 对于react native应用,我们一般就使用react-native-debugger了,它是一个独立的应用,需要单独安装,在mac下可以用如下命令

    2024年02月16日
    浏览(33)
  • 【你也能从零基础学会网站开发】Web建站之HTML+CSS入门篇 工欲善其事必先利其器 Dreamweaver安装教程 它依旧是初学者最好用的代码开发工具!

    🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起学习和进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞👍🏻 收藏 📂加关注 Dreamweaver介绍与历史 Dreamweaver是一款由Adobe开发的网页设计和开发软件,也

    2024年03月10日
    浏览(68)
  • Hbase 理论知识

    要学习Hbase了,工欲善其事必先利其器,要真正在学习的时候看懂每一步操作,必须先把理论知识先过一遍,总结了一点Hbase的网络知识。         Hbase 是构建在HDFS上的分布式列存储数据库,是一个高可靠性、高性能、面向列、客伸缩的分布式存储系统,利用Hbase技术可以

    2024年02月02日
    浏览(17)
  • 【Python机器学习】深度学习——一些理论知识

            深度学习在很多机器学习应用中都有巨大的潜力,但深度学习算法往往经过精确调整,只适用于特定的使用场景。先学习一些简单的方法,比如用于分类和回归的多层感知机(MLP),它可以作为研究更复杂的深度学习方法的起点。MPL也被称为(普通)前馈神经网络,

    2024年01月16日
    浏览(49)
  • 机器学习理论知识部分——朴素贝叶斯

    机器学习以及matlab和数据分析 机器学习聚类算法——BIRCH算法、DBSCAN算法、OPTICS算法_ 机器学习——随机森林算法、极端随机树和单颗决策树分类器对手写数字数据进行对比分析_极端随机森林算法 文章目录 问题一、朴素贝叶斯是基于特征独立性假设的概率模型吗? 问题二、

    2024年02月11日
    浏览(74)
  • fMRI基础理论知识学习

    时隔多年,再次上线,重新经营csdn。自读研以来,不是干饭就是摆烂,实在颓废,能重新开始写博客,已然不易。在这里立下flag,争取以后每周都能写点什么东西,一来锻炼文笔,二来记录学习历程 我的研究方向与功能磁共振成像fMRI有关,此前从未接触过该领域,完全是从

    2024年02月09日
    浏览(42)
  • 【Python机器学习】理论知识:决策树

    决策树是广泛用于分类和回归任务的模型,本质上是从一层层if/else问题中进行学习,并得出结论。这些问题类似于“是不是”中可能问到的问题。 决策树的每个结点代表一个问题或一个包含答案的终结点(叶结点)。树的边奖问题的答案与将问的下一个问题连接起来。 用机

    2024年02月01日
    浏览(90)
  • 【知识存储】用于深度学习研究的 ☆ 概率论和数理统计☆ 基础理论知识,用时查阅,灵活运用,很基础很重要

    随机事件和概率 1.事件的关系与运算 (1) 子事件: A ⊂ B A subset B A ⊂ B ,若 A A A 发生,则 B B B 发生。 (2) 相等事件: A = B A = B A = B ,即 A ⊂ B A subset B A ⊂ B ,且 B ⊂ A B subset A B ⊂ A 。 (3) 和事件: A ⋃ B Abigcup B A ⋃ B (或 A + B A + B A + B ), A A A 与 B B B 中至少有一个发生

    2024年02月16日
    浏览(63)
  • 4. HBase必知必会之理论基础篇

    HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java。 它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,为 Hadoop 提供类似于BigTable 规模的服务,可以存储海量稀疏的数据,并具备一定的容错性、高可靠性及

    2024年02月06日
    浏览(40)
  • HBase基础知识(六):HBase 对接 Hive

    1.Hive (1) 数据仓库 Hive 的本质其实就相当于将 HDFS 中已经存储的文件在 Mysql 中做了一个双射关系,以 方便使用 HQL 去管理查询。 (2) 用于数据分析、清洗 Hive 适用于离线的数据分析和清洗,延迟较高。 (3) 基于 HDFS、MapReduce Hive 存储的数据依旧在 DataNode 上,编写的 HQL 语句终

    2024年02月04日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包