Spark Streaming入门

1. Spark Streaming入门

1. 概述

  • Spark Streaming is an extension of the core Spark API that enables scalable(Spark Streaming是基于Spark Core的扩展)
  • high-throughput(高可用)
  • fault-tolerant(容错)
  • stream processing of live data streams(作用在实时数据流上)
  • Spark Streaming: 将不同的数据源的数据经过Spark Streaming处理之后将结果输出到外部文件系统
  • 特点:
    • 低延时
    • 能从错误中高效的恢复: fault-tolerant
    • 能够运行在成百上千的节点
    • 能够将批处理、机器学习、图计算等子框架和Spark Streaming综合起来使用
  • Spark Streaming 不需要单独部署,包含在Spark Project里。
  • One stack to rule them all: 一栈式解决。

2. 应用场景

  • Real-time fraud detection in transactions(实时交易金融欺诈检测,银行业等)
  • React to anomalies in sensors in real-time(实时反应,电子业等)
  • 电商网站(推荐系统等,以前是离线处理的)
  • 实时监控(发现外界攻击等)
  • Java EE应用(实时日志错误统计、应变等)

3. 集成Spark生态系统使用

Spark生态的组件,他们都是依托Spark Core进行各自的扩展,那么Spark Streaming如何与各组件间调用呢?

  • Join data streams with static data sets(数据流和静态数据)
//Create data set from Hadoop file
val dataset = sparkContext.hadoopFile("file")

//Join each batch in stream with the dataset
//kafka数据 => RDD
kafkaStream.transform(batchRDD => {
    batchRDD.join(dataset).filter(...)
})
  • Learn models offline, apply them online(使用机器学习模型))
//Learn model offline
val model = KMeans.train(dataset, ...)

//Apply model online on stream
kafkaStream.map(event => {
    model.predict(event.featrue)
})
  • Interactively query straming data with SQL(使用SQL查询交互式数据流)
//Register each batch in stream as table
kafkaStream.map(batchRDD => {
    batchRDD.registerTempTable("latestEvents")
})

//interactively query table
sqlContext.sql("SELECT * FROM latestEvents")

4. Spark Streaming发展史

  • Late 2011 - idea AMPLab, UC Berkeley
  • Q2 2012 - prototype Rewrote large parts of Spark core Smallest job - 900 ms -> < 50ms
  • Q3 2012 - Spark core improvements open source in Spark 0.6
  • Feb 2013 - Alpha release 7.7k lines, merged in 7 days Released with Spark 0.7
  • Jan 2014 - Stable release Graduation with Spark 0.9

5. 从词频统计功能着手入门

  • spark-submit执行
./spark-submit --master local[2] --class org.apache.spark.examples.streaming.NetworkWordCount /usr/local/spark/examples/jars/spark-examples.jar [args1] [args2]
  • spark-shell执行
import org.apache.spark.streaming.{Seconds, StreamingContext}
val ssc = new StreamingContext(sc, Seconds(1))
val lines = ssc.socketTextStream("localhost", 9999)
val wordCounts = lines.flatMap(_.split(" ")).map(x => (x, 1)).recudeByKey(_ + _)
wordCounts.print()
ssc.start()
ssc.awaitTermination()
  • 测试
#向端口发送消息
nc -lk 9999

6. 工作原理

  • 粗粒度:Spark Streaming接收到实时数据流,把数据按照指定的时间段切成一片片小的数据块,然后把小的数据库传给Spark Engine处理。

  • 细粒度

原文地址:https://www.cnblogs.com/uzies/p/9678230.html

时间: 2024-11-07 13:04:30

Spark Streaming入门的相关文章

Spark Streaming 入门

概述 什么是 Spark Streaming? Spark Streaming is an extension of the core Spark API that enables scalable, high-throughput, fault-tolerant stream processing of live data streams. 根据官网的解释,Spark Streaming是一个基于Spark Core的一个高扩展,高吞吐量,容错的一个处理实时流数据的 工具(流处理). 数据的流

Spark Streaming实时流处理项目实战

