spark集群搭建完成后,笔者在测试的过程中出现了:Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources 这样的错误 查阅了很多资料都没有得到解决。
首先分析该错误的原因 这确实是集群中的Worker节点没有工作,注意是没有工作 并不是没有启动,也许在Worker节点上通过JPS命令可以看到Worker 的进程已经启动 但是这并不能说明Worker 就可以工作了,就好像去在图书馆也不一定学习一个道理
通过分析workder 节点的启动日志 可以发现 通过使用 ./sbin/start-slaves.sh 命令 省略了master--ip 这个参数 系统默认的会将一单机模式启动 换句话说worker节点根本没有和master节点通信 也就是根本没有在集群中 。master节点分发任务的时候迟迟得不到回应 就有了上述错误
解决方法 不要使用./sbin/start-slaves.sh去启动所有从节点 使用 ./sbin/start-slaves.sh spark:master-ip:7077 (添加个参数即可)
这样就可以解决了
笔者的运行结果
再次查看slave节点的日志 信息发现 有了master节点的IP 实现了slave和master的通信 程序也就运行成功了
后记:学习的过程中可以参考网络上的资料 切不可完全依赖网上的信息,具体问题具体分析。