HBASE Space Used Started Climbing Rapidly

7

Atualização 4.215:
Depois de olhar para o uso do espaço dentro do hdfs, vejo que o .loglogs está usando muito espaço:

1485820612766  /hbase/.oldlogs

Então, novas perguntas:

  • O que é isso?
  • Como faço para limpá-lo?
  • Como evito que ela cresça novamente
  • O que o levou a começar a crescer em primeiro lugar?
  • Também .arquivo também é grande, o que é isso, meus instantâneos?

Também como colecionador de objetos de casa, não monitorará o uso do espaço em disco de vários diretórios hdfs ....

Também parece que o erro a seguir começou a preencher os registros repetidamente nessa época, não tendo certeza do que eles significam exatamente:

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 

Minha jornada:

No meu cluster HBASE que armazena dados openTSBD, meu espaço em disco começou a subir rapidamente (mesmo que pelo que eu possa dizer que nossa taxa de inserção tenha sido consistente):

OsdiscosqueestãoaumentandosãoosdiscosdearmazenamentoHDFS.Osdiretóriossãoaproximadamenteuniformementedimensionados.

MinhaconfiguraçãoéumclusterHBASE(feitocomcloudera)quepossui3máquinascomumfatordereplicaçãohdfsde3.Hátambémoutroclustercomumaúnicamáquinaparaaqualoclusterprincipalfazareplicação.Aréplicanãomostraessamesmamudançanocrescimento:

Estou tirando instantâneos no mestre, mas list_snapshots do shell hbase não mostra nenhum retorno de mais de um dia, então acho que eles estão sendo escolhidos como deveriam. Minha experiência com o hbase não é ótima, alguma sugestão sobre o que mais procurar?

Fazendo progresso ... :

[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
    
por Kyle Brandt 04.12.2014 / 23:41

2 respostas

2

Acho que minha replicação foi ruim. Parece que o .loglogs é onde os Write-Ahead-Logs (WALS) vão de acordo com este artigo do safari . Eles devem ser limpos, mas não foram por algum motivo.

Eu usei o seguinte para limpá-lo:

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

Desde que eu notei isso enquanto trabalhava na construção de um cluster substituto como o destino da replicação, parei a replicação por enquanto, e não parece que o diretório esteja crescendo mais sem limites. Isso é algo que vou monitorar daqui para frente. Em particular, porque parece que isso pode ser um bug de acordo com a questão do hbase 3489 .

    
por 05.12.2014 / 02:56
1

O HBase é seguro contra falhas e .logs é o local dos WALs (hlogs) necessários para a recuperação de falhas. Depois que a memória dos servidores de regiões é liberada para hfiles, os WALs não são mais necessários para a recuperação de falhas e são movidos para .oldlogs. Os logs antigos geralmente são usados para replicação de cluster para cluster. .oldlogs têm um período de retenção configurável, por exemplo, 3 dias. Neste caso, se algo quebrou sua replicação, então você tem 3 dias para corrigir a replicação sem a necessidade de nova propagação. Espero que isso ajude a investigar o que aconteceu em 24 de novembro, causando um crescimento no tamanho de .loglogs e quando esperar a exclusão automática de hlogs em .oldlogs

    
por 06.12.2014 / 09:58