HBase进阶——文件的合并、 MemStore Flush、StoreFile Compaction、 Region Split、高可用与预分区介绍

news2024/11/20 0:35:19

系列文章目录

centos7虚拟机下hbase的使用案例讲解

hbase进阶操作——读流程与写流程介绍

centos7虚拟机在集群zookeeper上面配置hbase的具体操作步骤

文章目录

系列文章目录

一、HBase的架构原理

1、StoreFile

2、MemStore

3、WAL

二、HBase的shell操作

2.1、创建表与写入数据

2.2、对数据进行刷洗与上传到web页面

2.3、Compact合并文件

2.4、再次插入数据验证

2.5、插入新的数据进行实验

三、对regionserver的一些解释说明

3.1、 MemStore Flush

3.2、StoreFile Compaction

3.3、 Region Split

四、HBase的优化——高可用与预分区操作

4.1、高可用HA(High Availability)

1.关闭 HBase 集群(如果没有开启则跳过此步)

​编辑

2.在 conf 目录下创建 backup-masters 文件

3.在 backup-masters 文件中配置高可用 HMaster 节点

4.将整个 conf 目录 scp 到其他节点

5.打开页面测试查看

4.2、预分区

1.手动设定预分区

2.生成 16 进制序列预分区

3.按照文件中设置的规则预分区

4.使用 JavaAPI 创建预分区

补充一些小知识

总结


前言

本文主要介绍HBase如何进行分区与数据处理等等操作,下面的案例经供参考。

一、HBase的架构原理

1、StoreFile

保存实际数据的物理文件,StoreFile HFile 的形式存储在 HDFS 上。每个 Store 会有一个或多个 StoreFileHFile),数据在每个 StoreFile 中都是有序的。

2、MemStore

写缓存,由于 HFile 中的数据要求是有序的,所以数据是先存储在 MemStore 中,排好序后,等到达刷写时机才会刷写到 HFile,每次刷写都会形成一个新的 HFile

3、WAL

由于数据要经 MemStore 排序后才能刷写到 HFile,但把数据保存在内存中会有很高的概率导致数据丢失,为了解决这个问题,数据会先写在一个叫做 Write-Ahead logfile 的文件中,然后再写入 MemStore 中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。

二、HBase的shell操作

进入HBase的shell里面进行操作以便理解regionserver如何实现数据的存取等等操作

2.1、创建表与写入数据

创建表stu

插入数据

插入数据李四这个数据,scan查看时最新的数据

可以直接写scan查看其操作的说明

查看所有的数据内容

2.2、对数据进行刷洗与上传到web页面

Flush写入内存里面

再次插入1001里面的wangwu数据,此处flush上传到内存里面,此时web端应该有两个小文件

刷洗之后只有最新更新的最新数据

2.3、Compact合并文件

Compact合并文件的帮助文档


再次插入小王和小赵的数据,上传合并一下

刷洗一遍最后只有一个文件了。里面只有最新的1000小赵和1001的王五数据

Ps:此处会删除过时的数据,保存最新的数据到大文件里面

最终的页面结果

2.4、再次插入数据验证

再次插入1005:小红

刷洗一遍:flush

再次删除小红

使用Scan命令使其显示所有版本信息

在终端可以查看最新的文件信息【此处的最新文件是一个小文件】

2.5、插入新的数据进行实验

插入一行1006

删除1006

再次查看1006

刷洗之后,会保留删除的标记

compact上传合并一下

终端查看

此处的文件就只有一个合并的最终版本了。

三、对regionserver的一些解释说明

3.1、 MemStore Flush

 MemStore 刷写时机:

1.当某个memstroe 的大小达到了hbase.hregion.memstore.flush.size(默认值128M),

其所在region 的所有memstore 都会刷写。

memstore 的大小达到了

