今天安装完单节点的hadoop,执行如下脚本,启动hadoop集群,出现如下报错:
sh start-all.sh
处理过程
1、开始网上搜索各种资料,找到有个博主提示,直接执行即可。
解决方案
1、换其他的执行方式,都可以启动脚本。
./start-all.sh
bash start-all.sh
原因
1、在其他地方找到了一个解释:/bin/sh是/bin/bash的软连接,使用sh调用执行脚本相当于打开了bash的POSIX标准模式,也就是说 /bin/sh 相当于 /bin/bash --posix
2、验证一下,确实如此。
3、使用bash的POSIX标准模式再去执行上面提到的脚本,确实也出现了报错。
4、简单地讲,posix标准模式,是为了使脚本更好地兼容各平台而提供的一套标准。故语法的规范性更高,上述执行hadoop的相关脚本出现了报错。所以,如果是部署在liunx上的脚本,可以直接使用bash执行,语法要求相对较低。