HBase 在线删除oldWAL释放磁盘空间

HBase 在线删除oldWAL释放磁盘空间

https://blog.csdn.net/Post_Yuan/article/details/126143674
HBase的WAL日志会从WAL转移到oldWAL目录,oldWAL可以通过参数来设置保留时效,如以下截图是将oldWAL设置为7天,通过配置hbase.master.logcleaner.ttl指定,这可能会导致磁盘空间占用较大。如果在线上环境碰到磁盘空间占用很大的情况时,可以考虑根据日期条件来删除部分oldWAL日志。(如果是直接删除oldWAL目录下面的所有文件,可能会因为当前正在有WAL移动的动作而导致RegioniServer宕机)

hbase.rootdir
根目录,在hbase-site.xml文件中配置;

/hbase/WALs
被HLog实例管理的WAL文件;

/hbase/WALs/a12,16020,1582597804834
对于每个HregionServer,日志目录中都包含一个对应的子目录;

/hbase/WALs/a12,16020,1582597804834/a12%2C16020%2C1582597804834.1582602694764
因为日志滚动,在每个子目录下可能有多个HLog文件;

/hbase/oldWALs
当/hbase/WALs 中的HLog文件被持久化到存储文件中,不再需要日志文件时,它们会被移动到/hbase/oldWALs目录;

/hbase/oldWALs/a12%2C16020%2C1582597804834.1582602694764
具体的oldWALs文件;

/hbase/hbase.id
集群的唯一ID;

/hbase/hbase.version
集群的文件格式版本信息;

/hbase/corrupt
损坏的日志文件,一般为空;

/hbase/archive/
存储表的归档和快照,HBase 在做 Split或者 compact 操作完成之后,会将 HFile 移到archive 目录中,然后将之前的 hfile 删除掉,该目录由 HMaster 上的一个定时任务定期去清理。

存储表的归档和快照具体目录:
/hbase/archive/data/default/表名/region名/列簇名/具体文件名

/hbase/.tmp
当对表做创建或者删除操作的时候,会将表move 到该 tmp 目录下,然后再去做处理操作;

/hbase/data
hbase存储数据的核心目录; 

/hbase/data目录下含有两个命名空间default和hbase,其中default是默认命名空间,如果创建的表未指定命名空间,将存放在该命名空间下,habse是系统命名空间,
他们分别对应default和hbase目录,其中刚开始default目录为空,而hbase目录结构如下:
/hbase/data/hbase/meta
/hbase/data/hbase/namespace
namespace 中存储了 HBase 中的所有 namespace 信息,包括预置的hbase 和 default。


/hbase/data/default/
该目录存储所有用户数据表,如/hbase/data/default/表名


/hbase/data/default/表名/.tabledesc
表的元数据信息;

/hbase/data/default/表名/.tmp
中间临时数据,当.tableinfo被更新时该目录就会被用到

/hbase/data/default/表名/f569a17359edb2250cdf07964be606a7(由region的表名+Start Key+时间戳产生的hashcode)
表中每一个region的目录

region 目录

/hbase/data/default/表名/region名/.regioninfo
包含了对应region的HRegionInfo的序列化信息,类似.tableinfo。hbase hbck 工具可以用它来生成丢失的表条目元数据

/hbase/data/default/表名/region名/列族名
每个列族的所有实际数据文件

/hbase/data/default/表名/region名/列族名/文件名
hbase实际数据文件

/hbase/data/default/表名/region名/.tmp(按需创建)
存储临时文件,比如某个合并产生的重新写回的文件。

hdfs/hbase查看磁盘空间

hdfs dfs -du -h   /data/
hdfs dfs -du -h   /hbase/

/hbase/oldWALs
su - hdfs
hdfs dfs -ls /hbase/oldWALs | grep 2022-07-2[2-3]  <-- 列出包含日期字段的完整文件属性列表
hdfs dfs -ls /hbase/oldWALs | grep 2022-07-2[2-3] | awk '{print $8}' <-- 只输出对应日期内的oldWAL文件名列表
hdfs dfs -ls /hbase/oldWALs | grep 2022-07-2[2-3] | awk '{print $8}' | xargs hdfs dfs -rm -skipTrash
hdfs fsck /
hbase hbck

命令 hdfs dfs -du -h /data/

结果 102.3 M 307.0 M /data/

第一列标示该目录下总文件大小

第二列标示该目录下所有文件在集群上的总存储大小和你的副本数相关,我的副本数是3 ,所以

第二列的是第一列的三倍 (第二列内容=文件大小*副本数)

第三列标示你查询的目录

image

参考

https://blog.csdn.net/Post_Yuan/article/details/126143674
https://blog.csdn.net/Sampson_Hugo/article/details/104497156
https://zhangxueliang.blog.csdn.net/article/details/118084915

posted @ 2023-10-12 11:08  三里清风18  阅读(450)  评论(0)    收藏  举报