Назад | Перейти на главную страницу

java.lang.NullPointerException при чтении в HDFS

У меня был 10-узловой кластер HBase в течение последних 4 месяцев. Кластер был настроен на виртуальных машинах в корпоративной среде, которую я не контролирую, но все работает отлично ... до сегодняшнего дня.

Сегодня все части системы вышли из строя. Я перезапустил систему, и все вернулось на некоторое время, но затем снова упало (особенно HBase ... но я думаю, что это было из-за следующей проблемы).

В журналах HDFS есть ошибка:

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)

Когда я прыгаю на узел имени и бегу:

sudo -u hdfs hdfs dfs -cat /tmp/.cloudera_health_monitoring_canary_files/.canary_file_2014_04_15-17_39_25

Я возвращаю одну строчку, в которой говорится: cat: java.lang.NullPointerException.

Я также дважды проверил, что диски не заполнены (они не заполнены) и что у меня есть подключение (все выглядит нормально - никто не трогал эту систему, так как я был единственным, у кого был доступ).

Я полностью озадачен тем, что здесь происходит. При необходимости я могу предоставить более подробную информацию, но я даже не знаю, что делать дальше.

Обновить

По запросу Марка в комментариях вывод:

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]