一、问题背景
今天在学习hadopp框架时,编写一个hadoop启动进程的sheel脚本,由于不想使用Linux自带的VM编辑器,就在Windows下编辑脚本的内容,然后在Linux下运行此脚本,接着就报了几个错误
报错原文:
Could not find or load main class namenode Could not find or load main class datanode
大致意思是说,他找不到我的那几个节点。
一开始,我以为是我的hadoop配置文件写的有问题,但经过一番检查,和百度之后,都没有解决我的问题,运行脚本还是会出错。这我就想到应该不是我的配置有问题,而是这个脚本有问题。
为了验证我的猜想,我将脚本中的命令,在Linux系统下直接运行,结果hadoop进程全部开启,没有一个失败,这就证明我的猜想是正确的。
二、问题原因
既然,hadoop的配置文件没有问题,那就是该 .sh 脚本有问题,再进过一番努力,得知,在Windows下编辑的文件,他的每一行是以 " " 结尾的,但在Linux系统下则是 " ",这就是问题所在。
三、解决问题
使用指令 "sed -i 's/ $//' xxxxxxx.sh",将 .sh 文件中的 " " 全部替换成空白符,即可解决问题
最后实验检测,运行脚本文件,hadoop进程全开,没有报错,验证通过。