HBASE知识点

HBASE是什么?

  • 高可靠、高性能、面向列、可伸缩、实时读写的分布式数据库。
  • 利用HDFS作为其文件存储系统,利用MapReduce来处理HBase中的海量数据。利用Zookeeper作为其分布式协同服务。
  • 用于存储非结构化和半结构化的松散数据。

HBase数据模型

  • RowKey: 唯一标识一行记录,按字典顺序排序,RowKey只能存储64K的字节数据。

字典顺序存储,在合理的rowkey设计情况下,范围查询很快。

  • Column Family列族:
    – HBASE中每个列都归属于某个列族,列族必须作为表模式定义的一部分先给出。
    – 列名以列族作为前缀,每个列族都可以有多个列成员(column),新的列族成员可以随后按需动态加入。
    – 权限控制、存储以及调优都是在列族层面进行的。
    – HBase把同一列族里面的数据存储在同一目录下,由几个文件保存。
  • TimeStamp:
    – 在HBase每个cell存储单元对同一份数据有多个版本,更加唯一的时间戳来区分每个版本之间的诧异,不同版本的数据安装时间大圩排序,最新的数据版本排在最前面。
    – 时间戳类型是64位整型。
    – 时间错可以由HBASE在数据写入时自动赋值,此时时间戳是精确到毫秒的当前系统时间。
    – 时间戳也可以由用户显示赋值,如果应用程序要避免数据版本冲突,就必须自己生产具有唯一性的时间戳。
  • Cell单元格
    – 有行和列的坐标交叉决定。
    – 单元格室友版本的。
    – 单元格的内容是未解析的字节数组:{rowkey,column(=family+qualifier),version}唯一确定的单元
    – cell中的数据是没有类型的,全部是字节数组形式存储的。

HBase架构

在这里插入图片描述
在这里插入图片描述

Client

访问Hbase的接口并维护Cache加快对Hbase的访问。

Zookeeper

保证集群中只有一个活跃的Master。存储所有Region的寻址信息。实时监控Region的上线、下线信息,并实时通知Master。存储Hbase的schema和table元数据。

HMaster

为RegionServer分配Region,负责RegionServer的负责均衡。发现失效的RegionServer并重新分配其下的Region,管理用户对Table的CRUD。

HRegionServer

负责维护HMaster分配给他的Region,处理这些Region的IO请求。当Region变大到一个阈值后,RegionServer会进行Region拆分,并告知Master节点,由Master协调拆分后的Region进行迁移。

HRegion

HBase自动把表水平划分成多个Region,每个Region会保存一个表里面某段连续的数据(类似MYSQL表的横向拆分),每个表最开始只有一个Region,随着数据不断插入,Region不断增大,当增大到一个阈值时,Region就会才分成两个新的Region(裂变)。当Table中的行不断增多,就会有越来越多的Region,这样一张完整的表被保存在多个RegionServer上。

Store的MemStore和StoreFile

一个Region有多个Store组成,一个Store对应一个列族。Store报货位于内存中的Memstore和位于磁盘中的StoreFile。
写操作先写入Memstore,当Memstore中的数据打到某个阈值,HRegionServer会启动FlashCache进行进行写入StoreFile,每次写入形成单独的StoreFile。当StoreFile文件数量增长到一定的阈值后,系统会进行合并,在合并过程中会进行版本合并和删除工作(写操作的时候都是append操作,不会有更新和删除动作,所以速度很快),形成更大的StoreFile。当一个Region所有的StoreFile的大小和数量超过一定的阈值后,会把所有的Region分隔成两个,并由HMaster分配到相应的RegionServer服务器,实现负载均衡
读操作先在Memstore找,找不到去blockCache找,找不到再到StoreFile找。

blockCache是Hbase的读缓存,HBase采用最近最少访问策略来管理。

HLog

