HBASE空间开始快速攀登

更新4,215:
在查看hdfs 里面的空间使用情况后,我发现.oldlogs使用了很多空间:

1485820612766 /hbase/.oldlogs 

所以新的问题:

  • 它是什么?
  • 我如何清理它?
  • 我如何防止它再次成长
  • 是什么导致它开始增长呢?
  • 另外.archive也很大,那是什么,我的快照?

也作为家庭作业scollector不会监视各种hdfs目录的磁盘空间使用情况….

也看起来像下面的错误开始填充日志重复在那个时候,不知道他们是什么意思:

 2014-11-25 01:44:47,673 FATAL org.apache.hadoop.hbase.regionserver.wal.HLog: Could not sync. Requesting close of hlog java.io.IOException: Reflection at org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter.sync(SequenceFileLogWriter.java:310) at org.apache.hadoop.hbase.regionserver.wal.HLog.syncer(HLog.java:1405) at org.apache.hadoop.hbase.regionserver.wal.HLog.syncer(HLog.java:1349) at org.apache.hadoop.hbase.regionserver.wal.HLog.sync(HLog.java:1511) at org.apache.hadoop.hbase.regionserver.wal.HLog$LogSyncer.run(HLog.java:1301) at java.lang.Thread.run(Thread.java:744) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter.sync(SequenceFileLogWriter.java:308) ... 5 more Caused by: java.io.IOException: Failed to add a datanode. User may turn off this feature by setting dfs.client.block.write.replace-datanode-on-failure.policy in configuration, where the current policy is DEFAULT. (Nodes: current=[10.7.0.231:50010, 10.7.0.233:50010], original=[10.7.0.231:50010, 10.7.0.233:50010]) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.findNewDatanode(DFSOutputStream.java:857) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.addDatanode2ExistingPipeline(DFSOutputStream.java:917) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.setupPipelineForAppendOrRecovery(DFSOutputStream.java:1023) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.processDatanodeError(DFSOutputStream.java:821) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:463) 2014-11-25 01:44:47,673 ERROR org.apache.hadoop.hbase.regionserver.wal.HLog: Error while syncing, requesting close of hlog 

我的旅程:

在我存储openTSBD数据的HBASE集群上,我的磁盘空间开始快速攀升(尽pipe从我所知道的插入速率已经一致):

在这里输入图像描述

正在增加的磁盘是HDFS存储磁盘。 目录的大小大致相同。

我的设置是一个HBASE集群(由cloudera制作),有3台机器,其hdfs复制因子为3.另外还有一个主集群复制到一台机器的集群。 副本没有显示出同样的增长变化:

在这里输入图像描述

我正在拍摄快照,但是来自hbase shell的list_snapshots没有显示任何回顾,所以我认为这些应该是被淘汰的。 我的基础经验不是很好,还有什么build议可以看?

取得进展…

 [root@ny-tsdb01 ~]# hadoop fs -dus /hbase/* dus: DEPRECATED: Please use 'du -s' instead. 3308 /hbase/-ROOT- 377401 /hbase/.META. 220097161480 /hbase/.archive 0 /hbase/.corrupt 1537972074 /hbase/.logs 1485820612766 /hbase/.oldlogs 8948367 /hbase/.snapshot 0 /hbase/.tmp 38 /hbase/hbase.id 3 /hbase/hbase.version 192819186494 /hbase/tsdb 905 /hbase/tsdb-meta 899 /hbase/tsdb-tree 1218051 /hbase/tsdb-uid 

我认为我的复制变坏了。 我认为.oldlogs就是根据这个safari文章写预先日志(WALS)的地方。 他们应该清理,但不是由于某种原因。

我用以下来清理它:

HADOOP_USER_NAME=hdfs hadoop fs -rm -skipTrash /hbase/.oldlogs/*

由于我在构buildreplace群集作为复制目标的过程中注意到了这一点,因此我暂时停止了复制,并且似乎并没有再增加无限制的目录。 这是我将要监测的事情。 特别是因为看起来这可能是一个根据HBase问题3489的错误。

HBase是安全崩溃的,.logs是崩溃恢复所需的WALs(hlogs)的位置。 一旦regionservers的内存刷新到hfiles,WAL不再需要进行崩溃恢复,并且它们被移动到.oldlogs。 旧日志通常用于群集到群集的复制。 .oldlogs有一个可configuration的保留期限,例如3天。 在这种情况下,如果有东西破坏了你的复制,那么你有3天的时间来修复复制,而不需要重新设置。 希望这有助于调查11月24日发生的事情,导致.oldlogs大小的增长以及何时自动删除.oldlogs中的hlog