首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

HBase 数据存储结构

在「HBase」中, 从逻辑上来讲数据大概就长这样: 单从图中的逻辑模型来看, HBase MySQL 的区别就是: 将不同的列归属与同一个列族下 支持多版本数据 这看着感觉也没有那么太大的区别呀,...他的数据是如何进行存储的呢? HBase 数据物理结构 在介绍其物理结构之前, 要先简单提一下 LSM 树 LSM树 MySQL 所使用的B+树一样, 也是一种磁盘数据的索引结构....在内存中维护一个有序的数据 将内存中的数据push 到磁盘中 将磁盘中的多个有序文件进行归并, 合成一个较大的有序文件 HBase存储 在「HBase」中, 数据的存储就使用了 「LSM 树」进行存储...., 找到指定数据块并二分查找指定数据 HBase 数据列族式存储 先简单回顾一下行式存储列式存储....「列族式存储」 而 HBase 中选用了一种折中的方案, 列族式存储, 将列族放到一起存储, 不同列族分别存储.

2.6K20

HBase存储结构

HBase 中的表常常是超级大表,这么大的表,在 HBase 中是如何存储的呢?...HBase 会对表按行进行切分,划分为多个区域块儿,每个块儿名为 HRegion HBase 是集群结构,会把这些块儿分散存储到多个服务器中,每个服务器名为 HRegionServer...中分布式存储的最小单元,但并不是存储的最小单元 HRegion 内部会按照列族进行切分,分为多个 Store,每个 Store 保存一个列族,所以 HRegion 由一个或者多个 Store 组成...每个 Strore 又由一个 MemStore N个 StoreFile 组成 MemStore 是内存存储单元,当内存中数据达到阈值后,写入 StoreFile,StoreFile 以...HFile 格式保存 HBase 数据的物理存储是基于 Hadoop 的分布式存储的 这样,综合起来便形成了 HBase 的整体架构图

2K70
您找到你想要的搜索结果了吗?
是的
没有找到

传统的行存储HBase)列存储的区别「建议收藏」

1 为什么要按列存储 列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。...下面来看一个例子: 从上图可以很清楚地看到,行式存储下一张表的数据都是放在一起的,但列式存储下都被分开保存了。...所以它们就有了如下这些优缺点: 行式存储 列式存储 优点 Ø 数据被保存在一起 Ø INSERT/UPDATE容易 Ø 查询时只有涉及到的列会被读取 Ø 投影(projection)很高效...Selection)时即使只涉及某几列,所有数据也都会被读取 Ø 选择完成时,被选择的列要重新组装 Ø INSERT/UPDATE比较麻烦 注:关系型数据库理论回顾 – 选择(Selection)投影...正因为每个字符串在字典表里只出现一次了,所以达到了压缩的目的(有点像规范化非规范化NormalizeDenomalize) 3查询执行性能 下面就是最牛的图了,通过一条查询的执行过程说明列式存储

1.3K20

2021年大数据HBase(十三):HBase读取存储数据的流程

HBase读取存储数据的流程 一、HBase读取数据的流程 1、由客户端发起读取数据的请求, 首先先连接 zookeeper , 从zookeeper获取hbase:meta表被哪个regionServer...所管理meta表中主要记录了 hbase中各个表有那些region,以及每个region被哪个regionServer所管理hbase中非常特殊的元数据存储表, 此表只会有一个region 2、连接...blockCache ---> storeFile  ---> 大的Hfile 4、各个regionserver将读取到数据返回给client , client根据需要过滤出需要的数据, 最后展示给调用者 二、HBase...存储数据的流程 客户端的同步流程:  1、客户端发起写入数据的请求, 首先会先连接zookeeper, 从zookeeper获取hbase:meta表所在的regionServer的地址 2、连接meta...表对应的regionServer, 从meta表获取目标表对应要写入数据的region的地址(基于region的startkeyendKey来确定) 3、连接对应region的regionServer

1.6K10

海量日志数据存储用 elasticsearch hbase 哪个?

首先看两者的简单介绍: ElasticSearch:是一个基于Lucene的搜索引擎; HBase:是一个开源的,非关系的,分布式的数据模型存储引擎; 两个框架都可以做分布式的存储搜索,但是在海量日志数据面前...以下几点可以考虑: 查询复杂度:HBase支持比较简单的行或者区间查询,如果更复杂的查询功能就不太容易支持。ES支持的查询比较丰富。 数据量:两者都是支持海量数据的。...由于HBase天生的大数据身份,本能的支撑更大量级的数据;ES最开始只是一个基于Lucene的搜索引擎,后期加入了存储的扩展,也就是说ES在存储扩展上可能会非一些力气。...维护成本:一旦项目上线,维护成本也是一个必须考虑的问题,HBase基于的是Hadoop那一套,组建多,代价高;ES独立扩展维护较简单一些。...简单一句话:考虑存储的场景使用HBase;考虑查询的场景使用ES;当然两者结合更完美。

