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

hbase数据存储与查找原理

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

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

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

看不清楚,换张图片

免费获取短信验证码

hbase数据存储与查找原理

hbase数据存储与查找原理

Region

Region和kafka的partition(分区),Elasticsearch的shard(分片)差不多,是个物理概念。

一个表可以有多个Region,一个Region只属于一张表。

组件 逻辑存储 物理存储
Kafka topic partition
Elasticsearch index shard
HBase table region

store

store在HBase中对应的是列簇(Column Family,CF)

列簇在内存中的store是memstore,在磁盘中的是storefile,当内存中的memstore数据达到一定的阈值之后, 就会通过flashcache在磁盘上创建一个新的storefile,并且将memstore中的数据写入这个新创建的storefile。

当storefile文件的数量增长到一定阈值后会进行合并,在合并过程中会进行版本删除工作,从而形成更大的storefile。

当一个region所有storefile的大小和超过一定阈值后,会把当前的region分割为两个,并由master分配到相应的RegionServer服务器,实现负载均衡。

Region是HBase中分布式存储和负载均衡的最小单元,不同的Region可以分布在不同的Regionserver上。

RowKey

HBase定位一行数据的唯一标识,RowKey是按照字典顺序排序的,Rowkey最多只能存储64k的字节数据。

在设计RowKey的时候就应该注意,要让相同数据集的RowKey前缀尽量相同,这样才能分布到一起。

RowKey是写数据的时候才确定的,那个范围的RowKey放那个Region也是创建Region的时候确定

列族(Column Family,CF)

HBase每一行可以有多个列簇,在创建表的时候就必须指定列簇。

create "table_name", "cf1","cf2"

每一个列簇可以存放多个列(column),列是不用在创建表的时候指定的。

单元格(Cell)

由rowkey:cf:column确定,单元格是有版本的,其中的内容是未解析的字节数组(Byte[]),cell中的数据是没有类型的,全部是字节码形式存贮。

rowkey+cf+column+version才能唯一定位cell

更加底层的结构是HFile,KeyValue,有兴趣可以研究一下它们的结构

时间戳(Timestamp)

HBase每个cell存储单元对同一份数据有多个版本,根据唯一的时间 戳来区分每个版本之间的差异,不同版本的数据按照时间倒序排序,最新的数据版本排在最前面。

时间戳的类型是64位整型,HBase会把当前系统时间毫秒做为默认值,也可以由客户显式赋值,如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。

读数据

HBase读数据

写数据

HBase写数据

WAL(Write Ahead Log),为了崩溃恢复数据

scan

RegionScanner:扫描Region StoreScanner:扫描Store StoreFileScanner:扫描StoreFile与HFile KeyValueScanner:扫描MemStore

HBase扫描是比较慢的,特别是全表扫描,所以尽量避免,特别是在使用phoenix的时候,不要把HBase当做MySQL来用。

phoenix虽然是SQL,但是底层还是通过HBase的扫描过滤来实现的,非RowKey还是扫描的全部Region。

参考

hbase scan KeyValue

免责声明:

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

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

hbase数据存储与查找原理

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

下载Word文档

猜你喜欢

hbase数据存储与查找原理

RegionRegion和kafka的partition(分区),Elasticsearch的shard(分片)差不多,是个物理概念。一个表可以有多个Region,一个Region只属于一张表。组件逻辑存储物理存储KafkatopicpartitionElas
hbase数据存储与查找原理
2018-09-01

HBase在日志数据存储与分析中的优势与挑战

HBase在日志数据存储与分析中展现出显著的优势,同时也面临一些挑战。以下是对HBase在日志数据存储与分析中的优势与挑战的详细分析:HBase在日志数据存储与分析中的优势高性能:HBase采用列式存储结构,能够高效处理大量的日志数据,支
HBase在日志数据存储与分析中的优势与挑战
2024-10-22

MySQL的存储引擎与HBase的存储层在数据持久化上的对比

MySQL和HBase在数据持久化方面各有特点,以下是对两者在数据持久化方面的对比:MySQL的存储引擎与HBase的存储层在数据持久化上的对比MySQL的数据持久化方式:存储引擎:MySQL支持多种存储引擎,如InnoDB、MyISAM
MySQL的存储引擎与HBase的存储层在数据持久化上的对比
2024-10-22

java数据存储的原理是什么

Java数据存储的原理Java使用各种数据结构和存储机制管理内存和持久化存储中的数据。内存管理由JVM自动处理,而对象存储通过哈希码标识内存位置。集合框架提供通用数据结构。持久化存储选项包括序列化、JDBC、NoSQL存储、文件系统IO和XML。内存映射文件直接访问文件内容。DBMS允许与数据库交互。缓存通过存储频繁访问的数据来提高性能。优化数据存储性能涉及选择适当的数据结构,避免重复存储,使用缓存,优化数据库查询以及监视和调整性能。
java数据存储的原理是什么
2024-04-09

prometheus存储数据的原理是什么

Prometheus是一个开源的监控系统,用于收集、存储和查询时间序列数据。它的存储数据的原理是基于一种称为TSDB(Time Series Database)的数据库引擎,该引擎专门用于存储时间序列数据。在Prometheus中,时间序
prometheus存储数据的原理是什么
2024-04-09

MongoDB的JSON数据如何存储与查询

MongoDB是一种文档数据库,它以JSON格式存储数据。在MongoDB中,数据以文档的形式存储在集合中。每个文档是一个键值对的集合,类似于JSON对象。存储JSON数据:要存储JSON数据到MongoDB中,首先需要连接到数据库,选
MongoDB的JSON数据如何存储与查询
2024-05-07

怎么用BAPI函数查找对应的数据库存储表

这篇文章主要介绍“怎么用BAPI函数查找对应的数据库存储表”,在日常操作中,相信很多人在怎么用BAPI函数查找对应的数据库存储表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用BAPI函数查找对应的数据库
2023-06-05

阿里云SQL数据库块存储的位置与实现原理

本文将详细介绍阿里云SQL数据库中块存储的位置及其实现原理,帮助读者更好地理解和使用阿里云SQL数据库。正文:阿里云SQL数据库的块存储是一种基于分布式文件系统的存储方式,它将大量的数据分成多个块存储在不同的服务器上,每个块都是一个独立的文件。这种存储方式既能够提高数据的存储效率,又能够保证数据的安全性。块存储的
阿里云SQL数据库块存储的位置与实现原理
2023-11-04

HBase如何处理数据的分布式存储和负载均衡

在HBase中,数据的分布式存储和负载均衡是由HBase中的HMaster和RegionServer来实现的。HBase集群中有一个HMaster节点和多个RegionServer节点。HMaster负责管理整个集群的元数据,包括表的元数
HBase如何处理数据的分布式存储和负载均衡
2024-03-11

C#指针内存控制Marshal内存数据存储原理分析

这篇文章主要介绍了C#指针内存控制Marshal内存数据存储原理分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-26

hdfs分布式存储数据的原理是什么

HDFS(Hadoop Distributed File System)是一种分布式文件系统,它由多个节点组成,每个节点都可以存储数据和执行计算任务。HDFS的原理主要包括以下几个方面:数据块划分:HDFS将文件划分为固定大小的数据块(通常
hdfs分布式存储数据的原理是什么
2024-04-09

C#指针内存控制Marshal内存数据存储原理是什么

本篇内容介绍了“C#指针内存控制Marshal内存数据存储原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!了解内存的原理1、内存是由
2023-07-05

编程热搜

目录