Hbase -- Compact工具梳理

news2024/11/25 19:29:58

1. 背景

当前,线上HBase集群的自动Major Compact是关闭的,我们选择在凌晨业务空闲的时候进行手动触发Major Compact,Compact工具就是在运维平台上对资源组、RS、表进行Major Compact。目前线上有2种版本的Compact程序:Compact_v1和Compact,Compact_v1是基于Compact做了部分优化。在实际运行中,也发现有部分Compact任务运行失败,并且该工具目前处于无人运维的状态。本文对该工具从输入、代码流程、使用方法进行说明,并且后续会持续对该文档进行补充,增加线上运行失败的原因分析和改进。

2. Compact_v1

2.1 程序输入

序号参数名参数含义是否必选备注
1cluster集群名
2rsgroup资源组
3cmd执行命令类型,支持

compact_server、compact_rsgroup、compact_table

4parameter对应cmd的参数,如果是compact_server则为具体的机器名,如果是compact_rsgroup则为具体的rsgroup,如果是compact_table,则为具体的table
5batchSize一次批量添加任务的大小
6queueLimitMajor Compaction队列长度限制
7mcIntervalMajor Compaction时间间隔,单位毫秒
8mcTaskExecutionTimeMajor Compaction任务执行的时间,单位毫秒
9execute是否执行任务,如果为false,则仅输出执行计划
10compactNum执行Major Compaction的并发线程数默认为1

2.2 程序流程图

2.2.1 总体流程图

 

2.2.2详细流程图

图1是Compact_v1版本程序的详细流程图。

 

 

 

其中executePlan的流程图入图2所示:

 

  

ServerCompactBatchTask是集成了Callable<Boolean>的类,其中call方法的流程图如图3所示:

 

 

3 Compact

3.1 程序输入

序号

参数名

参数含义

是否必选

备注

1cluster集群名
2rsgroup资源组
3cmd执行命令类型,支持

compact_server、compact_rsgroup、compact_table

4parameter对应cmd的参数,如果是compact_server则为具体的机器名,如果是compact_rsgroup则为具体的rsgroup,如果是compact_table,则为具体的table
5batchSize一次批量添加任务的大小
6queueLimitMajor Compaction队列长度限制
7mcIntervalMajor Compaction时间间隔,单位毫秒
8mcTaskExecutionTimeMajor Compaction任务执行的时间,单位毫秒
9execute是否执行任务,如果为false,则仅输出执行计划

3.2 程序流程图

3.2.1 总体流程图

 

3.2.2 详细流程图

图4是Compact版本程序的总体流程图。

 

 

 

其中executePlan的方法的流程图如图5所示:

 

 

 

 

4. 两个程序的区别

序号区别备注
1compact_v1支持多线程对region执行compact,compact仅支持单线程
2compact_v1生成plan的时候,对plan中的region进行排序,compact没有
3compact_v1对plan队列的每个plan进行了排序,compact没有
4sleep的时间不一样,compact_v1短一点

5. Compact程序线上问题分析

目前线上因为Compact_v1有失败的,所以已经将所有的Compact_v1改为Compact任务。

通过查看代码,可以看到Compact_v1是基于Compact做了多个优化,包括可以多线程执行Compact、Region合并按照优先级的顺序执行,各台机器的Compact也是按照优先级排序 ,所以建议采用Compact_v1的代码。

线上执行Compact_v1有失败的问题,查看了运行日志,失败基本都是超时导致,没有打印出程序运行日志,所以目前先配置了几个Compact_v1的定时任务,通过增加日志的方式,每天查看任务运行状况。

后续进展会在这里描述。

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

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

相关文章

html 懒加载图片实现方法

懒加载逻辑 一般如果场景比较大&#xff0c;滚动条很长&#xff0c;图片比较多的情况下&#xff0c;不使用赖加载图片会一下子把资源都加载&#xff0c;导致性能很慢&#xff0c;甚至没有滚动到下面也加载了&#xff0c;很浪费资源现在通过滚动事件来处理图片加载,我们先吧要显…

Vue项目中components组件的使用笔记

目录 前言 一、components和component的区别&#xff1f; 二、components使用的步骤 1.创建组件vue文件 2.引入组件 3.注册组件 4.应用组件 总结 前言 本文章&#xff0c;只是初步了解记录components的使用步骤。 一、components和component的区别&#xff1f; compo…

【Python学习笔记】第二十一节 Python Lambda 函数

Python 提供了非常多的库和内置函数。有不同的方法可以执行相同的任务&#xff0c;而在 Python 中&#xff0c;有个万能之王函数&#xff1a;lambda 函数&#xff0c;它以不同的方式在任何地方使用。一、Lambda 函数简介在 Python 中&#xff0c;函数可以接受一个或多个位置参数…

火爆全网的ChatGPT 和AI 可以为项目经理做什么?

作为一款人工智能聊天机器人&#xff0c;ChatGPT因其逼真和人性化的特性而风靡全球&#xff0c;无疑是当今技术的新流行。人工智能 (AI) 有可能彻底改变许多行业&#xff0c;包括项目管理&#xff0c;及时了解最新技术以及它如何影响你的工作至关重要。于是&#xff0c;我们与C…

C++ string类(二)及深浅拷贝

一、string类方法使用举例1.迭代器迭代器本质&#xff1a;指针&#xff08;理解&#xff09;迭代器&#xff1a;正向迭代器&#xff1a; begin() | end() 反向迭代器&#xff1a; rbegin() | rend()2.find使用//找到s中某个字符 void TestString3() {string s("AAADEFNUIE…

