Apache Spark在Ubuntu 14启动异常及配置相关问题问询
Apache Spark 启动异常与配置疑问解答
场景1:Spark启动失败且要求输入root密码的问题
1)该异常是什么情况?
简单来说,你的Spark集群启动流程卡壳了——Master节点可能能正常启动,但Worker节点压根没法注册到Master那边,同时启动过程还触发了root密码的验证请求,最后整个集群就没法正常跑起来。
2)出现此异常的原因?
最核心的问题是Worker节点的配置缺失:Spark默认依赖$SPARK_HOME/conf/slaves(部分新版本可能叫workers)配置文件来指定哪些节点要作为Worker运行。如果这个文件是空的,或者没有填写有效的节点地址,Spark启动脚本尝试启动Worker时就找不到目标节点,直接导致启动失败。
3)为何会要求输入root用户密码?
这基本和SSH验证以及文件权限脱不了干系:
- Spark启动集群时,会通过SSH连接到
slaves文件里的节点去启动Worker进程。如果当前执行启动命令的用户没配置到目标节点(哪怕是本地的localhost)的免密SSH登录,系统就会弹出密码输入提示; - 要是你之前用root用户操作过Spark的安装文件,导致部分目录或文件的权限属于root,那普通用户启动Spark时,访问这些受root权限保护的资源就会触发验证,要求输入root密码。
场景2:添加localhost后启动正常,但仍有疑问的解答
此前缺失了什么配置导致启动异常?
你缺失的是Worker节点的目标配置:$SPARK_HOME/conf/slaves文件的作用就是定义集群里所有Worker节点的列表,当这个文件空着的时候,Spark启动脚本完全不知道要在哪些节点上启动Worker进程,自然没法完成整个集群的启动流程。
为何添加localhost后即可正常启动?
把localhost加到slaves文件里后,Spark明确了要在本地机器上启动Worker进程,启动脚本就能通过SSH连接到本地(或者直接在本地拉起进程),Worker节点成功启动后就能注册到Master节点,这样集群的核心组件(Master+Worker)就都能正常跑起来了。
启动时仍会要求输入root密码的排查方向
要搞定这个密码提示问题,你可以从这几个地方查:
- 检查SSH免密登录配置:先试试执行
ssh localhost,如果不需要输入密码就说明免密配置正常;如果需要,就生成SSH密钥并把公钥添加到~/.ssh/authorized_keys文件里; - 检查Spark文件权限:看看Spark安装目录下的文件和文件夹权限,确保当前启动Spark的用户有读写执行权限。如果有root权限的文件,执行
sudo chown -R 你的用户名:你的用户组 /path/to/your/spark来修改权限; - 检查启动命令是否用了sudo:要是你用
sudo启动Spark,系统会以root身份执行,这时候如果root用户没配置免密SSH,就会要求输入root密码。建议用普通用户启动Spark,避免不必要的权限问题。
内容的提问来源于stack exchange,提问作者Squeez
相关产品推荐
相关产品推荐

