spark streaming不同模式配置

Posted gentlemanhai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark streaming不同模式配置相关的知识,希望对你有一定的参考价值。

背景

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()
  }
}

  

2yarn模式的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、对比

本地模式的streamingyarn模式的streaming的区别是什么呢?

1local模式的spark streaming启动后是streaming程序是运行在本地,即使你使用的--deploy-mode cluster参数,程序不会比提交到yarn

2yarn模式的spark streaming启动后streaming程序是运行集群中的任意一台机器,这个必须在Scala代码里面指定sparkConf.setMaster("yarn"),才是on yarn的模式

 

4sparkConf.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));

 

1appName:是应用程序在集群UI上显示的名称

2master:是sparkmesosyarn或者是本地运行的特殊字符串"local[*]"

实际上单在集群上运行时,不想在程序中硬编码master,而是希望使用spark-submit启动应用程序时,得到master的值。但是对于本地测试和单元测试,可以传递"local[*]"来运行spark streaming程序

 

以上是关于spark streaming不同模式配置的主要内容,如果未能解决你的问题,请参考以下文章

Spark Streaming:使用带有列修剪的 MicroBatchReader 的模式不匹配

spark配置-----Spark Streaming

面试题:Flink反压机制及与Spark Streaming的区别

面试题:Flink反压机制及与Spark Streaming的区别

面试题:Flink反压机制及与Spark Streaming的区别

大数据篇:flume+kafka+spark stream+hbase做日志收集