spark_streaming

本文深入探讨了Spark Streaming中DStream的概念与应用,包括其在2.0版本前的特性,如与Kafka的集成,以及DStream的子类如InputDStream、ReceiverInputDStream等的工作原理。同时,解析了DStream的执行机制,如batchInterval和blockInterval的作用,以及Receiver如何在worker节点上接收数据。

#Spark Streaming

before spark 2.0

DStream

  • kafka

  • 描述

    • 相同类型的一组RDD,代表连续的数据流
    • 可以由实时数据流创建,TCP sockets , kafka ,flume ,现有DStreams转换操作,
    • 该类提供了基础的map,fliter,widow,PairDStreamFunction ==>join,groupByKeyAndWindow
    • batchInterval=> batchDuration,执行任务的周期,包含一个或者多个block
    • blockInterval => receiver接收到数据后创建block的周期
    • 一个DStream关联一个receiver,需要从多个Receiver并行读取需要创建多个DStream,一个Receiver运行载一个Executor,占用1个cpu
    • 来自数据源的数据接收到以后,receiver会每隔blockInterval时间生成block
    • batchInterval 间隔的block被创建成RDD,block数就是RDD的分区数,分区数对应task数, blockInterval== batchinterval  意味着只有一个分区,本地执行
  • 子类

    • InputDStream
      • 描述
        • 所有输入流的基类
        • spark stream 系统会调用 start 和stop来开始或者停止接受数据,比InputStream多这两个接口
        • 只需要在driver上生成RDD的,可以继承InputDStream通过一个线程在driver节点生成RDD.
          • 例如:FileInputDStream => 监控 HDFS目录生成的新文件
        • 需要在worker节点上接收数据的,需要继承ReceiverInputDStream
      • 子类
        • ReceiverInputDStream
          • 描述
            • 在worker节点启动receiver接收外部数据
            • 新增getReceiver接口,用以worker 节点获取receiver
          • 子类
            • SocketInputDStream
        • DirectKafkaInputDStream
  • 缺点

    • 需要transfer

##DStreamGraph

##JobGenerator

  • batchDuration 生成一次执行任务事件

##StreamingContext

  • batchDuration
    • 任务周期间隔

##Receiver

  • 在worker节点获取数据的对象
    • ReceiverSupervisor
      • ReceiverSupervisorImpl
        • pushSingle 将接收到的数据添加数据到BlockGenerator的buffer
        • pushAndReportBlock
          • 通过blockManager存储block
          • 通知更新blockInfo
    • ReceiverTracker
      • ReceiverTrackerEndpoint
    • JobScheduler
    • BlockGenerator
      • RateLimiter
        • waitToPush
          • 限制一次处理一个消息,消息处理时新来的消息被block
        • com.google.common.util.concurrent.RateLimiter
          • 每秒处理多少任务量
          • 批处理时候每秒多少大小一批
      • 启动2个线程,一个线程负责把receiver中获取的数据分批,另一个线程负责把这些分批好的块push到block manager
      • spark.streaming.blockInterval
        • buffer刷新block时间默认200ms
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值