我有一个运行在AWS EC2机器上的HortonWorks集群,我想在上面运行一个使用spark streaming的spark作业,它将吞下关于权力游戏的推文。在尝试在我的集群上运行它之前,我确实在本地运行了它。代码运行正常,如下所示:
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:正在连接到主spark://ip地址:7077... 17/07/24 11:53:44 WARN AppClient $ClientEndpoint:无法连接到主ip-adress:7077 java. io。IOException:无法连接到spark://IP地址:7077在ORG。ApacheSpark网络。委托人TransportClientFactory。createClient(TransportClientFactory.java:216)at org.ApacheSpark网络。委托人TransportClientFactory。createClient(TransportClientFactory.java:167)at org.ApacheSparkrpc。netty。NettyRpcEnv. createClient(NettyRpcEnv. scala:200)at org.apache.spark.rpc.netty.Outbox$anon$1.call(Outbox. scala:187)at org.apache.spark.rpc.netty.Outbox$anon$1.call(Outbox. scala:183)在www.example.com(FutureTask.java:266)在java.效用并发ThreadPoolExecutor。runWorker(ThreadPoolExecutor.java:1142)at java.效用并发ThreadPoolExecutor $www.example.com(ThreadPoolExecutor.java:617)at www.example.comjava.util.concurrent.FutureTask.run
1条答案
按热度按时间wydwbb8l1#
要使用
yarn
运行spark应用程序,您应该使用spark-submit
和--master yarn
。不需要在scala源代码中使用setMaster
。