Spark Streaming入门

Spark Streaming入门

1. Spark Streaming入门

1. 概述

1490928-20180919225753330-2116696308.png

  • 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: 一栈式解决。

1490928-20180919225812028-862038027.png

2. 应用场景

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

3. 集成Spark生态系统使用

1490928-20180919225834554-1900702117.png

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处理。

1490928-20180919225846559-1552388473.png

  • 细粒度

1490928-20180919225856854-627619801.png

posted @ 2018-09-19 22:59 eat.u 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值