关于Hbase手动实现Major Compact的办法
来源:互联网 发布:建筑业收据单软件 编辑:程序博客网 时间:2024/04/29 01:50
本人小菜,如有错误或疏漏之处,请各位大牛批评指正,求共同进步。发表此博文,旨在帮助遇到类似问题的朋友一点小的建议或思路。废话少说,开始吧。。。
最近,因项目需要。Hbase数据量很大,项目组提出需要对Hbase中目前所有表(当前有5个)进行major_compact操作。是按照需要,每天凌晨3点自动执行major_compact操作。
具体实现:
前期方案:调用hbase相关API,如:hbaseadmin下面有major_compact方法。可以用java等一门程序语言,通过major_compact方法来控制Hbase的compact操作。但是,需要连接数据库具体操作;而且要打包程序,通过这个单独的应用程序来执行major_compact操作。
最后方案,我联想到既然在hbase shell下面有提供major_compact这个操作。那么是否可以采用类似shell脚本方式来管理hbase。答案是肯定的,搜集相关资料,我发现,hbase shell 是支持ruby相关操作的。于是我在ruby中去调用major_compact这个方法。验证结果是肯定的,在ruby下,major_compact就如在hbase shell中一样,成功地得到了执行。
具体步骤:
1. 在Linux中新建一个*.rb(ruby文件),把hbase shell中的major_compact()操作直接放入这个ruby文件中去执行。
.rb文件中:
major_compact("tablename") #一次只能执行一张表的major_compact操作
2. 写一个shell脚本文件,在shell中去执行这个ruby文件,当然(让这个ruby文件在hbase shell中运行),利用crontab命令实现定时(凌晨3点)自动执行hbase的major_compact任务。
.sh文件中:
hbase shell ./*.rb #当然此处添加你自己的文件所在位置
总结:之所以要这样做,是为了实现我们定时完成major_compact()操作,而且我们想操作哪些表,哪些表就可以得到major_compact()结果。当然,由于之前我提示过,major_compact()方法,它本身是hbase shell下面的功能,根据说明,它一次只能操作一个表名,那么如果我要一次操作hbase中所有表且要定时,那么可以考虑自动执行或者我们本博文中提到的方法,然后要外加获取所有表,对所有表进行遍历表名,依次执行major_compact操作。这个只是目前思路,没有用到。
PS:以上若有不正确或者有什么建议和意见,请各位同事同仁,大牛前辈些批评指正,共同学习进步。
- 关于Hbase手动实现Major Compact的办法
- hbase手动compact与split
- Hbase的Region Compact算法实现分析
- HBase在split和major compact的一些非通常情况下的触发条件
- HBase的compact分析
- HBase的compact分析
- HBase的compact流程分析
- HBase compact
- HBase-compact
- Hbase 的compact和rowkey全局有序
- 手动安装tomcat的办法
- 关于major、minor的解释
- hbase源码分析-compact
- hbase minor compact
- iOS8--关于regular和compact的理解
- 一步一步实现SQL Server Compact的RDA
- Hbase compact以及split跟踪
- hbase 手动split region的patch
- Linux下修改文件的时间属性
- H.264 软/硬编码器 画质量化分析评测
- oracle常用经典SQL查询
- Hbase的使用压缩日志反应的问题
- C++实现RTMP协议发送H.264编码及AAC编码的音视频,摄像头直播
- 关于Hbase手动实现Major Compact的办法
- OpenGL GLSL Blocks example
- bash脚本中切换目录
- 黑苹果键盘对应的相应按键
- iBATIS工作原理浅析
- 程序突然显示找不到UIImageView.h解决方法
- Hive - hive.groupby.skewindata环境变量与负载均衡
- 5 从plugin_init()看存储引擎的初始化
- 第7周 Mongodb的部署,数据操作