一、介绍

  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. vue面试题专题

    1,v-if和v-show的作用是什么?有什么区别? v-if:        创建---删除,没有元素.切换开销大.适合不频繁切换的情况用. 例子:制作搜索框,导航栏和搜索框重叠的两个框,点击搜索图 ...

  2. Node.js 版本管理工具——nvm

    日常项目开发中,有些项目可能基于node  V10 或者 V8 不同的版本: 如果我们手动安装卸载node,这样是不友好. 先放上作者的博客地址 : https://www.cnblogs.com/g ...

  3. Day01_初识Python

    Python简介 Python的历史 1.1989年圣诞节:Guidao von Rossum开始写Python语言的编译器 2.1991年2月:第一个Python编译器(同时也是解释器)诞生,他是使 ...

  4. 总结PHP缓存技术的多种方法

    这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓 ...

  5. [NOI2003]逃学的小孩 题解

    前言 >原题传送门(洛谷)< 看了一下洛谷题面,这道NOI的题竟然是蓝的(恶评?),做了一下好像确实是蓝的... 解法 思路非常简单,找道树的直径,然后答案是直径长度加上最大的min(di ...

  6. sh_08_买苹果改进

    sh_08_买苹果改进 # 1. 提示用户输入苹果的单价 price = float(input("苹果的单价:")) # 2. 提示用户输入苹果的重量 weight = floa ...

  7. ORACLE DG添加redo日志成员

    ORACLE DG在线日志添加日志成员 SQL>select SEQUENCE#,first_time,next_time,APPLIED, THREAD# from v$archived_lo ...

  8. Linux_文件系统&磁盘分区

    目录 目录 前言 文件系统 目录结构 File文件标识符 文件系统修复指令 两种磁盘格式 MBR格式 GPT格式 磁盘分区 查看分区 分区的类型 分区最小存储单元 查看当前分区的block的大小 GP ...

  9. 监测工具dstat使用说明

    参考地址: https://blog.csdn.net/sinat_34789167/article/details/80986709

  10. 测开之路一百零一:jquery文字特效、动画、方法链

    文字特效 html内容 1.卷起/展开 2.隐藏/显示 3.淡入淡出 <!DOCTYPE html><html lang="en"><head> ...