在HBase写操作时会先写HLog,然后再往Memstore写。HLog先写到内存,然后每秒进行一次持久化。在写入Memstore后,持久化到StoreFile之前如果HRegionServer挂掉了,则通过HLog进行数据恢复。如果HLog持久化之前挂掉了,那么这一秒的数据将丢失。

HFILE

StoreFile存储在HDFS中的文件名称。

写操作

  1. 访问ZK得到元数据表地址。
  2. 访问RegionServer找到列族Store;
  3. 往Store的MemStore写数据(先写入HLog,再写入MemStore)。
  4. MemStore在数据快满或满64M的时候进行持久化到StoreFile。

读操作

  1. 访问ZK得到元数据表地址。
  2. 访问RegionServer找到列族Store。
  3. 从MemStore读数据,如果MemStore中没有就从blockCache(读缓存)读。
  4. blockCache没有则从磁盘读取,如果读取到则返回并缓存到blockCache。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/133510.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[maven] scopes 管理 profile 测试覆盖率

[maven] scopes & 管理 & profile & 测试覆盖率 这里将一些其他的特性和测试覆盖率(主要是 jacoco) scopes maven 的 scope 主要就是用来限制和管理依赖的传递性,简单的说就是,每一个 scope 都有其对应的特性&…

解决IDEA actiBPM插件之.bpmn文件中文乱码

1、修改IDEA编辑器编码为utf8,File->Settings->Editor->File Encodings,都改为UTF-8 2、在IDEA安装bin目录下,找到 idea.exe.vmoptions 和 idea64.exe.vmoptions 两个文件,打开编辑分别在文本最末端添加下面代码&#xf…

⑩ vue新特性

ref 或者reactive ref相当于data methods props和context props !!!setup中没有this关键字,使用context(简写:ctx)就是this 在steup中使用生命周期函数 Provide / Inject 1、原来是 a传…

VS2015+opencv 3.4.6开发环境

VS2015+opencv 3.4.6开发环境 一、安装包下载二、安装过程三、VS环境配置四、测试一、安装包下载 这里提供两种下载方法:   1. opencv官网   2. csdn资源下载 二、安装过程 2.1 下载opencv-3.4.6 安装包 2.2 双击开始安装,选择要安装目录,点击Extract。  2.3 等待解…

【MATLAB第75期】#源码分享 | 基于MATLAB的不规则间隔数据插值实现时间序列数据扩充(更新中)

【MATLAB第75期】#源码分享 | 基于MATLAB的不规则间隔数据插值实现时间序列数据扩充 代码 %% 清空环境变量 warning off % 关闭报警信息 close all % 关闭开启的图窗 clear % 清空变量 clc % 清空命令行%%…

批量多字段唯一性校验

批量多字段唯一性校验 思路: 查询列表本身是否含有重复数据新增修改分开考虑,新增只考虑数据库中是否有相同数据,修改不仅要考虑数据库中是否有相同数据,还要排除自身。由于是批量校验,排除自身只需考虑所有修改操作…

[当人工智能遇上安全] 9.基于API序列和深度学习的恶意家族分类实例详解

您或许知道,作者后续分享网络安全的文章会越来越少。但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个《当人工智能遇上安全》系列博客,详细介绍人工智能与安全相关的论文、实践,并分享各种案…

线程同步互斥锁

共用三个函数: mutex_lock() mutex_unlock() mutex_trylock() pthread_mutex_lock给安卓上层使用,mutex_lock给kernel使用,本质是一样的,都是IPC通信中的互斥锁,只不过安卓上层封装出pthread_mutex_lock。 pthr…

安装深度(Deepin)系统

Deepin系统安装 Deepin是和Ubuntu一样,是一个基于Debian的Linux的发型版本。 Deepin相对于Ubuntu,Deepin更适合中国用户的使用习惯。 一 官网工具制作启动盘 制作启动盘、和安装系统,操作非常简单,nice! 官网提供了…

Postman使用_参数设置和获取

