背景
1)试试本地模式的spark streaming
2)试试yarn模式的spark streaming
1、本地模式的spark streaming
代码如下:
package com.hxh import org.apache.spark.SparkConf import org.apache.spark.streaming.{Seconds, StreamingContext} object newtest { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf() sparkConf.setMaster("local[2]").setAppName("NetworkWordCount") val ssc = new StreamingContext(sparkConf, Seconds(4)) val lines = ssc.socketTextStream("127.0.0.1", 9999) val results = lines.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _) results.print() ssc.start() ssc.awaitTermination() } }
2、yarn模式的spark streaming
代码如下:
package com.hxh import org.apache.spark.SparkConf import org.apache.spark.streaming.{Seconds, StreamingContext} object newtest { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf() sparkConf.setMaster("yarn").setAppName("NetworkWordCount") val ssc = new StreamingContext(sparkConf, Seconds(4)) val lines = ssc.socketTextStream("rsync.hxh.test1", 9999) val results = lines.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _) results.print() ssc.start() ssc.awaitTermination() } }
3、对比
本地模式的streaming和yarn模式的streaming的区别是什么呢?
1)local模式的spark streaming启动后是streaming程序是运行在本地,即使你使用的--deploy-mode cluster参数,程序不会比提交到yarn
2)yarn模式的spark streaming启动后streaming程序是运行集群中的任意一台机器,这个必须在Scala代码里面指定sparkConf.setMaster("yarn"),才是on yarn的模式
4、sparkConf.setMaster介绍
为了初始化spark streaming程序,一个StreamingContext对象必须被创建,它是Spark Streaming所有流操作的主要入口。一个StreamingContext对象可以用SparkConf对象创建。可以使用SparkConf对象创建JavaStreamingContext对象
SparkConf conf = new SparkConf().setAppName(appName).setMaster(master); JavaStreamingContext jsc = new JavaStreamingContext(conf, Durations.seconds(seconds));
1)appName:是应用程序在集群UI上显示的名称
2)master:是spark,mesos,yarn或者是本地运行的特殊字符串"local[*]"
实际上单在集群上运行时,不想在程序中硬编码master,而是希望使用spark-submit启动应用程序时,得到master的值。但是对于本地测试和单元测试,可以传递"local[*]"来运行spark streaming程序
原文地址:https://www.cnblogs.com/gentlemanhai/p/12628509.html