返回顶部
首页 > 资讯 > 数据库 >hbase数据存储与查找原理
  • 379
分享到

hbase数据存储与查找原理

hbase数据存储与查找原理 2018-09-01 12:09:58 379人浏览 无得
摘要

Region Region和kafka的partition(分区),elasticsearch的shard(分片)差不多,是个物理概念。 一个表可以有多个Region,一个Region只属于一张表。 组件 逻辑存储 物理存储

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

您可能感兴趣的文档:

--结束END--

本文标题: hbase数据存储与查找原理

本文链接: https://lsjlt.com/news/4964.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • hbase数据存储与查找原理
    Region Region和kafka的partition(分区),Elasticsearch的shard(分片)差不多,是个物理概念。 一个表可以有多个Region,一个Region只属于一张表。 组件 逻辑存储 物理存储 ...
    99+
    2018-09-01
    hbase数据存储与查找原理
  • Hadoop数据存储—Hbase
     大家都知道Hadoop是一个数据库,其实说的的就是Hbase。它和我们平常理解的关系型数据库有什么区别呢?1.它是NoSQL的,它没有SQL的接口,有自己的一套API。2.关系型数据库可以做汇总...
    99+
    2024-04-02
  • Mysql存储引擎与数据存储的原理是什么
    Mysql存储引擎与数据存储的原理是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言作为一名开发人员,在日常的工作中会难以避免地接触到数...
    99+
    2024-04-02
  • HBase数据是怎么存储的
    HBase是一个分布式的、面向列的NoSQL数据库系统,数据存储在HDFS(Hadoop分布式文件系统)中。HBase中的数据是按照...
    99+
    2024-03-05
    Hbase
  • hbase数据存储方式有哪些
    HBase是一个分布式的、面向列的、基于Hadoop的数据库,其数据存储方式主要有以下几种: 列簇(Column Family)...
    99+
    2024-04-16
    hbase
  • HBase中怎么分布存储数据
    HBase是一个分布式的、面向列的NoSQL数据库,它可以存储大量的结构化数据。HBase中的数据是分布式存储的,主要通过以下几个步...
    99+
    2024-04-09
    Hbase
  • HBase中数据存储的形式是什么
    在HBase中,数据是以表格形式存储的,每个表由行(row)组成,每行又包含多个列族(column family),而列族包含多个列...
    99+
    2024-04-09
    HBase
  • 如何理解大数据时代的结构化存储数据库HBase
    本篇文章为大家展示了如何理解大数据时代的结构化存储数据库HBase,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Hbase非常适合于非结构化数据存储的数据库,200...
    99+
    2024-04-02
  • ThreadLocal数据存储结构原理解析
    目录一:简述二:TheadLocal的原理分析1.ThreadLocal的存储结构2.源码分析set()方法三:源码分析createMap()源码:流程图:expungeStaleE...
    99+
    2024-04-02
  • prometheus存储数据的原理是什么
    Prometheus是一个开源的监控系统,用于收集、存储和查询时间序列数据。它的存储数据的原理是基于一种称为TSDB(Time Se...
    99+
    2024-04-09
    prometheus
  • hive存储处理器(StorageHandlers)以及hive与hbase整合
     此篇文章基于hive官方英文文档翻译,有些不好理解的地方加入了我个人的理解,官方的英文地址为: 1.https://cwiki.apache.org/confluence/display/Hiv...
    99+
    2024-04-02
  • MongoDB的JSON数据如何存储与查询
    MongoDB是一种文档数据库,它以JSON格式存储数据。在MongoDB中,数据以文档的形式存储在集合中。每个文档是一个键值对的集...
    99+
    2024-05-07
    MongoDB JSON
  • HBase怎么存储和访问大规模数据
    HBase是一个面向列的分布式数据库,它是基于Hadoop的HDFS构建的。HBase存储大规模数据的方式是通过将数据分散存储在多个...
    99+
    2024-04-09
    Hbase
  • HBase中的数据存储结构是怎样的
    在HBase中,数据以表的形式进行存储,表由多行组成,每行可以有多个列族,每个列族可以包含多个列。每行都有一个唯一的行键,通过这个行...
    99+
    2024-04-09
    HBase
  • 数据采集与存储
    1.2 数据采集技术的功能及特点 数据采集技术是指通过各种手段和工具,从各种数据源中采集、提取和处理数据的过程。数据采集技术的主要功能包括: 数据源的识别:通过各种手段找到需要采集数据的来源,包括网站...
    99+
    2023-09-15
    python mysql spark
  • redis集群数据存储和获取原理
    redis集群数据获取原理:     当client向redis cluster中的任意一个节点发送与数据库key有关的命令时,   &...
    99+
    2024-04-02
  • 怎么用BAPI函数查找对应的数据库存储表
    这篇文章主要介绍“怎么用BAPI函数查找对应的数据库存储表”,在日常操作中,相信很多人在怎么用BAPI函数查找对应的数据库存储表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用BAPI函数查找对应的数据库...
    99+
    2023-06-05
  • HBase中如何实现数据的存储和检索
    在HBase中,数据的存储和检索是通过HBase表来实现的。HBase中的数据存储在表中,每个表可以包含多行数据,每行数据由行键(R...
    99+
    2024-04-09
    HBase
  • HBase如何处理数据的分布式存储和负载均衡
    在HBase中,数据的分布式存储和负载均衡是由HBase中的HMaster和RegionServer来实现的。 HBase集群中有一...
    99+
    2024-03-11
    HBase
  • 云原生存储中的容器存储与 K8s 存储卷怎么理解
    本篇文章为大家展示了云原生存储中的容器存储与 K8s 存储卷怎么理解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。云原生存储的两个关键领域:Docker 存储卷、K8s 存储卷;Docker 存储卷...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作