文档章节

学习笔记:spark Streaming的入门

o
 osc_fmg49rzg
发布于 2019/03/20 14:32
字数 854
阅读 35
收藏 0

精选30+云产品,助力企业轻松上云!>>>

 spark Streaming的入门

   1.概述

     spark streaming 是spark core api的一个扩展,可实现实时数据的可扩展,高吞吐量,容错流处理。

     从上图可以看出,数据可以有很多来源,如kafka,flume,Twitter,HDFS/S3,Kinesis用的比较少;这些采集回来的数据可以使用以高级的函数(map,reduce等)表达的复杂算法进行处理,经过sparkstreaming框架处理后的数据可以推送到文件系统,数据板或是实时仪表板上;除此之外,我们还可以在数据流上应用spark的机器学习算法和图像处理算法。

    spark streaming简单的个人定义:将不同数据源的数据经过spark Streaming框架处理之后将结果输出到外部文件系统。

    特点:

      低延迟

      能从错误中高效的恢复:fault-tolerant

      能够运行在成百上千的节点上

      能将批处理、机器学习、图计算等子框架和spark streaming综合起来使用

   2.应用场景:

     实时反映电子设备实时监测

     交易过程中实时的金融欺诈

     电商行业的推荐信息

   3.集成spark生态系统的使用

     

     spark SQL、spark streaming、MLlib和GraphX都是基于spark core的扩展和开发,那它们是如何进行交互的?(后期补充)

   4.spark的发展史

    

      

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

    • spark-submit执行(开发)
      package org.apache.spark.examples.streaming
      
      import org.apache.spark.SparkConf
      import org.apache.spark.storage.StorageLevel
      import org.apache.spark.streaming.{Seconds, StreamingContext}
      
      /**
       * Counts words in UTF8 encoded, '\n' delimited text received from the network every second.
       *
       * Usage: NetworkWordCount <hostname> <port>
       * <hostname> and <port> describe the TCP server that Spark Streaming would connect to receive data.
       *
       * To run this on your local machine, you need to first run a Netcat server
       *    `$ nc -lk 9999`
       * and then run the example
       *    `$ bin/run-example org.apache.spark.examples.streaming.NetworkWordCount localhost 9999`
       */
      object NetworkWordCount {
        def main(args: Array[String]) {
          if (args.length < 2) {
            System.err.println("Usage: NetworkWordCount <hostname> <port>")
            System.exit(1)
          }
      
          StreamingExamples.setStreamingLogLevels()
      
          // Create the context with a 1 second batch size
          val sparkConf = new SparkConf().setAppName("NetworkWordCount")
          val ssc = new StreamingContext(sparkConf, Seconds(1))
      
          // Create a socket stream on target ip:port and count the
          // words in input stream of \n delimited text (eg. generated by 'nc')
          // Note that no duplication in storage level only for running locally.
          // Replication necessary in distributed scenario for fault tolerance.
          val lines = ssc.socketTextStream(args(0), args(1).toInt, StorageLevel.MEMORY_AND_DISK_SER)
          val words = lines.flatMap(_.split(" "))
          val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _)
          wordCounts.print()
          ssc.start()
          ssc.awaitTermination()
        }
      }
      
      
      使用spark-submit方式提交的命令如下(不懂看代码前面的解析):
      ./spark-submit --master local[2] --class org.apache.spark.examples.streaming.NetworkWordCount --name NetworkWordCount /home/hadoop/app/spark/eaxmple/jars/spark-example_2.11-2.2.20.jar  hadoop0000  9999

       

    • spark-shell执行(测试)
      val ssc = new StreamingContext(sparkConf, Seconds(1))
      val lines = ssc.socketTextStream("hadoop000", 9999)
          val words = lines.flatMap(_.split(" "))
          val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _)
          wordCounts.print()
          ssc.start()
          ssc.awaitTermination()

      只需要运行./spark-shell --master loacal[2],之后直接把代码拷贝上去运行即可。

   6.工作原理

     粗粒度:spark streaming接受实时数据流,把数据按照指定的时间段切成一片片小的数据块(spark streaming把每个小的数据块当成RDD来处理),然后把这些数据块传给Spark Engine处理,处理完之后的结果也是分批次的返回。

        

       细粒度:application中有两个context,SparkContext和StreamingContext,使用receiver来接收数据。run receivers as taskes去executor上请求数据,当executor接收到数据后会将数据按时间段进行切分并存放在内存中,如设置了多副本将会拷贝到其他的Exceutor上进行数据的备份(replicate blocks), exceutor的receiver会将blocks的信息告诉StreamingContext, 每到指定的周期 StreamingContext 将会通知SparkContext启动jobs并把这些jobs分发到exceutor上执行。

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Spark 学习资源收集【Updating】

