一、介绍

  1.sparkStreaming是核心模块Spark API的扩展,具有可伸缩,高吞吐量以及容错的实时数据流处理等。数据可以从许多来源(如Kafka,Flume,Kinesis或TCP套接字)中获取。并且可以使用以高级函数表示的复杂算法进行处理map,例如reducejoinwindow。最后,处理后的数据可以推送到文件系统,数据库和实时仪表盘。[DStresam]:离散流,连续的RDD序列。准实时计算,以batch处理作业。

  2.在内部,它的工作原理如下。Spark Streaming接收实时输入数据流并将数据分成批处理,然后由Spark引擎处理,以批量生成最终结果流。

  3.sparkStreaming提供了一个高级的抽象discretized stream称之为DStream,表示连续的数据流。DStream可以通过像Kafka,Flume和Kinesis等源的输入数据流创建。或者通过应用在其他DStream上应用高级的操作得来。在内部DStream也表现为RDD序列。

  4.在我们详细介绍如何编写自己的Spark Streaming程序之前,让我们快速了解一下简单的Spark Streaming程序是什么样的。假设我们想要计算从TCP套接字上侦听的数据服务器接收的文本数据中的字数。您需要做的就是如下。

二、体验spark Streaming

  1.pom.xml文件

<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.</artifactId>
<version>2.1.</version>
</dependency>

  2.编写程序

package com.jd.spark.scala

import org.apache.spark._
import org.apache.spark.streaming._
import org.apache.spark.streaming.StreamingContext._ object SparkStreamingDemo {
def main(args: Array[String]): Unit = {
//这个地方要注意,并发线程数要大于1,创建一个配置对象,将其设置为本地模式,
val conf = new SparkConf().setMaster("local[2]").setAppName("NetworkWordCount");
//创建sparkStreaming上下文,批次时长是1s
val ssc = new StreamingContext(conf,Seconds());
//创建套接字文本流
val lines = ssc.socketTextStream("localhost",);
//将读取进来的行进行压扁操作,这个地方返回的都是离散流DStream
val words = lines.flatMap(_.split(" "))
//变换成对偶
val pairs = words.map((_,));
//聚合操作
val count = pairs.reduceByKey(_ +_);
count.print();
//开始进行相关的计算,等待其停止
ssc.start();
//等待结束
ssc.awaitTermination()
} }

  3.启动nc服务器

  4.导出stream程序的jar文件,丢到centos上去运行

    (1)

    (2)

    (3)spark-submit  --class com.jd.spark.scala.SparkStreamingDemo SparkDemo1-1.0-SNAPSHOT.jar

三、Kafka+ Spark Streaming做流计算

  0.启动kafka集群

    a)启动zk:zkServer.sh start

    b)启动kafka: bin/kafka-server-start.sh config/server.properties

    c)验证kafka服务器是否成功

      $>netstat -anop | grep 9092

    d)创建主题

      $>bin/kafka-topics.sh --create --zookeeper s11:2181 --replication-factor 3 --partitions 3 --topic test1

    e)查看主题列表

      $>bin/kafka-topics.sh --list --zookeeper s11:2181

    f)启动控制台生产者

      $>bin/kafka-console-producer.sh --broker-list s12:9092 --topic test1

    g)启动控制台消费者

      $>bin/kafka-console-consumer.sh --bootstrap-server s12:9092 --topic test --from-beginning --zookeeper s202:2181

  1.引入pom.xml文件

<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka--10_2.</artifactId>
<version>2.1.</version>
</dependency>

  2.Option[T]可选的

    None    //

    

  3.

  4.

三、windows:窗口化操作

  1.batch interval:批次的间隔

  2.windows length:窗口长度,跨批次。批次的整数倍

  3.slide interval:滑动间隔,窗口计算的间隔时间,也是批次的整倍数

  4.reduceByKeyAndWindow():按照key和窗口进行聚合。

    reduceByKeyAndWindow(_ + _,windows length,sliding interval)

四、持久化

  1.memory_only

  2.memory_ser

  3.spark-submit --class

五、生产环境下spark streaming的job的注意事项

  避免单点故障。

  Driver    //  驱动,运行用户编写的程序代码的主机

  Excutors    //执行的spark driver提交的作业,内部含有附加组件,比如receiver,receiver接收数据并以block的方式保存在内存中,同时将数据块复制到其他的executor中,以备容错。每个批次的末端会形成新的DStream。如果receiver故障,其他执行程序会接收

  spark streaming 实现容错

    如果executor发生故障,所有未被处理的数据都会丢失,解决办法可以通过wal方式将数据预先写入到hdfs或者s3

    如果Driver故障的,Driver程序会停止,所有的执行程序都会失去连接,他们会结束计算。解决办法,自动配置和编程

      1:配置Driver程序,自动重启,配置自动重启,使用特定的集群管理器来实现

      2.重启的时候,从宕机的地方开始重启,通过检查点记住可以实现该功能

        //目录可以是本地,也可以是hdfs

        jsc.checkpoint("d://....................");

        不再使用new方式创建SparkStreamContext对象,而是通过工厂的方式JavaStreamingContext.getOrCreate()方式来创建上下文对象。首先会检查检查点目录,看是否有job运行,

  

  

