Eu tive um cluster HBase de 10 nós funcionando nos últimos 4 meses. O cluster foi configurado em VMs em um ambiente corporativo que eu não controlei, mas tudo funcionou muito bem ... até hoje.
Hoje, todas as partes do sistema estavam inativas. Eu reiniciei o sistema e tudo voltou para um pouco, mas depois iria para baixo novamente (particularmente HBase ... mas acho que foi por causa deste seguinte problema).
Há um erro nos registros do HDFS que diz:
HdfsCanaryCdh4{hdfs://hbase-1.internal:8020} for hdfs://hbase-1.internal:8020: Failed to read /tmp/.cloudera_health_monitoring_canary_files/.canary_file_2014_04_15-17_39_25. Error: org.apache.hadoop.ipc.RemoteException(java.lang.NullPointerException): java.lang.NullPointerException
at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.sortLocatedBlocks(DatanodeManager.java:334)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1343)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getBlockLocations(NameNodeRpcServer.java:413)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getBlockLocations(ClientNamenodeProtocolServerSideTranslatorPB.java:172)
at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java:44938)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:453)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1002)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1752)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1748)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1438)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1746)
Quando eu pulo para o nó de nome e corro:
sudo -u hdfs hdfs dfs -cat /tmp/.cloudera_health_monitoring_canary_files/.canary_file_2014_04_15-17_39_25
Eu recebo de volta uma única linha que diz: cat: java.lang.NullPointerException
.
Também verifiquei que os discos não estavam cheios (não estão) e que tenho conectividade (tudo parece normal - ninguém tocou neste sistema, pois eu era o único com acesso).
Estou completamente perplexo com o que está acontecendo aqui. Eu posso fornecer mais detalhes, se necessário, mas não tenho certeza para onde ir a partir daqui.
Atualizar
Por solicitação de Mark nos comentários, a saída de:
sudo -u hdfs hdfs dfs -lsr /tmp/
é
drwxrwxrwx - hdfs supergroup 0 2014-04-16 09:48 /tmp/.cloudera_health_monitoring_canary_files
-rw-rw-rw- 3 hdfs supergroup 56 2014-04-15 16:59 /tmp/.cloudera_health_monitoring_canary_files/.canary_file_2014_04_15-16_59_24
[continues like this for all the files in the directory]