问题由来
今天在配置spark独立部署模式的时候,将配置文件修改好分发到三个节点后,在Master节点上的spark的sbin路径下运行 start-all.sh 后,跳出
WARNING: Attempting to start all Apache Hadoop daemons as atguigu in 10 seconds.
WARNING: This is not a recommended production deployment configuration.
WARNING: Use CTRL-C to abort.
这段信息后,发现不对劲,这不明摆写着Apache Hadoop吗,这是要运行hadoop的信息。
然后启动之后查看了一下三台机器的进程:
=============== hadoop102 ===============
6965 NameNode
8055 NodeManager
9675 Jps
7183 DataNode
=============== hadoop103 ===============
2005 DataNode
2251 Jps
2125 NodeManager
=============== hadoop104 ===============
2340 Jps
2214 NodeManager
2007 DataNode
2125 SecondaryNameNode
果不其然,就是启动hadoop了,第一次遇到这样的问题非常匪夷所思,十分费解,启动一个spark为啥会把hadoop给启动了。
解决方案
在确认配置文件无误后,询问GPT也不能给出很准确的回复。上网搜索类似问题后,发现有跟我类似的情况,只不过他是关闭hadoop的时候把spark关闭了,不能说完全一样,但是问题十分相似。后面发现他提到了环境变量的问题,我才逐渐发现事情的真相,环境变量在提供便利的同时没想到竟然引发了如此费解的问题,输入
echo $PATH
查看环境变量,果不其然:
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8.0_371/bin:/opt/module/hadoop-3.2.3/bin:/opt/module/hadoop-3.2.3/sbin:/opt/module/hive/bin:/root/myenv:/home/atguigu/.local/bin:/home/atguigu/bin
注意到/opt/module/hadoop-3.2.3/sbin这一个路径,想都不用想,里面一定也有一个start-all.sh文件,我们进入目录查看一下:
很容易找到了“罪魁祸首” 原来是输入start-all.sh后,默认先在环境变量中的路径下找此文件,而且找到了,于是直接就启动了hadoop而不是spark。解决方法当然也十分简单,直接在spark路径下输入 sbin/start-all.sh即可。这样就不会在环境变量中找那个文件了。
总结
简单来收就是优先在环境变量中搜索你输入的文件,如果找到了就进入那个文件了,而不是继续搜索。这是第一次遇到这样的问题,也对环境变量有了更深刻的理解,所以将这个问题记录一下,如果能帮到有需要的人当然是最好了,不过现在发现真的是很...有点蠢的一个问题,希望以后不要再被类似的问题所困扰。