【发布时间】:2017-08-05 01:52:24
【问题描述】:
我已经使用 Spark 设置了 EC2 集群。一切正常,所有主/从都启动并运行。
我正在尝试提交示例作业 (SparkPi)。当我 ssh 到集群并从那里提交时 - 一切正常。但是,当在远程主机(我的笔记本电脑)上创建驱动程序时,它不起作用。我已经为--deploy-mode 尝试了这两种模式:
--deploy-mode=client:
从我的笔记本电脑:
./bin/spark-submit --master spark://ec2-52-10-82-218.us-west-2.compute.amazonaws.com:7077 --class SparkPi ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar
导致以下无限期警告/错误:
WARN TaskSchedulerImpl:初始作业没有接受任何资源; 检查您的集群 UI 以确保工作人员已注册并拥有 足够的内存 15/02/22 18:30:45
错误 SparkDeploySchedulerBackend:要求删除不存在的执行程序 0 15/02/22 18:30:45
错误 SparkDeploySchedulerBackend:要求删除不存在的执行程序 1
...和失败的驱动程序 - 在 Spark Web UI 中出现“状态=错误”的“已完成驱动程序”。
我试图通过内核和内存的限制来提交脚本,但它没有帮助...
--deploy-mode=cluster:
从我的笔记本电脑:
./bin/spark-submit --master spark://ec2-52-10-82-218.us-west-2.compute.amazonaws.com:7077 --deploy-mode cluster --class SparkPi ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar
结果是:
....驱动成功提交为driver-20150223023734-0007 ... 在轮询主机之前等待驱动程序状态...轮询主机 driver-20150223023734-0007 的状态为 ERROR Exception 从集群是:java.io.FileNotFoundException:文件 文件:/home/oleg/spark/spark12/ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar 不存在。 java.io.FileNotFoundException:文件 文件:/home/oleg/spark/spark12/ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar 不存在。在 org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:397) 在 org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:251) 在 org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:329) 在 org.apache.spark.deploy.worker.DriverRunner.org$apache$spark$deploy$worker$DriverRunner$$downloadUserJar(DriverRunner.scala:150) 在 org.apache.spark.deploy.worker.DriverRunner$$anon$1.run(DriverRunner.scala:75)
因此,如果您能提供任何有关问题所在的指示以及如何从远程客户端部署作业的一些指导,我将不胜感激。谢谢。
更新: 因此,对于集群模式下的第二个问题,该文件必须对每个集群节点都是全局可见的,因此它必须位于可访问的位置。这解决了 IOException,但会导致与客户端模式相同的问题。
【问题讨论】:
-
我认为驱动程序为工人提供代码/东西。您的员工可以接触到您的 lappie 吗?通常,您需要驱动程序尽可能靠近您的集群。
-
正如@AlisterLee 所说,您应该检查您的计算机和ec2 节点之间的设置(防火墙、端口设置等)。如果失败,那么您可能还想尝试将其发送到邮件列表(然后报告解决方案:))