第1章 课程介绍   1-1 -导学-   1-2 -授课习惯和学习建议   1-3 -OOTB环境使用演示   1-4 -Linux环境及软件版本介绍   1-5 -Spark版本升级第2章 初识实时流处理   2-1 -课程目录   2-2 -业务现状分析   2-3 -实时流处理产生背景   2-4 -实时流处理概述   2-5 -离线计算和实时计算对比   2-6 -实时流处理框架对比   2-7 -实时流处理架构及技术选型   2-8 -实时流处理在企业中的应用第3章 分布式日志收集框

Spark入门实战系列--7.Spark Streaming(下)--实时流计算Spark Streaming实战

[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.实例演示 1.1 流数据模拟器 1.1.1 流数据说明 在实例演示中模拟实际情况,需要源源不断地接入流数据,为了在演示过程中更接近真实环境将定义流数据模拟器.该模拟器主要功能:通过Socket方式监听指定的端口号,当外部程序通过该端口连接并请求数据时,模拟器将定时将指定的文件数据随机获取发送给外部程序. 1.1.2 模拟器代码 import java.io.{PrintWriter} impor

Spark入门实战系列--7.Spark Streaming(下)--Spark Streaming实战

[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送–Spark入门实战系列>获取 1 实例演示 1.1 流数据模拟器 1.1.1 流数据说明 在实例演示中模拟实际情况,需要源源不断地接入流数据,为了在演示过程中更接近真实环境将定义流数据模拟器.该模拟器主要功能:通过Socket方式监听指定的端口号,当外部程序通过该端口连接并请求数据时,模拟器将定时将指定的文件数据随机获取发送给外部程序. 1.1.2 模拟器代码 import java.io.{PrintWriter} import

Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming介绍

[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送–Spark入门实战系列>获取 1 Spark Streaming简介 1.1 概述 Spark Streaming 是Spark核心API的一个扩展,可以实现高吞吐量的.具备容错机制的实时流数据的处理.支持从多种数据源获取数据,包括Kafk.Flume.Twitter.ZeroMQ.Kinesis 以及TCP sockets,从数据源获取数据之后,可以使用诸如map.reduce.join和window等高级函数进行复杂算法的处理

Spark修炼之道(进阶篇)——Spark入门到精通:第十三节 Spark Streaming—— Spark SQL、DataFrame与Spark Streaming

主要内容 Spark SQL.DataFrame与Spark Streaming 1. Spark SQL.DataFrame与Spark Streaming 源码直接参照:https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/streaming/SqlNetworkWordCount.scala import org.apache.spark.SparkConf

13.spark streaming之快速入门

简介   Spark Streaming是Spark核心API的扩展,可以实现可伸缩.高吞吐量.具备容错机制的实时流时数据的处理.支持多种数据源,比如Kafka.Flume.Twitter.ZeroMQ.Kinesis 以及TCP sockets.   可以使用诸如map.reduce.join和window等高级函数进行复杂算法(比如,机器学习和图计算)的处理.最后还可以将处理结果存储到文件系统,数据库和仪表盘. 架构与抽象 抽象   Spark Streaming接收实时流的数据,并根据一定

Spark从入门到上手实战

Spark从入门到上手实战 课程学习地址:http://www.xuetuwuyou.com/course/186 课程出自学途无忧网:http://www.xuetuwuyou.com 讲师:轩宇老师 课程简介: Spark属于新起的基于内存处理海量数据的框架,由于其快速被众公司所青睐.Spark 生态栈框架,非常的强大,可以对数据进行批处理.流式处理.SQL 交互式处理及机器学习和Graphx 图像计算.目前绝大数公司都使用,主要在于 Spark SQL 结构化数据的处理,非常的快速,高性能

.Spark Streaming(上)--实时流计算Spark Streaming原理介

Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍 http://www.cnblogs.com/shishanyuan/p/4747735.html 1.Spark Streaming简介 1.1 概述 Spark Streaming 是Spark核心API的一个扩展,可以实现高吞吐量的.具备容错机制的实时流数据的处理.支持从多种数据源获取数据,包括Kafk.Flume.Twitter.ZeroMQ.Kinesis 以及TCP