分层测试(1)分层测试是什么?【必备】

1. 什么是分层测试&#xff1f; 分层测试是通过对质量问题分类、分层来保证整体系统质量的测试体系。 模块内通过接口测试保证模块质量&#xff0c;多模块之间通过集成测试保证通信路径和模块间交互质量&#xff0c;整体系统通过端到端用例对核心业务场景进行验证&#xff0c…

Spring Boot 3.0系列【2】部署篇之使用GraalVM构建原生镜像

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Spring Boot版本2.7.0 文章目录概述JIT & AOTJIT &#xff08;动态编译&#xff09;AOT&#xff08;静态编译&#xff09;GraalVM简介运行模式Native Image&#xff08;原生镜像&#xff09;…

无线蓝牙耳机哪个牌子性价比高?国内性价比高的蓝牙耳机推荐

近年来&#xff0c;蓝牙耳机越来越成为人们日常生活中常见的数码产品之一&#xff0c;其便捷性以及愈发先进的功能得到了不少消费者的认可。无线蓝牙耳机哪个牌子性价比高&#xff1f;针对这个问题&#xff0c;我来给大家推荐几款国内性价比高的蓝牙耳机&#xff0c;一起来看看…

AI画图_stable-diffusion-webui安装使用指南(1)

本文章适用于: 有一定学习能力和钻研能力&#xff0c;遇到问题能合理使用搜索引擎尝试解决问题的人想在windows系统中尝试使用AI作画工具stable-diffusion-webui进行绘画的人有一定的计算机基础&#xff08;会魔法上网、知道 python和Git&#xff09;和英文阅读能力的人显卡为…

js侧滑显示删除按钮

效果图&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalableno"><title>js侧滑显示删…

堡垒机采购注意事项说明

随着各大企业对数据安全的高度重视&#xff0c;堡垒机作为基础数据安全产品&#xff0c;被采购的也越来越多。但面对是棉厂众多的堡垒机品牌&#xff0c;采购者往往很蒙圈。这里我们行云管家小编就给大家汇总说明了几点堡垒机采购注意事项&#xff0c;希望对大家有用。 堡垒机…

在中外合作办学硕士领域似乎自己一直在纠结,也许是为了能遇见人大女王金融硕士

2023考研成绩如期而至&#xff0c;还记得考试时的一幕幕吗&#xff1f;在身体被高热侵蚀的情况下&#xff0c;我们似乎很难忘记这次考试所带给我们的经历。如今成绩下来了&#xff0c;可能与我们预期的几乎相同&#xff0c;但是在不断地寻找新的学习途径的过程中我们发现&#…

字节跳动青训营--Webpack

文章目录前言一、为什么要学习Webpack&#xff1f;二、什么是Webpack&#xff1f;1. 产生背景2. 基础概念三、使用Webpack1. 安装2. 编辑配置文件3. 执行编译命令核心流程四、如何使用Webpack流程类配置配置总览五、理解Loader六、理解插件插件钩子课外关注资料前言 此文章仅用…

华为OD机试题,用 Java 解【特异性双端队列】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…

I.MX6ULL内核开发12:使用设备树插件实现RGB灯驱动

目录 一、引言 二、设备树插件格式 三、实验说明 四、实验准备 4.1 通过内核工具编译设备树插件 五、实验效果 5.1 uboot加载 5.2 加载RGB驱动 一、引言 Linux4.4以后引入了动态设备树&#xff08;Dynamic DevicesTree&#xff09;&#xff0c;这里翻译位“设备树插件…

【C++ | bug | 运算符重载】定义矩阵(模板)类时,使用 “友元函数” 进行 * 运算符重载时编译报错

作者&#xff1a;非妃是公主 专栏&#xff1a;《C》 博客地址&#xff1a;https://blog.csdn.net/myf_666 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 文章目录专栏推荐一、类的声明及函数定义二、错误信息三、问题…

MySQL数据库操作

查看数据库语法show databases——列出所有的数据库 show databases [ like wild ];——列出和字符串wild名字相同的数据库 这里可以配合SQl的 "%" 和 "_" 通配符使用来查找多个数据库在SQL语句中"%"代表任意字符出现任意次数,"_"代表…

无代码资讯 | 《低代码开发平台能力要求》发布;CADP列入Gartner《2022-2024 中型企业技术采用路线图》

栏目导读&#xff1a;无代码资讯栏目从全球视角出发&#xff0c;带您了解无代码相关最新资讯‍。TOP3 大事件1、《低代码开发平台能力要求》团体标准正式发布近日&#xff0c;中国电子工业标准化协会发布公告&#xff08;中电标【2022】037 号&#xff09;&#xff0c;由中国电…

Mysql数据查询

文章目录1 group by子句2 回溯统计3 having子句1 group by子句 group by子句**&#xff1a;分组统计&#xff0c;根据某个字段将所有的结果分类&#xff0c;并进行数据统计分析 分组的目的不是为了显示数据&#xff0c;一定是为了统计数据group by子句一定是出现在where子句之…

代码随想录算法训练营day45 |动态规划之背包问题 70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数

day4570. 爬楼梯 &#xff08;进阶&#xff09;1. 确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例来推导dp数组322. 零钱兑换1. 确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组279.完全平方数1. 确…