【问题标题】:Submit Spark Job to Google Cloud Platform将 Spark 作业提交到 Google Cloud Platform
【发布时间】:2015-02-21 05:51:44
【问题描述】:

是否每个人都尝试使用https://console.developers.google.com/project/_/mc/template/hadoop 部署 Spark?

Spark 为我正确安装,我可以通过 SSH 连接到 hadoop worker 或 master,spark 安装在 /home/hadoop/spark-install/

我可以使用 spark python shell 读取云存储中的文件

lines = sc.textFile("hello.txt")

lines.count()

line.first()

但是当我运行时,我无法成功地将 python 示例提交到 spark 集群

bin/spark-submit --master spark://hadoop-m-XXX:7077 examples/src/main/python/pi.py 10

我总是有

Traceback(最近一次调用最后一次):文件 "/Users/yuanwang/programming/spark-1.1.0-bin-hadoop2.4/examples/src/main/python/pi.py", 第 38 行,在 count = sc.parallelize(xrange(1, n+1), slices).map(f).reduce(add) 文件 "/Users/yuanwang/programming/spark-1.1.0-bin-hadoop2.4/python/pyspark/rdd.py", 第 759 行,在减少 vals = self.mapPartitions(func).collect() 文件 "/Users/yuanwang/programming/spark-1.1.0-bin-hadoop2.4/python/pyspark/rdd.py", 第 723 行,收集中 bytesInJava = self._jrdd.collect().iterator() 文件“/Users/yuanwang/programming/spark-1.1.0-bin-hadoop2.4/python/lib/py4j-0.8.2.1-src.zip/py4j/ java_gateway.py", 第 538 行,在 call 文件中 “/Users/yuanwang/programming/spark-1.1.0-bin-hadoop2.4/python/lib/py4j-0.8.2.1-src.zip/py4j/protocol.py”,第 300 行,在 get_return_value py4j.protocol 中。 Py4JJavaError:一个错误 调用 o26.collect 时发生。 : org.apache.spark.SparkException: 由于阶段失败而中止作业:所有主控都没有响应!给予 向上。在 org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1185) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1174) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1173) 在 scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59) 在 scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47) 在 org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1173) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:688) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:688) 在 scala.Option.foreach(Option.scala:236) 在 org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:688) 在 org.apache.spark.scheduler.DAGSchedulerEventProcessActor$$anonfun$receive$2.applyOrElse(DAGScheduler.scala:1391) 在 akka.actor.ActorCell.receiveMessage(ActorCell.scala:498) 在 akka.actor.ActorCell.invoke(ActorCell.scala:456) 在 akka.dispatch.Mailbox.processMailbox(Mailbox.scala:237) 在 akka.dispatch.Mailbox.run(Mailbox.scala:219) 在 akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386) 在 scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) 在 scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) 在 scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) 在 scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

我很确定我没有正确连接到 Spark 集群,有人在云引擎上成功连接过 Spark 集群吗?

【问题讨论】:

  • 你能在 GCE 集群上的 Spark shell 上运行简单的程序吗?
  • 我可以从谷歌云存储加载,并计算行数。
  • Spark 是否在 YARN 上运行?
  • 我正在使用console.developers.google.com/project/_/mc/template/hadoop,它在hadoop集群上运行
  • 不确定这样启动的集群是如何配置的,所以我无法判断这是否是配置问题。作为替代方案,你可以试试这个Spark-GCE launch script,看看你是否得到了一个可行的集群。

标签: apache-spark google-compute-engine


【解决方案1】:

您可以从主服务器运行作业:

ssh 到主节点:

gcloud compute ssh --zone <zone> hadoop-m-<hash>

然后:

$ cd /home/hadoop/spark-install
$ spark-submit examples/src/main/python/pi.py 10

您应该在输出中的某处看到:类似:

Pi 大约是 3.140100

您似乎正在尝试远程提交作业。我不确定你是如何让它工作的,但你可以从 master 提交作业。

顺便说一句,作为例行操作,您可以通过以下方式验证您的 spark 安装:

cd /usr/local/share/google/bdutil-0.35.2/extensions/spark
sudo chmod 755 spark-validate-setup.sh
./spark-validate-setup.sh

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 2019-04-05
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-18
相关资源
最近更新 更多