我创建了spark streaming应用程序,当部署模式是客户端时,它运行良好。
在我的虚拟机上,我有主人,只有一名工人。
当我尝试将模式更改为“群集”时,它会失败。在Web UI中,我看到驱动程序正在运行,但应用程序失败。
EDITED
在日志中,我看到以下内容:
16/03/23 09:06:25 INFO Master:驱动程序提交了org.apache.spark.deploy.worker.DriverWrapper
16/03/23 09:06:25 INFO Master:在worker worker-20160323085541-10.0.2.15-36648上启动驱动程序驱动程序-20160323090625-0001
16/03/23 09:06:32 INFO Master:metering.dev.enerbyte.com:37168已取消关联,将其删除。
16/03/23 09:06:32 INFO Master:10.0.2.15:59942被解除关联,删除它。
16/03/23 09:06:32 INFO Master:metering.dev.enerbyte.com:37166已取消关联,删除它。
16/03/23 09:06:46 INFO Master:注册app wibeee-pipeline
16/03/23 09:06:46 INFO Master:已注册的app wibeee-pipeline与ID app-20160323090646-0007
16/03/23 09:06:46 INFO Master:在worker worker-20160323085541-10.0.2.15-36648上启动执行程序app-20160323090646-0007 / 0
16/03/23 09:06:50 INFO Master:收到应用程序app-20160323090646-0007的取消注册请求
16/03/23 09:06:50 INFO Master:删除app app-20160323090646-0007
16/03/23 09:06:50 WARN Master:获得未知执行者app-20160323090646-0007 / 0的状态更新
16/03/23 09:06:50 INFO Master:metering.dev.enerbyte.com:37172已取消关联,将其删除。
16/03/23 09:06:50 INFO Master:10.0.2.15:45079被取消关联,将其删除。
16/03/23 09:06:51 INFO Master:删除驱动程序:driver-20160323090625-0001
所以会发生什么是master在worker上启动驱动程序,应用程序被注册,然后尝试在同一个worker上启动执行,但是失败了(虽然我只有一个worker!)
修改 问题可能与我使用检查点的事实有关,因为我的代码中有“updateStateByKey”转换。它设置为“/ tmp”,但我总是收到警告“当在集群模式下运行时,”/ tmp“需要更改。我应该如何设置它?
这可能是我遇到问题的原因吗?
谢谢
答案 0 :(得分:0)
根据您提供的日志,它可能不是因为属性文件而是检查此。
spark-submit
仅在群集模式下运行时将jar文件复制到驱动程序,因此如果您的应用程序尝试读取运行spark-submit的系统中保存的属性文件,则驱动程序在运行时无法找到它集群模式。
从属性文件读取工作在客户端模式下,因为驱动程序在执行spark-submit的同一台机器上启动。
您可以将属性复制到所有节点中的同一目录,或者将属性文件保存在cassandra文件系统中并从那里读取。