hbase.hregion.memstore.flush.size(默认值128M

* hbase.hregion.memstore.block.multplier(默认值4

时,会阻止继续往该memstore 写数据

2. region server memstore 的总大小达到

java_heapsize

*hbase.regionserver.global.memstore.size(默认值 0.4

*hbase.regionserver.global.memstore.size.lower.limit(默认值 0.95

region 会按照其所有 memstore 的大小顺序(由大到小)依次进行刷写。直到 region server

中所有 memstore 的总大小减小到上述值以下。【0.38(=0.4*0.95)】

region server memstore 的总大小达到

java_heapsize*hbase.regionserver.global.memstore.size(默认值 0.4

时,会阻止继续往所有的 memstore 写数据。

3. 到达自动刷写的时间,也会触发 memstore flush。自动刷新的时间间隔由该属性进行

配置 hbase.regionserver.optionalcacheflushinterval(默认 1 小时)

尚硅谷大数据技术之 Hbase —————————————————————————————

4. WAL 文件的数量超过 hbase.regionserver.max.logsregion 会按照时间顺序依次进

行刷写,直到 WAL 文件数量减小到 hbase.regionserver.max.log 以下(该属性名已经废弃,

现无需手动设置,最大值为 32)。

ps:Ctrl+f调出本地的官方文档进行查看上述内容

3.2、StoreFile Compaction

由于 memstore 每次刷写都会生成一个新的 HFile,且同一个字段的不同版本(timestamp

和不同类型(Put/Delete)有可能会分布在不同的 HFile 中,因此查询时需要遍历所有的 HFile

为了减少 HFile 的个数,以及清理掉过期和删除的数据,会进行 StoreFile Compaction

Compaction 分为两种,分别是 Minor Compaction Major CompactionMinor Compaction

会将临近的若干个较小的 HFile 合并成一个较大的 HFile,但不会清理过期和删除的数据

Major Compaction 会将一个 Store 下的所有的 HFile 合并成一个大 HFile,并且会清理掉过期

和删除的数据

Hile

3.3、 Region Split

默认情况下,每个 Table 起初只有一个 Region,随着数据的不断写入,Region 会自动进

行拆分。刚拆分时,两个子 Region 都位于当前的 Region Server,但处于负载均衡的考虑,

HMaster 有可能会将某个 Region 转移给其他的 Region Server

Region Split 时机:

1.1 region 中的某个Store 下所有StoreFile 的总大小超过hbase.hregion.max.filesize

Region 就会进行拆分(0.94 版本之前)。

2. 1 region Store StoreFile Min(R^2 *

"hbase.hregion.memstore.flush.size",hbase.hregion.max.filesize"),该 Region 就会进行拆分,其

R 为当前 Region Server 中属于该 Table 的个数(0.94 版本之后)。

四、HBase的优化——高可用与预分区操作

4.1、高可用HAHigh Availability

HBase HMaster 负责监控 HRegionServer 的生命周期,均衡 RegionServer 的负载,

如果 HMaster 挂掉了,那么整个 HBase 集群将陷入不健康的状态,并且此时的工作状态并

不会维持太久。所以 HBase 支持对 HMaster 的高可用配置。

1.关闭 HBase 集群(如果没有开启则跳过此步)

[hadoop@hadoop102 hbase]$ bin/stop-hbase.sh

2.在 conf 目录下创建 backup-masters 文件

[hadoop@hadoop102 hbase]$ touch conf/backup-masters

3.在 backup-masters 文件中配置高可用 HMaster 节点

>指的追加

[hadoop@hadoop102 hbase]$ echo hadoop103 > conf/backup-masters

4.将整个 conf 目录 scp 到其他节点

[hadoop@hadoop102 hbase]$ scp -r conf/

hadoop103:/opt/module/hbase/

[hadoop@hadoop102 hbase]$ scp -r conf/

hadoop104:/opt/module/hbase/

5.打开页面测试查看

http://hadooo102:16010

杀死Hadoop102的master进程

查看Hadoop103节点的master进程

此处可以看到Hadoop103作为master节点

再次启动Hadoop102的进程

此时还是103节点为master节点

原因:此时的Hadoop102节点只能当作是Hadoop03的“小弟”,不能作为主节点【“大哥”】

4.2、预分区

每一个 region 维护着 StartRow EndRow,如果加入的数据符合某个 Region 维护的

RowKey 范围,则该数据交给这个 Region 维护。那么依照这个原则,我们可以将数据所要

投放的分区提前大致的规划好,以提高 HBase 性能。

1.手动设定预分区

Hbase> create 'staff1','info','partition1',SPLITS =>

['1000','2000','3000','4000']

2.生成 16 进制序列预分区

create 'staff2','info','partition2',{NUMREGIONS => 15, SPLITALGO =>

'HexStringSplit'}

3.按照文件中设置的规则预分区

创建 splits.txt 文件内容如下:

aaaa

bbbb cccc dddd

然后执行:

create 'staff3','partition3',SPLITS_FILE => 'splits.txt'

4.使用 JavaAPI 创建预分区

//自定义算法,产生一系列 hash散列值存储在二维数组中

byte[][] splitKeys = 某个散列值函数

//创建 HbaseAdmin实例

HBaseAdmin hAdmin = new HBaseAdmin(HbaseConfiguration.create()); //创建 HTableDescriptor实例

HTableDescriptor tableDesc = new HTableDescriptor(tableName);

//通过 HTableDescriptor实例和散列值二维数组创建带有预分区的 Hbase

hAdmin.createTable(tableDesc, splitKeys);

补充一些小知识

在集群启动之后使用kill  -9  +端口号杀死进程,此时如果进入到shell里面会显示无法实现对数据的基本操作。

单点启动hbase的master节点

总结

以上就是对HBase的进阶内容的介绍,希望对初学者有所帮助。

最后欢迎大家点赞👍,收藏⭐,转发🚀,
如有问题、建议,请您在评论区留言💬哦。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pytest使用 一(安装、简单的测试用例、运行)

Pytest框架 — 1.Pytest测试框架介绍 - 知乎 2023最新pytest接口自动化测试框架,三天带你精通pytest,带你写出最好的代码!(已更新2023新版)_哔哩哔哩_bilibili 一、pytest安装 pip3 install pytest # 查看pytest版本…

前端学习--Ajax(1) get/post

一、客户端和服务器 上网的目的:借助互联网获取和消费资源 1.1 服务器 负责存放和对外提供资源的计算机 1.2 客户端 负责获取和消费资源的计算机 二、URL地址 2.1 概念 Uniform Resource Locator 中文叫统一资源定位符,标识互联网上每一个资源的存…

(3)相关概念和索引的CURD

核心概念 https://www.elastic.co/guide/en/elasticsearch/reference/7.10/index.html 什么是搜索引擎? 全文搜索引擎 自然语言处理(NLP)、爬虫、网页处理、大数据处理。如谷歌、百度、搜狗、必应等等。 垂直搜索引擎 有明确搜索目的的…

脉诊在现代医学中的应用与局限性

目录 一、脉诊在疾病诊断中的作用及局限性 二、现代脉诊仪的可靠性 三、中医在现代医学中的地位 四、中西医结合的发展趋势 结论 一、脉诊在疾病诊断中的作用及局限性 脉诊作为中医诊断的重要方法之一,通过检测脉搏波的特征来了解患者的身体状况,进…

学习笔记:《Foundation models for generalist medical artificial intelligence》

目录 一、GMAI模型的概念与优势 二、GMAI模型面临的挑战 1.验证 2.社会偏见 3.隐私 4.规模 5.技术挑战 三、结论: 参考文献 最近在《Nature》杂志上发表的一篇名为《Foundation models for generalist medical artificial intelligence》的文章&#xff0c…

品牌如何借助江湖老大“音乐记忆”做宣传?

去年有个卖咖啡的小姐姐火了,“咖啡你冲不冲,冲冲冲冲冲”节奏分明、及其洗脑,引发众多网友模仿和音频采用。 其实这种借用音乐记忆扩大品牌知名度和传播范围的品宣手段十分常见,仔细回想一下,我们平时听到较为魔性的…

05-Node.js—http模块

目录 1、HTTP 协议1.1 概念1.2 请求报文的组成1.3 HTTP 的请求行1.4 HTTP 请求头1.5 HTTP 的请求体1.6 响应报文的组成 2、创建 HTTP 服务2.1 操作步骤2.2 测试2.3 注意事项 3、获取 HTTP 请求报文3.1 请求方法 request.method3.2 请求版本 request.httpVersion3.3 请求路径 re…

基本绘图函数

基本绘图函数 cv2.line()函数------用于绘制直线. 算子解释: cv2.line(img1, (20, 80), (120, 80), (0, 255, 255))cv2.line(img, pt1, pt2, color, thicknessNone, lineTypeNone, shiftNone) img:背景图。 pt1:直线起点坐标。 pt2&#x…

实战详解docker安装步骤——Linux操作系统(CentOS7.9)下安装容器技术docker引擎

一、安装docker依赖环境 yum install -y yum-utils device-mapper-persistent-data lvm2二、配置国内docker-ce的yum源 (这里采用的是阿里云镜像配置文件) yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-c…

基于java Springboot+Vue+shiro前后端分离疫情防疫管理系统设计和实现2.0

基于java SpringbootVueshiro前后端分离疫情防疫管理系统设计和实现2.0 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获…

老板们搞怪营业,品牌好感度upup真有梗

老板下场营业最经典的莫过于“老乡鸡”了。在手撕联名信事件出圈后,老乡鸡围绕束从轩创始人IP,开展了一系列社交传播宣传,比如“咯咯哒糊弄学”等。 50多岁的老乡鸡董事长束从轩,一改传统企业家严肃正经的形象,跟着老乡…

Pytorch深度学习笔记(九)加载数据集

目录 1.名词解释 2. 数据集加载器Dataloader 3.完整代码 推荐课程:08.加载数据集_哔哩哔哩_bilibili 1.名词解释 名词解释:Epoch,Batch,Batch-Size,Iterations Epoch(周期):指所…

职工管理系统(C++)

职工管理系统有以下8个功能: - 增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、部门编号 - 显示职工信息:显示公司内部所有职工的信息 - 删除离职职工:按照…

java防止重复提交的方法

为了防止重复提交,可以采用以下几种方法: 1. 令牌机制(Token) 在表单中添加一个隐藏字段,用于存放一个随机生成的令牌(Token)。当用户提交表单时,将令牌一起提交到服务器。服务器接收…

Win10系统重装过程(一键装机)

相信不少小伙伴都有刷机重装系统的过程,那种镜像,up盘,压缩包等多个复杂过程也折磨的大伙不堪重负,因此本期带来简易版一键装机相应操作。 下载地址: 小心点击下方链接,点击即下载(3.66GB&…

SAM:图像分割的里程碑

Facebook的新模型称为SAM或Segment Anything Model,具有在计算机视觉行业中引起积极变革的潜力。这个突破性模型不同于以前使用的任何其他图像分割模型。 传统上,会为不同类型的图像,如人或汽车,分别训练不同的模型,但…

成功上岸国防科大!

Datawhale干货 作者:王洲烽,太原理工大学,Datawhale成员 写在前面 相比较于一般的经验贴,我更想在这里讲述一下自己的故事。我一开始报考的是北理工,但很遗憾9月份北理改考408了,无缘京爷,所以…

路径规划 | 图解概率路图PRM原理及其参数分析

目录 0 专栏介绍1 基于采样的规划算法2 概率路图基本原理3 PRM算法流程4 PRM参数分析4.1 采样点数4.2 阈值 d max ⁡ \mathrm{d}_{\max} dmax​ 0 专栏介绍 🔥附C/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划…

nginx简单介绍

文章目录 1. 下载并解压2. 80端口被占用,更改nginx默认的监听端口3. 访问nginx4. 在linux上安装nginx5. nginx常用命令6. nginx.conf 1. 下载并解压 官网下载 2. 80端口被占用,更改nginx默认的监听端口 更改conf/nginx.conf文件 3. 访问nginx ht…

[译] 实战 React 18 中的 Suspense

> 原文:https://dev.to/darkmavis1980/a-practical-example-of-suspense-in-react-18-3lln React 18 带来了很多变化,它不会破坏你已经编写过的代码,并且有很多改进和一些新概念。 它也让很多开发人员,包括我,意识到…