首页 > 其他分享 >四、Hbase

四、Hbase

时间:2022-11-29 14:05:51浏览次数:30  
标签:列族 StoreFile 内存 key Hbase Store

一、什么情况下使用Hbase

四、Hbase_时间戳

例子:

四、Hbase_数据_02

这里Order By无时不刻的处理,我们要看到刚才的足迹,不能使用缓存技巧。

  • 根据时间戳来查询,显然很快,应为Hbase就是以时间戳来存的。
  • 将最近的数据放在内存中,显然从内存中快速查找数据更快速,应用于此场景显然更快速。类似于内存数据库。
  • 我们只需要往集群里增加节点,就能解决负荷上升的问题。

四、Hbase_数据_03

reverse key 反向设计ID,随机化,可以更分散的分布到各个节点。

通过hash函数映射出一个随机ID,把哈希值加到ID的后面,也起到随机化的效果。

下图就是这个思想进行查询操作。




二、Hbase介绍

1.Hbase简介



2.存储思想


四、Hbase_时间戳_04

世界上任何任何的一张二维表大概都可以写成三个列的形式,这个大表呢,就是bigtable,这三个列是什么呢?

第一列是行键,就是key值,对象的标识值,比如说学生对象中的学号就是他的key,通过学号就可以定位到具体的学生

第二列是属性,学生有哪些属性呢,姓名、专业等

第三列是value,就是他的值

这里呢一般的关系型数据库中,学生表呢会占一行就可以实现这样的数据库存储,而在bigtable中呢,我们有三行,第一行就是学号、姓名,张三,第二行就是学号、专业,计算机,第三行就是学号、年龄、20岁。


那这里我们不能像关系型数据库那样,有聚合操作,子查询,比如说我们在bigtable下做一个group by操作,基本上很难做,但是我们做key-value查询是很方便的,你输入键值还有属性,就是行键及属性就能返回他的值。连接查询也很方便,比如说,我们查询一个学生的数学课的成绩是多少?我们先查这个学生修啦什么课?得到一个课号,将此课号作为key,又在查下他这个key得到什么成绩,本来通过连接能做的现在转变成key-value来做。


3.Hbase的逻辑模型


我们可以看见这里的逻辑视图,我们现在想修改t3时间戳的列族对应的数据怎么办呢?

因为hdfs中文件系统中的文件的一部分是不能修改的,你可以把整个文件删掉,你就是不能修改,连追加append都比较困难,因此我们在Hbase中去修改一个行的内容就不现实,因此我们只能插入新的行和新的实践戳来反映这个修改,那删除也是这样的,我们不能删除整个文件的某个记录,我们只能插入一个新的行键代表一行,里面有个删除标记,来表示这个行键所代表行全部被删除掉啦。


这又有个问题啦,假如是插入的话,那修很老的时间戳,很占用内存空间,我们要把他们删除掉,超过保存锁定的预制,这里Hbase每隔一段时间会做一个重整的工作,会把小的数据文件合并成一个大的数据文件,Hbase会在整个生命周期里面都会做这个事情,这个抛弃是在重整里面做的,此时一些旧的行会把它扔掉,还有些时间戳太老的我们也可以在内存中把他扔掉,然后把剩下的合并在一块,然后再重新写入硬盘里面,形成一个新的一个更大的文件。


作为用户以上过程,说明Hbase中的行和记录是可以删除的和修改的,表面上操作的时候有这种感觉,其实背后不然。


3.1 行键




3.2列族


3.3时间戳


4.Hbase的物理模型




  • HMaster是Hbase的数据库的总控节点
  • HRegionServer在一台独立的计算机中就是物理节点,通常一个物理节点只会运行一个HRegionServer,他可以管理很多的HRegion(比如说一个表在行的方向上来分,这个表可能有10亿行,在分布式的思想里面呢,可以按照行的方向来分,分成10个区域,每个区域呢一共有1千万行,那每个区域我们称为一个Region)
  • HRegion中有HLog(灾难恢复啦,断电什么的),Store与StoreFile,每一个列族一个Store,之所以Hbase被称为面向列的数据库,    就是这样,因为他的列族上的元素,是在物理上存放于一个地方,那不同的列族在物理上就是分离的,这样做是有好处的。Store可以分为MemStore和StoreFile,即内存Store和硬盘Store,新的修改进来一般进入内存Store,当内存里面搜集的数据足够多啦,此时一些小的StoreFile可能就会合并成为一个大的StoreFile,在此期间合并的同时就会有一些已经过期的超出预期的被抛弃掉,然后把内存里的东西写进入硬盘中,成为一个StoreFile。一般来说Hbase的存储都是稀疏的,95%的都是稀疏的,比如一个行,只有在某个列族上存在着值,而在其他列族上不存在值。可能一个行被分散在好几个Store中,我们去查询时就要去好几个Store中去查。每个StoreFile对应一个HFile,其实这个HFile就是Hdfs里的文件,这个文件才Hdfs里面有可能是分布式的,分散存放在物理节点里面。


4.1Region与RegionServer



4.2-ROOT-表和.META.表


4.3MemStore与StoreFile



4.4图解

四、Hbase_数据_05




作者:少帅


标签:列族,StoreFile,内存,key,Hbase,Store
From: https://blog.51cto.com/u_15683012/5894909

相关文章

  • HBase 原理、设计与优化实践
    1、HBase简介HBase——HadoopDatabase的简称,GoogleBigTable的另一种开源实现方式,从问世之初,就为了解决用大量廉价的机器高速存取海量数据、实现数据分布式存储提供可靠......
  • Solr与HBase架构设计
    1.1  一次性创建索引l、  删除全索引效率很高,可以关闭Solr后,直接删除Data文件。2、 重新创建全索引拉取HBase中全数据,分批次创建索引。 1.2  增量创建索引1、触发器......
  • Hadoop2.6+Hbase1.0集群搭建
    HBase安装​​http://hbase.apache.org/​​ HBase的安装也有三种模式:单机模式、伪分布模式和完全分布式模式,在这里只介绍完全分布模式。前提是Hadoop集群和Zookeeper已经......
  • JavaSpark 读取 HBASE
    1、pom.xml<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties>......
  • Spring Data(数据) Couchbase
    版本5.0.0本参考文档描述了SpringDataCouchbase库的一般用法。项目信息版本控制-https://github.com/spring-projects/spring-data-couchbase错误跟踪器-https://jir......
  • Spring Data(数据) Couchbase(二)
    5.4.7.仓库方法的空处理从SpringData2.0开始,返回单个聚合实例的存储库CRUD方法使用Java8来指示可能缺少值。除此之外,SpringData还支持在查询方法上返回以下包装器类......
  • Hive 与 HBase 之间的区别和联系
    首先要知道Hive和HBase两者的区别,我们必须要知道两者的作用和在大数据中扮演的角色概念Hive1.Hive是hadoop数据仓库管理工具,严格来说,不是数据库,本身是不存储数据......
  • Hbase
    Hbase命令hbaseshell进入命令行help帮助命令list......
  • python连接hbase
    前提条件已安装Python-3.6。已经有搭建好的完全分布式集群,并已经成功启动Hadoop,Zookeeper和HBase。笔者当前搭建好的集群是Hadoop-3.0.3,Zookeeper-3.4.13和HBase-2.1.0......
  • Spring Boot 整合 HBase
    HBase介绍HBase是一个分布式的、面向列的开源数据库,Hadoop数据库。搭建基于Hadoop和ZK。历史是基于Google的Bigtable、Google文件系统等论文。HBase在Hadoop......