(一)spark 相关安装部署、开发环境 1、Spark 伪分布式 & 全分布式 安装指南 http://my.oschina.net/leejun2005/blog/394928 2、Apache Spark探秘:三种分布式部署方式比较 http://dongxic...

大数据之路
2014/09/08
5.7K
0
【spark】Spark 入门到精通

第一阶段 环境篇 Spark 修炼之道(进阶篇)——Spark 入门到精通:第一节 Spark 1.5.0 集群搭建【点击打开】 Spark 修炼之道(进阶篇)——Spark 入门到精通:第二节 Hadoop、Spark 生成圈简...

SoWhat1412
04/19
16
0
【Spark】Sparkstreaming-性能调优

Sparkstreaming-性能调优 Spark Master at spark://node-01:7077 sparkstreaming 线程 数量百度搜索 streaming中partition里用线程池异步优化 - 曾晓森的博客 - CSDN博客 第116课: Spark St...

osc_5s0xzojq
2018/01/11
7
0

本人本着十分尊重的态度来学习周老师的博文,特此为方便好找,在此做一个目录。方便学习。 Scala-IDE Eclipse(Windows)中开发Spark应用程序,在Ubuntu Spark集群上运行 Spark-1.4.0集群搭建...

中琦2513
03/31
0
0
spark 学习路线及参考课程

一、Scala编程详解: 第1讲-Spark的前世今生 第2讲-课程介绍、特色与价值 第3讲-Scala编程详解:基础语法 第4讲-Scala编程详解:条件控制与循环 第5讲-Scala编程详解:函数入门 第6讲-Scala编...

osc_s5wa3ebb
2018/05/07
30
0

没有更多内容

加载失败,请刷新页面

加载更多

事务特性

ACID ACID : 原子性 - 一致性 - 隔离性 - 持久性 四大特性 原子性: 事务将一组逻辑单元看成 一个操作 , 原子是最小单位不可再分割 一致性: 事务的前后 数据的应该保持一致 隔离性(isolation)...

osc_3grma05a
25分钟前
7
0
微信小程序实现分享到朋友圈

2020年7月8日。微信小程序推出分享朋友圈,所以笔者先来试一下,没想到一下搞成了 。。 按照微信官方文档得第一步,我们需要设置允许发给朋友,在小程序得生命周期里面这样写。 首先,把你的...

osc_a8r2ub9u
27分钟前
7
0
小程序分享到朋友圈 H5打开小程序H5打开APP 「wx-open-launch-weapp」 「wx-open-launch-app」

前言 微信更新了两个功能块 简单使用了下 给大家写篇文章说说 避免走弯路 欧力给! 1.小程序分享到朋友圈 //在页面的js里设置下就ok onShareTimeline(){ return { title: "微视宝...

osc_dwuu5jqk
28分钟前
25
0
解决死锁——哲学家就餐

解决方法有: 1、更改为单个锁 2、将锁排序 产生死锁的原因 产生死锁的原因是一个线程在持有一把锁时又去申请另外一把锁,也就是锁嵌套。而另一把锁被另外一个线程持有。 举个广为人知的例子...

osc_2qah5avr
29分钟前
16
0
面试官:软件测试没搞懂这些,哪里来的自信投简历? 刁钻问得高频的面试题(含答案)

问得高频的问题(含答案) 软件的生命周期(prdctrm) 计划阶段(planning)-〉需求分析(requirement)-〉设计阶段(design)-〉编码(coding)->测试(testing)->运行与维护(running maintrnacne) 测试...

测试人追风
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部