spark复习笔记(7):sparkstreaming的更多相关文章

  1. spark复习笔记(1)

    使用spark实现work count ---------------------------------------------------- (1)用sc.textFile(" &quo ...

  2. spark复习笔记(7):sparkSQL

    一.saprkSQL模块,使用类sql的方式访问Hadoop,实现mr计算,底层使用的是rdd 1.hive //hadoop  mr  sql 2.phenoix //hbase上构建sql的交互过 ...

  3. spark复习笔记(6):RDD持久化

    在spark中最重要的功能之一是跨操作在内存中持久化数据集.当你持久化一个RDD的时候,每个节点都存放了一个它在内存中计算的一个分区,并在该数据集的其他操作中进行重用,持久化一个RDD的时候,节点上的 ...

  4. spark复习笔记(6):数据倾斜

    一.数据倾斜 spark数据倾斜,map阶段对key进行重新划分.大量的数据在经过hash计算之后,进入到相同的分区中,zao

  5. spark复习笔记(4):RDD变换

    一.RDD变换 1.返回执行新的rdd的指针,在rdd之间创建依赖关系.每个rdd都有一个计算函数和指向父rdd的指针 Spark是惰性的,因此除非调用某个转换或动作,否则不会执行任何操作,否则将触发 ...

  6. spark复习笔记(5):API分析

    0.spark是基于hadoop的mr模型,扩展了MR,高效实用MR模型,内存型集群计算,提高了app处理速度. 1.特点:(1)在内存中存储中间结果 (2)支持多种语言:java scala pyt ...

  7. spark复习笔记(4):spark脚本分析

    1.[start-all.sh] #!/usr/bin/env bash # # Licensed to the Apache Software Foundation (ASF) under one ...

  8. spark复习笔记(3)

    在windows上实现wordcount单词统计 一.编写scala程序,引入spark类库,完成wordcount 1.sparkcontextAPI sparkcontext是spark功能的主要 ...

  9. spark复习笔记(3):使用spark实现单词统计

    wordcount是spark入门级的demo,不难但是很有趣.接下来我用命令行.scala.Java和python这三种语言来实现单词统计. 一.使用命令行实现单词的统计 1.首先touch一个a. ...

随机推荐

  1. Task5.PyTorch实现L1,L2正则化以及Dropout

    1.了解知道Dropout原理 深度学习网路中,参数多,可能出现过拟合及费时问题.为了解决这一问题,通过实验,在2012年,Hinton在其论文<Improving neural network ...

  2. LTM_本地流量管理(一)

    基本元素及概念 Node:节点,即服务器的IP地址. Member:成员,即一个服务,用IP+端口表示. Pool:池:一个或多个Member的逻辑分组,一个Pool表示一个应用,每个Pool都有自己 ...

  3. SonarQube规则之漏洞类型

    漏洞类型: 1."@RequestMapping" methods should be "public"漏洞 阻断标注了RequestMapping是contr ...

  4. 关于vs2019

    一.vs2019中的MFC 在想创建一个基于对话的应用时找不着模版了,这下可慌了,试遍了已有的各个模版都没要,要么就是缺少头文件,我在想是不是少安装了什么选项.重装了相关模块,最后又核对了一遍,都对. ...

  5. VS2015编译问题:模块对于 SAFESEH 映像是不安全的

    严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2026 模块对于 SAFESEH 映像是不安全的. zlibvc C:\MyDirectory\test2\zlib-\contrib\ ...

  6. ES的聚合操作

    构建数据: ​    @Test    public void createIndex(){        /**         * 创建索引         * */        client. ...

  7. dependencies 和 starter

    以 spring-cloud-alibaba-dependencies-1.5.0.RELEASE 为例: <dependency> <groupId>com.alibaba. ...

  8. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第6节 static静态_14_静态static的内存图

    输出room的时候,推荐用类名称点的形式 方法区内有,有个独立的空间叫做静态区,专门用来存储静态static的数据 下图红色箭头的部分,全程和对象没有关系.

  9. 测开之路一百一十二:bootstrap按钮

    bootstrap按钮 引入bootstrap和jquery 普通按钮和bootstrap风格按钮 调整大小 块级按钮 禁用按钮 disabled 按钮分组 分页按钮

  10. Oracle数据库文件导出为CSV格式的方法

    1 安装PLSQL Developer,并连接Oracle数据库. 2 执行sql语句,将要导出的表格显示出来. select * from table名; 3 如下点击导出查询结果,选择数据格式,即 ...