Namenode 无法启动

起因

Hadoop搭建成功之后,运行start-all.sh,然后再输入jps,发现namenode消失了,而且master:50070无法访问,遂Google。

解决方案

在知乎上找打了解决方法。

点击这个链接

原因是对namenode进行了多次格式化。

解决过程

  1. 首先把 core-site.xml 中指定的路径hadoop.tmp.dir的所有文件删除

  2. 然后重新格式化namenode

1
   hadoop namenode -format
  1. 然后再运行start-all.sh,namenode就启动了,master:50070也可以正常访问。

导入了外部jar但是某些命令无法找到相应的包

起因

写mapreduce 单词计数的时候,很多个命令提示错误。

解决

Google了很多,然后搜到了Hadoop 旧的API和新的API不兼容,也就是mapred和mapreduce的区别,所以把import命令当中的mapred的命令删除之后问题就解决了。

如果mapred和mapreduce同时存在的话,的确是会报错的。

提交spark任务的Status一直处于Accepted的状态

Imgur

就是这样一个状态。

折腾了一个晚上,查看namenode的log发现是有一个路径不可写导致程序认为磁盘满了,给路径加上可写的权限,然后任务就执行成功了,但是计算出结果之后就崩溃了(大雾。以后得多看log,如果出错的话。

还有一个坑就是执行任务之前得把namenode的安全模式关闭,要不然还是会提示出错:namenode处于安全模式。

解决方案

如何解决提交到集群当中任务无法连接MySql的问题

在submit命令当中用 –jar 命令指定mysql-connector的绝对路径。

Submit到集群却还是在本地模式运行?

在Scala程序的

1
val conf = new SparkConf().setAppName("test1").setMaster("local")

将$setMaster(“local”)​$ 去掉即可。

如何能够使用hdfs中的文件

集群模式设置为$yarn-cluster​$即可。