Spark定制班第19课:Spark Streaming架构设计和运行机制大总结

55 篇文章 0 订阅
55 篇文章 0 订阅
本期内容:
1. Spark Streaming中的架构设计和运行机制
2. Spark Streaming的深度思考

1. Spark Streaming中的架构设计和运行机制

前面讨论过,Spark Streaming就是RDD加上了时间维度。RDD模板是DStream,DAG的模板是DStreamGraph。
但实际上DStream上的操作和RDD上的操作并不是一一对应的。RDD中的一些操作,在DStream里没有。
DStream、DStreamGraph是幻象,只是在时间维度下为RDD的时间周期管理提供方便而已。
这个时间维度,说到底,就是用到了定时器。生成Block,生成Job,都用了定时器。

BlockGenerator中的RecurringTimer是成员blockIntervalTimer 。定时产生Block。
BlockGenerator:

  private val blockIntervalTimer =
    new  RecurringTimer (clock, blockIntervalMs,  updateCurrentBuffer , "BlockGenerator")

BlockGenerator.updateCurrentBuffer:

  /** Change the buffer to which single records are added to. */
  private def updateCurrentBuffer(time: Long): Unit = {
    try {
      var newBlock: Block = null
      synchronized {
        if (currentBuffer.nonEmpty) {
          val newBlockBuffer = currentBuffer
          currentBuffer = new ArrayBuffer[Any]
          val blockId = StreamBlockId(receiverId, time - blockIntervalMs)
          listener.onGenerateBlock(blockId)
          newBlock =  new Block (blockId, newBlockBuffer)
        }
      }

      if (newBlock != null) {
        blocksForPushing.put(newBlock)  // put is blocking when queue is full
      }
    } catch {
      case ie: InterruptedException =>
        logInfo("Block updating timer thread was interrupted")
      case e: Exception =>
        reportError("Error in block updating thread", e)
    }
  }

定期产生Block。具体流程参考第10课。

JobGenerator中的RecurringTimer是成员timer。
JobGenerator:

  private val timer = new  RecurringTimer (clock, ssc.graph.batchDuration.milliseconds,
    longTime => eventLoop. post ( GenerateJobs (new Time(longTime))), "JobGenerator")

定期的发送生成Job的消息。具体流程参考第7课。

2. Spark Streaming的深度思考

Spark Streaming的本质,就是在RRD的基础上,增加了Timer,Timer不断触发,周而复始的产生Block,产生Job,处理数据。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值