hbase空间清理

当HBase因未设置TTL导致磁盘空间占满时,可通过设置表的TTL来自动删除过期数据并释放空间。在清理过程中遇到连接拒绝问题,可能是regionserver异常。重启HBase并释放磁盘空间可解决问题。此外,直接删除HDFS中的HBase文件是一种暴力清理方式,但可能有风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hbase空间清理

hbase由于未设置TTL,导致磁盘空间占满,需要删除数据,或设置TTL。
查看磁盘空间占用情况:

$ df -m

查看磁盘空间占用情况:

$ du -sh *

最终发现是hadoop文件夹占用最高,确切说是./hadoop/tmp/dfs/data文件夹占空间最大。
根据我们自己的业务情况,容易判断出是hbase不断写入导致的问题,通过查看hdfs得到验证:

$ ./hadoop fs -du -h /
12.9 G  /hbase
78.3 K  /tmp

设置hbase表的TTL, 30天

$ ./hbase shell
hbase> desc 'ns1:t1'
hbase> disable 'ns1:t1'
hbase> alter 'ns1:t1', {NAME => 'n1', TTL => '2592000'}, {NAME => 'n2', TTL => '2592000'}
hbase> enable 'ns1:t1'

设置成功后,hbase自动将过期数据删除,进行合并region操作。磁盘空间得以释放。

遇到问题

Connection refused

与网上查到的问题不太一样,我碰到的问题现状是hbase shell可以正常启动,执行list命令OK,但是执行desc命令时就报错Connection refused
查看hbase日志,发现hbase-xxx-regionserver-xxx.log日志中,显示regionserver有异常。

org.apache.hadoop.ipc.RemoteException(java.io.IOException): File xxx could only be replicated to 0 nodes instead of minReplication (=1).  There are 1 datanode(s) running and no node(s) are excluded in this operation.

这个异常没有仔细定位,感觉同样是因为资源占满问题导致的。查看hbase的进程,果然只有master,没有regionserver。

$ ps -aux | grep hbase

重新启动hbase,会提示master进程已存在,并继续启动regionserver进程。

$ start-hbase.sh

regionserver进程启动成功后,该问题解决,可以正常操作hbase。如果regionserver仍然报上面的异常,可先释放部分磁盘空间,再进行尝试。

其它清理方式

  • 使用hbase shell命令,删除数据。如果按行删除,需要先查再删,而且删除速度过慢;如果删除所有,则丢失最新数据。
  • 暴力处理hdfs文件。因为开始hbase shell命令无法正常使用,因此查阅一些暴力删除hdfs中hbase文件方式,删除data的同时,应该还要处理tmp文件等,没有进行尝试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值