今天重启了下Hadoop集群,使用Eclipse调试hdfs api的时候报错:
[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行
os.write(buff, 0, buff.length);
发现是写的时候报错,然后折腾了一会儿,也没找到原因,后来想会不会是权限问题(电脑不是管理员身份,hadoop集群是以root身份运行),但是之前已经把hdfs文件夹的权限改为了777。在试试,hdfs dfs -chmod -R 777 /input,然后再次调试,OK。
那么问题来了,Hadoop集群难道在每次重启后(没有进行namenode format)都要修改文件(夹)的权限?
依据实践来看,应该是的。