zoukankan      html  css  js  c++  java
  • Spark Streaming揭秘 Day11 Receiver Tracker的具体实现

    Spark Streaming揭秘 Day11

    Receiver Tracker的具体实现

    ReceiverTracker是运行在Driver上Receiver管理程序,今天让我们深入学习一下。

    核心:ReceivedBlockTracker

    通过阅读代码,我们会发现ReceiverTracker中最为重要的是其中的成员ReceivedBlockTracker,主要存放实际的Block数据,这是一个典型的facade模式的实现。
    Snip20160518_1

    数据结构:两个Map

    在ReceivedBlockTracker中,最为关键的是以下两个数据结构:

    Snip20160518_5

    这三个结构代表了ReceiverBlockTracker处理数据的生命周期:

    1. streamIdToUnallocatedBlockQueues以streamId(表示单个Receiver)将收到的Block聚集在一个队列中,供后续处理。

    2. timeToAllocatedBlocks以批次为单位,将Block进行汇总,供后续运算使用

    对这两个数据结构,主要是同一个两个方法来操作:

    addBlock方法主要将数据存入streamIdToUnallocatedBlockQueues,在这里出现了WAL机制,我们明天会介绍。
    Snip20160518_6

    allocateBlocksToBatch根据时间需要,将block分配给batch
    Snip20160518_7

    需要注意的是,这个方法是在JobGenerator中调用的
    Snip20160518_9

    与上一日内容相串联,我们可以形成数据管理的全貌。

    欲知后事如何,且听下回分解

    DT大数据每天晚上20:00YY频道现场授课频道68917580

  • 相关阅读:
    ABAP术语-Logical Lock
    ABAP术语-Lock Object
    ABAP术语-Lock Mode
    ABAP术语-Lock Argument
    ABAP术语-Key Field
    Python面向对象基础-day6
    Python中的内置模块与生成器迭代器-day5
    Python高阶函数与函数装饰器-day4
    Python字符编码与函数基本使用-day3
    Nginx内置变量及正则语法
  • 原文地址:https://www.cnblogs.com/dt-zhw/p/5507088.html
Copyright © 2011-2022 走看看