spark学习笔记——sparkStreaming-概述/特点/构架/DStream入门程序wordcount

Posted 一个人的牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark学习笔记——sparkStreaming-概述/特点/构架/DStream入门程序wordcount相关的知识,希望对你有一定的参考价值。

目录

SparkStreaming

sparkStreaming

DStream

sparkStreaming特点

sparkStreaming构架

背压机制

DStream入门


SparkStreaming

sparkStreaming

Spark Streaming用于流式数据的处理。Spark Streaming支持的数据输入源很多:Kafka、Flume、Twitter、ZeroMQ 和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语:map、reduce、join、window等进行运算。而结果也能保存在:HDFS,数据库等。

DStream

DStream是随时间推移而收到的数据的序列,Spark Streaming使用离散化流作为抽象表示,在内部每个时间区间收到的数据都作为RDD存在,而DStream是由这些RDD所组成的序列,因此得名“离散化”,简单来将DStream就是对RDD在实时数据处理场景的一种封装。

sparkStreaming特点

易用

Spark Streaming支持Java、Python、Scala等编程语言,可以像编写离线程序一样编写实时计算的程序求照的器。

容错

Spark Streaming在没有额外代码和配置的情况下,可以恢复丢失的数据。实时计算的容错性至关重要。

RDD容错机制:每一个RDD都是个不可变的分布式可重算数据集,它记录着确定性的操作继承关系,只要输入数据是可容错的,任意一个RDD的分区出错或不可用都可以使用原始输入数据经过转换操作重新计算得到。

易整合到Spark体系

Spark Streaming可以在Spark上运行,允许重复使用相同的代码进行批处理,实时处理可以与离线处理相结合实现交互式的查询操作。

sparkStreaming构架

SparkStreaming整体构架图

sparkStreaming构架图

背压机制

spark1.5版本开始Spark Streaming可以动态控制数据接收速率来适配集群数据处理能力。

背压机制(Spark Streaming Backpressure): 根据JobScheduler反馈作业的执行信息来动态调整Receiver数据接收率。

通过属性“spark.streaming.backpressure.enabled”控制是否启用backpressure机制,默认值false不启用。

DStream入门

DStream是Spark Streaming的基础抽象,代表持续性的数据流和经过各种Spark语操作后的结果数据流。DStream是一系列连续的RDD。每个RDD含有一段时间间隔内的数据。

 sparkStreaming实现wordcount程序!

代码

import org.apache.spark.SparkConf
import org.apache.spark.streaming.Seconds, StreamingContext

object WordCount 
  def main(args: Array[String]): Unit = 
    //配置spark
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("StreamWordCount")
    //初始化streamingContext,间隔时间为5秒
    val ssc = new StreamingContext(sparkConf, Seconds(5))
    //通过监控端口创建Dstream,读取数据(行),主机名、端口号
    val line = ssc.socketTextStream("hadoop01", 9999)
    //切分数据
    val word = line.flatMap(_.split(" "))
    //映射(word,1)
    val word2 = word.map((_, 1))
    //统计
    val wordcount = word2.reduceByKey(_ + _)
    //打印
    wordcount.print()
    //启动sparkStreamingCount
    ssc.start()
    ssc.awaitTermination()
  

结果:

启动netcat作为数据源,端口号为9999,输入数据

 启动程序查看输出结果

本文仅仅是学习笔记!!!!

以上是关于spark学习笔记——sparkStreaming-概述/特点/构架/DStream入门程序wordcount的主要内容,如果未能解决你的问题,请参考以下文章

Spark学习笔记

Spark学习笔记——Spark Streaming

Spark StreamingSpark Day11:Spark Streaming 学习笔记

Spark StreamingSpark Day11:Spark Streaming 学习笔记

Spark基础学习笔记33:Spark Streaming数据源

Spark 系统性学习笔记系列