2.8K50

存储相关概念常见列式存储数据库(Hbase、德鲁依)

Table of Contents 列式存储数据库 Examples of Column Store DBMSs Hbase Table Row Column Column Family Column...Qualifier Cell Timestamp Druid(德鲁依) Cassandra 参考 ---- 列式存储数据库 列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理即时查询...几乎可以立即开始查询分析。 Examples of Column Store DBMSs HbaseHBase 中,数据存储在具有行列的表中。...相反,将 HBase 表看作多维映射是合理的。 Table HBase 表由多行组成。 Row HBase 的行由一个 rowkey 一个或多个 column 组成,其中的值与它们相关联。...Column HBase 中的列由一个列族一个列限定符组成,它们由一个:(冒号)字符分隔。 Column Family 出于性能原因,列族在物理上共使用一组列及其值。

7K10

面试头条:HBASE 存储设计

HBASE其他关系型数据库不同,它是一个Nosql数据库(非关系型数据库) 1、Hbase的表模型与关系型数据库的表模型不同: 2、Hbase的表没有固定的字段定义; 3、Hbase的表中每行存储的都是一些...)的支持很差 HBASE其他Nosql数据库相比较: hbase的表数据存储在hdfs文件系统中。...Row: HBASE表中的每行数据都由一个RowKey多个Column组成,数据是按照RowKey的字典顺序存储的,并且查询数据时只能根据RowKey进行检索,所以Rowkey设计十分重要。...2、Store是HBase存储的核心,它实现了读写HDFS功能,一个Store由一个MemStore 0个或多个StoreFile组成。...Region是HBASE分布式存储负载均衡的最小单元;默认是10G Region数目太多会造成HBASE的性能下降,文件太多查找耗时; Region数目太少会影响HBASE的扩展能力,会导致压力不够分散

91830

hbase解决海量图片存储

随着互联网、云计算及大数据等信息技术的发展,越来越多的应用依赖于对海量数据的存储处理,如智能监控、电子商务、地理信息等,这些应用都需要对海量图片的存储检索。...表1:基于HBase的海量图片存储技术的大表设计 HBase是采用面向列的存储模型,按列簇来存储处理数据,即同一列簇的数据会连续存储。...为了解决此两个问题,需对Key-Value存储结构进行完善,在Valu域部分后面增加校验及补白两个域。校验为8个字节(64位)。...在写数据时,首先对Value域进行校验计算,并写入校验域;然后,计算Key-Value字节数组总大小,如果不是8的整数倍,则在补白域存储一定数量的0x00字节,使之总大小为8的整数倍。...在读数据时,读KeyValue后,对Value进行校验计算,并与校验域存储的值进行比较,如果相当,则说明读出的Value是正确的。

2.4K20

Java-表格数据的存储

