今天重启了下Hadoop集群,使用Eclipse调试hdfs api的时候报错:java
[WARNING] java.lang.NullPointerException at org.conan.kafka.HdfsUtil.batchWrite(HdfsUtil.java:50) at org.conan.kafka.SingleTopicConsumer.run(SingleTopicConsumer.java:144) at java.lang.Thread.run(Thread.java:745) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
查找HdfsUtil.java 第50行node
os.write(buff, 0, buff.length);
发现是写的时候报错,而后折腾了一下子,也没找到缘由,后来想会不会是权限问题(电脑不是管理员身份,hadoop集群是以root身份运行),可是以前已经把hdfs文件夹的权限改成了777。在试试,hdfs dfs -chmod -R 777 /input,而后再次调试,OK。api
那么问题来了,Hadoop集群难道在每次重启后(没有进行namenode format)都要修改文件(夹)的权限?oop
依据实践来看,应该是的。spa