问题描述:
在启动spark-shell进行交互式编程,使用命令spark-shell,出现以下报错
因为命令太简洁,我可以确定命令没有问题。
问题解决过程:
省流:
集群规模小,导致无法退出safemode,即使暂时/永久关闭也不行。
所以直接备份数据文件到本地(因为没多少),然后删除HDFS的数据和日志,并重新格式化
然后创建spark提示的日志存放目录(这是在安装时设置的,现在重新手动创建)
1、查看错误:
阅读文章:
因为要钱,所以只是发现一个思路,决定试一下,手动创建错误提示中的目录。
(这个应该是spark安装时就设置的目录,我猜测:hdfs不知道为什么进去安全模式,目录也丢失,导致无法spark初始化)
2、尝试:在NameNode的网页管理界面上手动创建目录(可跳过)
翻译一下,namenode真的进入了安全模式
3、尝试:在NameNode的shell环境手动创建目录(可跳过)
很明显失败
4、尝试:暂时关闭安全模式(可跳过)
失败了,我不李姐
hdfs dfsadmin -safemode leave
5、尝试:永久关闭安全模式(可跳过)
关闭集群,编辑hdfs-site.xml,添加以下内容,同步到集群中,重启集群
又失败了...............
6、关闭hadoop,删除日志和数据文件,格式化hdfs。再创建目录:
所有集群的机子上,都得删除data和log,防止它自动复原。
因为这个数据存放和日志在哪里,每个集群都不一样,得看自己的配置(我学习的是尚硅谷的hadoop学习视频,请自己参考)
创建成功
可以进入spark-shell了
最后:
为什么要删除data和log:
因为数据中有版本号,需要删除所有的数据和日志。
为什么安全模式无法关闭:
集群可能是因为比较小,然后有数据缺失,导致了某个逻辑误区,没办法关闭了safemode,无论是用命令还是更改配置,都是无效。至于其中的原理暂不清楚,我没找到关键信息。
为什么之前能用,突然就失去了spark日志存放目录:
我不知道。
我曾经因为没有关闭spark,而直接关闭虚拟机,导致centos连ping都没办法。然后只能重新克隆一份相似的虚拟机,ip和设置,集群才重新能用。
所以我上次特别注意了,先关闭spark,后再关闭hadoop,最后关闭虚拟机,所以我不李姐,我作业还没写完,大写的惨
各位有好的解决方法可以私聊告诉我,或者自己写篇文章发出来,私聊或者评论。
(我不想再经历这份痛苦了,要是是在公司环境,上面有什么重要文件,那就真成被告了。)