今天遇到一个对于我来说很难的问题,折磨我一上午。
之前我已经搭建好hadoop集群,namenode和datanode可以正常启动。然后我把Java项目做成jar包,导入到hadoop集群中,并配置core-site.xml文件,代码如下:
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
<property>
<name>net.topology.node.switch.mapping.impl</name>
<value>com.hdfs.AutoRack</value>
</property>
</configuration>
然后把集群关闭,再将集群按原来方式开启,之后当我启动集群的时候,发现datanode有进程,而namenode却没有进程,这我就很纳闷了。之后,我查了一下日志文件,发现,原来我导入的这个jar包,用的是jdk1.8,而我Linux使用的是jdk1.7,这我才明白,原来是版本问题导致的。真是醉了~!
萌新的我在变成大牛的路上越走越远~!
解决方法:
将Linux和windows的jdk版本变为一致的,重新修改core-site.xml配置文件。再将tmp文件删除,格式化,之后重启集群,就能正常启动了。
附上eclipse下载地址:https://www.eclipse.org/
附上jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html