HBASE Space Used Begann schnell zu klettern

7

Aktualisieren 4215:
Nach einem Blick auf Raumnutzung innerhalb von hdfs, ich sehe , dass .oldlogs viel Platz verwendet:

1485820612766  /hbase/.oldlogs

Also neue Fragen:

  • Was ist es?
  • Wie räume ich es auf?
  • Wie kann ich verhindern, dass es wieder wächst?
  • Was hat dazu geführt, dass es überhaupt zu wachsen begann?
  • Auch .archive ist auch groß, was ist das, meine Schnappschüsse?

Auch als Hausaufgaben-Scollector wird die Speicherplatznutzung verschiedener HDFS-Verzeichnisse nicht überwacht ....

Es sieht auch so aus, als hätte der folgende Fehler die Protokolle zu dieser Zeit wiederholt gefüllt, nicht sicher, was sie genau bedeuten:

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 

Meine Reise:

In meinem HBASE-Cluster, in dem openTSBD-Daten gespeichert sind, stieg mein Speicherplatz ziemlich schnell an (obwohl nach unseren Erkenntnissen unsere Einfügungsrate konsistent war):

Geben Sie hier die Bildbeschreibung ein

Die Festplatten, die zunehmen, sind die HDFS-Speicherfestplatten. Die Verzeichnisse sind ungefähr gleich groß.

Mein Setup ist ein HBASE-Cluster (erstellt mit Cloudera) mit 3 Computern mit einem HDFS-Replikationsfaktor von 3. Es gibt auch einen anderen Cluster mit einem einzelnen Computer, auf den der Hauptcluster repliziert. Das Replikat zeigt nicht dieselbe Wachstumsänderung:

Geben Sie hier die Bildbeschreibung ein

Ich list_snapshotsmache Schnappschüsse auf dem Master, aber von der hbase-Shell wird kein Zurück mehr als ein Tag angezeigt, daher denke ich, dass diese so ausgesucht werden, wie sie sein sollten. Meine hbase Erfahrung ist nicht großartig, irgendwelche Vorschläge, was man sich sonst noch ansehen sollte?

Fortschritte machen ... :

[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
Kyle Brandt
quelle

Antworten:

2

Ich denke, meine Replikation ist schlecht gelaufen. Ich denke, in .oldlogs befinden sich die Write-Ahead-Logs (WALS) gemäß diesem Safari-Artikel . Sie sollten aufgeräumt werden, waren aber aus irgendeinem Grund nicht.

Ich habe Folgendes verwendet, um es aufzuräumen:

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

Da ich dies beim Erstellen eines Ersatzclusters als Replikationsziel bemerkt habe, habe ich die Replikation vorerst gestoppt und scheint nicht mehr unbegrenzt zu wachsen. Dies werde ich in Zukunft überwachen. Insbesondere, weil es den Anschein hat, dass dies ein Fehler gemäß dem hbase-Problem 3489 ist .

Kyle Brandt
quelle
1

HBase ist absturzsicher und .logs ist der Speicherort von WALs (hlogs), die für die Wiederherstellung nach einem Absturz benötigt werden. Sobald der Speicher von Regionservern in hfiles geleert ist, werden WALs nicht mehr für die Wiederherstellung nach einem Absturz benötigt und in .oldlogs verschoben. Alte Protokolle werden normalerweise für die Cluster-zu-Cluster-Replikation verwendet. .oldlogs haben eine konfigurierbare Aufbewahrungsdauer von beispielsweise 3 Tagen. In diesem Fall haben Sie 3 Tage Zeit, um die Replikation zu reparieren, ohne dass eine erneute Aussaat erforderlich ist, wenn Ihre Replikation unterbrochen wurde. Ich hoffe, dies hilft zu untersuchen, was am 24. November passiert ist und was zu einer Zunahme der .oldlogs-Größe geführt hat und wann mit dem automatischen Löschen von hlogs in .oldlogs zu rechnen ist

Aleksandr Levchuk
quelle