文章目录 参数引用内置动态参数手动添加参数脚本设置参数脚本获取参数 参数就像变量一样,它可以是固定的值,也可以是变化的值,比如:会根据一些条件或其他参数进行变化。我们如果要使用该参数就需要引用它。 参数引用 引用动态参数…

SpringBoot-接口幂等性

幂等 幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。 尤其是支付、订单等与金钱挂…

基于matlab实现的弹簧振动系统模型程序(动态模型)

完整代码: clear all; %System data m1.0; zeta0.01; omega01.0; Dt1.0; f01.0; x00.0; dotx00.0; xmaxsqrt(x0^2(dotx0/omega0)^2)min([0.5*abs(f0)*Dt/(m*omega0) f0/omega0^2]); omegadomega0*sqrt(1-zeta^2); dt00.1*pi/omega0; nstep500; a0.70; b0.…

Codeforces Round 895 (Div. 3) A ~ F

Dashboard - Codeforces Round 895 (Div. 3) - Codeforces A 问多少次能使a 和 b相等&#xff0c;就是abs(a - b) / 2除c向上取整&#xff0c;也就是abs(a - b)除2c向上取整。 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #de…

Apache Commons Collections反序列化链分析(二)

Apache Commons是Apache开源的Java通用类项目在Java中项目中被广泛的使用&#xff0c;Apache Commons当中有一个组件叫做Apache Commons Collections&#xff0c;主要封装了Java的Collection(集合)相关类对象 通过接口实现查询&#xff0c;能获取到 ConstantTransformer、invo…

数据分享|R语言武汉流动人口趋势预测:灰色模型GM(1,1)、ARIMA时间序列、logistic逻辑回归模型...

全文链接&#xff1a;http://tecdat.cn/?p32496 人口流动与迁移&#xff0c;作为人类产生以来就存在的一种社会现象&#xff0c;伴随着人类文明的不断进步从未间断&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频 人力资源是社会文明进步、人民富裕…

pytorch生成CAM热力图-单张图像

利用ImageNet预训练模型生成CAM热力图-单张图像 一、环境搭建二、主要代码三、结果展示 代码和图片等资源均来源于哔哩哔哩up主&#xff1a;同济子豪兄 讲解视频&#xff1a;CAM可解释性分析-算法讲解 一、环境搭建 1&#xff0c;安装所需的包 pip install numpy pandas mat…

基于MediaPipe的人体摔倒检测

1 简介 1.1 研究背景及意义 现如今随着经济等各方面飞速发展&#xff0c;社会安全随之也成为必不可少的话题。而校园安全则是社会安全的重中之重&#xff0c;而在我们的校园中&#xff0c;湿滑的地面、楼梯等位置通常会发生摔倒&#xff0c;尽管有“小心脚下”的告示牌&#xf…

栈与队列经典题目——用队列实现栈

本篇文章讲解栈和队列这一部分知识点的经典题目&#xff1a;用栈实现队列、用队列实现栈。对应的题号分别为&#xff1a;Leetcode.225——用队列实现栈&#xff0c;。 在对两个题目进行解释之前&#xff0c;先回顾以下栈和队列的特点与不同&#xff1a; 栈是一种特殊的线性表…

如何隐藏Selenium特征实现自动化网页采集

Selenium是一个流行的自动化网页测试工具&#xff0c;可以通过模拟用户在Chrome浏览器中的操作来完成网站的测试。然而&#xff0c;有些网站会检测浏览器是否由Selenium驱动&#xff0c;如果是&#xff0c;就会返回错误的结果或拒绝访问。为了避免这种情况&#xff0c;我们需要…

网络安全进阶学习第十六课——业务逻辑漏洞介绍

文章目录 一、什么是业务逻辑二、业务逻辑漏洞的成因三、逻辑漏洞的重要性四、业务逻辑漏洞分类五、业务逻辑漏洞——业务授权安全1、未授权访问2、越权访问1) 平行越权&#xff08;水平越权是指相同权限的不同用户可以互相访问&#xff09;2) 垂直越权&#xff08;垂直越权是指…