启动命令为:sh start-slave.sh master-url:7077
输出如下提示信息:
start-slave.sh: 42: start-slave.sh: [[: not found
start-slave.sh: 42: start-slave.sh: [[: not foundstart-slave.sh: 42: start-slave.sh: [[: not found
start-slave.sh: 52: /home/user/spark/spark-2.2.1-bin-hadoop2.7/bin/load-spark-env.sh: [[: not found
start-slave.sh: 68: start-slave.sh: function: not found
start-slave.sh: 70: shift: can't shift that many
问题分析:
1.该脚本中42行处,有变量找不到
2.在该脚本中加载的load-spark-env.sh脚本中有变量找不到
3.function找不到
4.shift逸出了
1.查看官网文档,与官方手动启动worker命令一致(这大概是最死去活来的感觉!为什么每次遇到问题的都是我!),继续dig
2.继续阅读文档,发现一些设置参数,看了半天,基本上都有默认值,没有看到必须的参数,而且官方启动命令也没有设置参数,暂时跳过
3.常规debug最好的办法就是看源码,打开脚本边学边读,基本上都是设置默认值,也没什么问题,就是到68行,也就是function缺失那里,开始以为是缺少(),(说明:shell脚本的定义可以没有()),但是就是有问题,然后百度了一下,是由于不同linux使用的shell的编译器不同,会有一些差异。。。。坑死了。。。可以通过命令 ls -l /bin/*sh 查看当前shell脚本使用的编译器版本,输出如下:
-rwxr-xr-x 1 root root 1037528 May 16 2017 /bin/bash
-rwxr-xr-x 1 root root 154072 Feb 18 2016 /bin/dash
lrwxrwxrwx 1 root root 4 Dec 17 09:56 /bin/rbash -> bash
lrwxrwxrwx 1 root root 4 Dec 17 09:56 /bin/sh -> dash
lrwxrwxrwx 1 root root 7 Aug 19 2015 /bin/static-sh -> busybox
大意就是说,使用 sh命令执行脚本或 ./*.sh 默认使用的dash,所以把启动命令从sh 改为bash start-slave.sh master-url:7077
两天的问题,就这么解决了,顿时感觉自己背景知识的缺失!励志想好linux!