提交文件到集群,报错 hdfs.DFSClient: DataStreamer Exception
如图,正常操作但却报错,后来看到博主这篇文章,分析可能是自己没有设置hadoop运行时保存文件的目录。
首先,我关闭了hadoop:在NameNode的机器上输入命令stop-dfs.sh
然后,再配置数据存放的目录。因为我的hadoop安装到/opt下,因此我的core-site.xml文件存储在/opt/hadoop/etc/hadoop/中。在该路径下vim core-site.xml后,添加配置
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/data/tmp</value> <!-- hadoop.tmp.dir:临时存放路径! -->
</property>
</configuration>
但是此时仍然有同样的错误。
于是分析我之前的操作,可能是我在NameNode上删除了数据文件,并格式化了NameNode,但是却没有删除DataNode上的数据,导致数据不一致。因此,打开另外的DataNode机器,同样把存储了hdfs数据的目录删除:
cd /var/bigdata
rm -r hadoop/
再次格式化NameNode,hdfs namenode -format
然后再开启hdfs start-dfs.sh
,用jps
看下是否都按想要的配置,再次尝试
hdfs dfs -put test10w.log /data
成功了!