关于在集群上运行spark作业的说明(AWS)

时间:2017-07-24 09:55:25

标签: scala amazon-web-services apache-spark amazon-ec2 hortonworks-data-platform

我有一个在AWS EC2机器上运行的HortonWorks集群,我希望使用火花流来运行火花流,这将吞下有关权力游戏的推文。 在尝试在我的集群上运行它之前,我确实在本地运行它。 代码正在运行,这里是:

import org.apache.spark.streaming.{StreamingContext, Seconds}
import org.apache.spark.streaming.twitter._
import org.apache.spark.{SparkConf, SparkContext}

object Twitter_Stream extends App {

  val consumerKey = "hidden"
  val consumerSecret = "hidden"
  val accessToken = "hidden"
  val accessTokenSecret = "hidden"

  val sparkConf = new SparkConf().setAppName("GotTweets").setMaster("local[2]")

  val ssc = new StreamingContext(sparkConf, Seconds(1))

  val myStream = TwitterUtils.createStream(ssc, None, Array("#GoT","#WinterIsHere","#GameOfThrones"))

  val rddTweets = myStream.foreachRDD(rdd =>
  {
    rdd.take(10).foreach(println)
  })

  ssc.start()
  ssc.awaitTermination()
}

我的问题更准确地说是这个特定的代码行:

val sparkConf = new SparkConf().setAppName("GotTweets").setMaster("local[2]")

我将“local [2]”替换为“spark:// ip-address-EC2:7077”,它对应于我的一台ec2机器,但我的连接失败了。 我确信这台机器上的7077端口是打开的。

当我在我的一台EC2机器上使用此配置(setMaster(“local [2]”))运行此代码时,我的spark会使用群集中的所有机器还是仅在一台机器上运行?

这里有例外:

  

17/07/24 11:53:42 INFO AppClient $ ClientEndpoint:连接到master   spark:// ip-adress:7077 ... 17/07/24 11:53:44警告   AppClient $ ClientEndpoint:无法连接到主ip-adress:7077   java.io.IOException:无法连接到spark:// ip-adress:7077 at   org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:216)     在   org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:167)     在   org.apache.spark.rpc.netty.NettyRpcEnv.createClient(NettyRpcEnv.scala:200)     在org.apache.spark.rpc.netty.Outbox $$ anon $ 1.call(Outbox.scala:187)     在org.apache.spark.rpc.netty.Outbox $$ anon $ 1.call(Outbox.scala:183)     在java.util.concurrent.FutureTask.run(FutureTask.java:266)at   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617)     在java.lang.Thread.run(Thread.java:748)

1 个答案:

答案 0 :(得分:1)

要使用yarn运行spark应用程序,您应该使用spark-submit --master yarn。无需在scala源代码中使用setMaster