java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * 用类名加字段来表示一个表格...java.util.HashMap; import java.util.List; import java.util.Map; /**与上面不同的是,我们不再利用自定义类,做好其相关的属性 *再新建对象其中存储相关属性...我们可以直接利用JDK,新建一个Map直接存放键值对; * 我们相关属性名都是要在每次输入于key值的,不同的对象之间, * 其Key值是应当相同的 * 一行记录可以用一个HashMap类型的对象来存储...System.out.println(tempMap.get("name")+"\t"+tempMap.get("department")); } } } 许多数据结构都可以简化为一个基础表格问题...,比如棋盘问题就可以转化为表格问题: https://blog.csdn.net/li_xunhuan/article/details/91627850

68520

hbase源码系列(九)StoreFile存储格式

HFile概述 HFile是HBase中实际存数据的文件,为HBase提供高效快速的数据访问。它是基于Hadoop的TFile,模仿Google Bigtable 架构中的SSTable格式。...文件是变长的,唯一固定的块是File InfoTrailer,如图所示,Trailer有指向其它块的指针,这些指针也写在了文件里,Index块记录了datameta块的偏移量,meta块是可选的。...,先从入口看起,那就是StoreFile.Writer的append方法,先看怎么写入的,然后它就怎么读了,不知道怎么使用这个类的,可以看看我写的这篇文章《非mapreduce生成Hfile,然后导入hbase...Path hfilePath = getRelativeTablePath(path); this.tempPath = new Path(new Path(rootDir, HConstants.HBASE_TEMP_DIRECTORY...二级索引 curInlineChunk 在结束了一个块之后添加一个索引的key(上一个块的firstKey这个块的firstKey的中间值)。

1.5K50

轻松理解Hbase面向列的存储

说明:从严格的列式存储的定义来看,Hbase并不属于列式存储,有人称它为面向列的存储,请各位看官注意这一点。 行式存储 传统的数据库是关系型的,且是按行来存储的。如下图: ?...Hbase世界 Hbase虽然弱化了结构,但并不等于放任不管。传统关系型数据库在插入数据前表结构(即所有列列的数据类型)已经是严格确定的。...列修饰符.png 在Hbase中一个列族(Column Family)一个列修饰符(Column Qualifier)组合起来才叫一个列(Column),使用冒号(:)分割,列族:列修饰符,如下图...时间戳.png 一个行键、列族、列修饰符、数据时间戳组合起来叫做一个单元格(Cell)。这里的行键、列族、列修饰符时间戳其实可以看作是定位属性(类似坐标),最终确定了一个数据。...说明:任何细微的差别在大数量时都会被无限放大,那么列族列修饰符的名字起的短一些能够节省可观的空间。

2.8K10

Hadoop Hbase适合存储哪类数据?

Hadoop Hbase适合存储哪类数据?         最适合使用Hbase存储的数据是非常稀疏的数据(非结构化或者半结构化的数据)。...Hbase之所以擅长存储这类数据,是因为Hbase是column-oriented列导向的存储机制,而我们熟知的RDBMS都是row- oriented行导向的存储机制(郁闷的是我看过N本关于关系数据库的介绍从来没有提到过...Hbase适合存储非结构化的稀疏数据的另一原因是他对列集合 column families 处理机制。 打个比方,rubypython这样的动态语言和c++、java类的编译语言有什么不同?...Ok ,现在Hbase为未来的DBA也带来了这个激动人心的特性,你只需要告诉你的数据存储Hbase的那个column families 就可以了,不需要指定它的具体类型:char,varchar,int...下面3副图是Hbase的架构、数据模型一个表格例子,你也可以从:Hadoop summit 上 获取更多的信息。

1.7K40

Hadoop HBase存储原理结构学习

主要用来存储非结构化半结构化的松散数据。 与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算存储能力。...HBase中的表一般有这样的特点: 1 大:一个表可以有上亿行,上百万列 2 面向列:面向列(族)的存储权限控制,列(族)独立检索。...4 Hregion是Hbase中分布式存储负载均衡的最小单元。最小单元就表示不同的Hregion可以分布在不同的HRegion server上。...3 实时监控Region Server的状态,将Region server的上线下线信息实时通知给Master 4 存储Hbase的schema,包括有哪些table,每个table有哪些column...读写过程 上文提到,hbase使用MemStoreStoreFile存储对表的更新。

1.7K30

安转hbase集群----安装ZookeeperHbase

zookeeper安装 把解压文件从桌面移到安装目录software 解压 显示文件 修改zoo.cfg文件 我的丛机就是主机 注意:如果有多台丛机应该这样配 创建datadir指定目录创建...修改从节点myid中的值 启动每个节点的zookeeper服务 检查zookeeper是否安装成功 我的是一台机子,所以显示standalone 如果丛机不是本机,则显示follower 2.安装hbase...解压 显示信息 配制hbase-env.sh 配制hbase-site.xml 配制regionservers 注意我的是主机及丛机 如果是多台丛机的话这样配 如果是多台丛机的话还要发送给从节点...hbase,主机即丛机的话不用配了 启动hbase 用jps查看进程,我暂时还没开Hadoop,所以没有Hadoop的进程 启动hbase客户端 测试hbase,建一个表 显示表信息,...插入数据,最后scan查看表的内容

1.6K70

如何使用HBase存储文本文件

fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- Fayson在前面的文章中介绍了《如何在CDH中使用Solr对HDFS中的JSON数据建立全文索引》《...虽然HDFS中也可以直接保存这种非结构化数据,但是我们知道像这种文本文件,一般都是10KB~1MB的小文件,因为HDFS并不擅长存储大量小文件,所以这里选择HBase来保存。...2.然后通过Java程序遍历本地的文件夹所有文本文件入库到HBase,在入库过程中,我们读取文本文件的文件名作为Rowkey,另外将整个文本内容转为bytes存储HBase表的一个column里。...; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.util.Bytes...推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发分享。 原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

3.3K30

分布式NoSQL列存储数据库Hbase_MR集成Hbase:读写Hbase规则(九)

分布式NoSQL列存储数据库Hbase(九) 知识点01:课程回顾 知识点02:课程目标 MapReduce读写Hbase 重点:记住读写的规则 Spark中读写Hbase规则与MapReduce...会导致内存磁盘的利用率非常高,会影响其他程序的性能 Hbase中提供两种写入数据的方式 Put:直接写入memstore BulkLoad:先将数据转换为storefile文件,将storefile...Hbase,必须先写入内存,然后内存溢写到HDFS,导致Hbase的内存负载HDFS的磁盘负载过高,影响业务 解决 写入Hbase方式 方式一:构建Put对象,先写内存 方式二:BulkLoad,直接将数据变成...了解协处理器的功能、分类应用场景 分析 什么是协处理器?...Master 触发:监听A,如果A触发了,执行B pre:阻塞A,先执行B,再执行A post:A先执行,B在A执行完成之后再执行 endpoint类:终端者类,类似于MySQL中的存储过程

1.4K10
领券