hadoop:调用getfsstatistics时发生nullpointerexception

9gm1akwq  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(347)

运行mapreduce作业时,将存储在hdfs上的文件作为输入,遇到以下异常:

15/03/27 17:18:12 INFO mapreduce.Job: Task Id : attempt_1427398929405_0005_m_000005_2, Status : FAILED
Error: java.lang.NullPointerException
    at org.apache.hadoop.mapred.Task.getFsStatistics(Task.java:347)
    at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.<init>(MapTask.java:486)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:735)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:167)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1556)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)

我自己也不太清楚这意味着什么,只是这看起来可能与文件权限有关。我还发现了以下其他stackoverflow post具有相同的异常/跟踪:windows中的nullpointerexception with mr2。
总结一下帖子:这个异常是由于hadoop作为不同于mr作业的用户运行造成的。
我试过以下方法: chmod -正在将hdfs中的所有文件和目录绑定到777(只是为了实验)
使用运行hadoop作业 sudo 但这两种方法都没有取得任何成果。
我正在本地主机上运行所有hadoop进程(“伪分布式模式”)。我开始使用hadoop start-yarn.sh 以及 start-dfs.sh 我的普通本地用户。我正在用同一个用户运行hadoop作业。我还设置了 dfs.datanode.data.dir 以及 dfs.namenode.name.dir 到本地计算机上我有权与本地用户读/写的路径。我已经准备好了 dfs.permissions.enabledfalse .
我是不是误解了这个例外?还有什么我应该试试的吗?谢谢您。

disho6za

disho6za1#

最后,它是我自己的 FileSplit 导致问题的子类。我没有正确地(反)序列化filesplit的 Path ,所以当通过电线发送时,这个字段就变成了 null . hadoop调用 getFsStatistics 在空路径上,导致 NullPointerException .

相关问题