一、需求场景
随着业务数据的快速增长,物理磁盘剩余空间告警,需要将数据备份从3份修改为1份,从而快速腾出可用磁盘容量。
二、解决方案
1. 修改hdfs的副本数
Hbase 的数据是存储在 hdfs 上的,Hbase的副本数是默认读取hdfs的配置进行副本备份的,所以需要修改hdfs上的副本数据。
2.删除重复数据
修改hdfs-site.xml的副本数,只能对以后的数据有效,不能修改已经存储的文件备份数,所以需要删除多余的数据。
3.负载均衡
可以增加新的存储节点,并且执行负载均衡策略。将数据均匀的分布到多个数据节点中,最大化的利用数据磁盘。
4.开启hbase表压缩
Hbase数据采用的列式存储,占用空间较大,指定压缩方式可以很好的减少磁盘的占用。
三、操作步骤
1.修改hdfs副本数
a) 通过CDH的web界面修改:
b) 通过hdfs-site.xml修改
2.删除重复数据
该问题网上有很多回答,我这里使用的强制修改备份的方法。
//将HDFS上的数据仅保留一份备份 hadoop fs -setrep -R 1 /
// HDFS会为每一个用户创建一个回收站目录:/user/用户名/.Trash/,每一个被用户通过Shell删除的文件/目录,在系统回收站中都一个周期,也就是当系统回收站中的文件/目录在一段时间之后没有被用户回复的话,HDFS就会自动的把这个文件/目录彻底删除,之后,用户就永远也找不回这个文件/目录了。如果磁盘占用依旧很大,需要去回收厂手动删除。 |
3.负载均衡
修改存储节点后,使用hdfs用户shell命令执行:hdfs balancer
4.对现有表修改压缩方式
disable 'testcompression' //首先将表下线 alter 'testcompression', NAME => 'f1', COMPRESSION => 'SNAPPY' //修改表属性,指定压缩方式为SNAPPY enable 'testcompression' //启用表 desc 'testcompression' //验证是否已启用压缩放肆 major_compact 'testcompression' //执行大合并 |
四、查看结果