Spark Streaming详细文本教学01

本文介绍了Spark Streaming的基本概念、学习原因及其与Storm的对比。文章详细阐述了Spark Streaming的DStream抽象,展示了如何初始化StreamingContext,以及DStreams的输入来源。文中特别讨论了Spark对Kafka的两种连接方式——Receiver和Direct模式,分析了各自的优缺点。Receiver模式可能丢失数据,而Direct模式提供更高效和精确的数据处理。
摘要由CSDN通过智能技术生成

前言

你们好我是啊晨
今儿更新spark 技术Spark Streaming。
废话不多说,内容很多选择阅读,详细。
请:

一、Spark Streaming概述

1、什么是Spark Streaming

在这里插入图片描述
Spark Streaming类似于Apache Storm,用于流式数据的处理。根据其官方文档介绍,Spark Streaming有高吞吐量和容错能力强等特点。Spark Streaming支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语如:map、reduce、join、window等进行运算。而结果也能保存在很多地方,如HDFS,数据库等。另外Spark Streaming也能和MLlib(机器学习)以及Graphx完美融合。
在这里插入图片描述
和Spark基于RDD的概念很相似,Spark Streaming使用离散化流(discretized stream)作为抽象表示,叫作DStream。DStream 是随时间推移而收到的数据的序列。在内部,每个时间区间收到的数据都作为RDD 存在,而 DStream 是由这些 RDD 所组成的序列(因此 得名“离散化”)。
在这里插入图片描述
DStream 可以从各种输入源创建(简单数据源socket 复杂数据源kafka),比如 Flume、Kafka 或者 HDFS。创建出来的DStream 支持两种操作,一种是转化操作(transformation),会生成一个新的DStream,另一种是输出操作(output operation),可以把数据写入外部系统中,每个时间区间分别输出到不同的文件。DStream 提供了许多与 RDD 所支持的操作相类似的操作支持,还增加了与时间相关的新操作,比如滑动窗口。

2、为什么要学习Spark Streaming

1.易用

在这里插入图片描述

2.容错

在这里插入图片描述

3.易整合到Spark体系

在这里插入图片描述

3、Spark与Storm的对比

Spark Storm
在这里插入图片描述 在这里插入图片描述
开发语言:Scala 开发语言:Clojure
编程模型:DStream 编程模型:Spout/Bolt
在这里插入图片描述 在这里插入图片描述

目前流行的三种实时框架对比

Apache Flink SparkSteaming Storm
架构 架构介于spark和storm之间,主从结构与sparkStreaming相似,DataFlow Grpah与storm相似,数据流可以被表示为一个有向图,每个顶点是一个定义的运算,每向边表示数据的流动 Native 架构依赖Spark,主从模式,每个batch批次处理都依赖driver主,可以理解为时间维度上的spark DAG Micro-Batch 主从模式,且依赖ZK,处理过程中对主的依赖不大 Native
容错 基于Ghandy-Lamport distributed snapshots checkpoint机制 Medium WAL及RDD血统机制 High(高) Records Ack Medium(一般)
处理模型与延时 单条时间处理亚秒级低延时 一个事件窗口内的所有事件 秒级低延时 每次传入的一个事件 亚秒级低延时
吞吐量 High High Low(低)
数据处理保证 Exactly once High Exactly once(实现架用Chandy-Lamport算法,即marker-checkpoint) High At least once(实现架用record-level acknowledgments),Trident可以支持storm提供exactly once语义 Medium
高级API Flink,栈中提供了很多高级API和满足不同场景的类库:机器学习、图分析、关系式数据处理 High 能够很容易的对接Spark生态圈里面的组件,同时额能够对接主流的消息传输组件及存储系统 High 应用需要按照特定的storm定义的规模编写 Low
易用性 支持SQL Streaming,Batch和Streaming采用统一编程框架 High 支持SQL Streaming,Batch和Streaming采用统一编程框架 High 不支持SQL Streaming Medium
成熟性 新兴项目,处于发展阶段 Low 大家都在观望,用户量比较低 已经发展一段时间 Medium 用户量在逐渐增加 相对较早的流系统,比较稳定 High
社区活动度 212 contributor 上升阶段 Medium 937 contributor High 216 contributor,活跃比较稳定 Medium
部署性 部署相对简单,只依赖JRE环境 Low 部署相对简单,只依赖JRE环境 Low 依赖JRE环境和ZK High

二、运行Spark Streaming

IDEA编写程序
Pom.xml 加入以下依赖:

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.11</artifactId>
    <version>2.1.1</version>
</dependency>
package com.bigdata.streaming

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

object WorldCount {
   
  def main(args: Array[String]) {
   

//注意运输模式为local的时候必须至少设置2个core, local[2]
//接收socket的数据,需要一个对应的接收器,这个接收器就会使用cpu核
//处理数据就需要一个执行器,这个执行器也会使用cpu核
    val conf = new SparkConf().setMaster("local[2]").setAppName("NetworkWordCount")
    //需要两个参数 第一个是 SparkConf  第二个是时间间隔,每个批次的数据的时间范围的长度
val ssc = new StreamingContext(conf, Seconds(1))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值