第84课:StreamingContext、DStream、Receiver深度剖析分享.pdfVIP

  • 1
  • 0
  • 约2.41千字
  • 约 7页
  • 2018-05-22 发布于江苏
  • 举报

第84课:StreamingContext、DStream、Receiver深度剖析分享.pdf

第84课:StreamingContext、DStream、Receiver深度剖析分享

第84 课:StreamingContext、DStream、Receiver 深度剖析分 享 编写人:姜伟、唐陈昊、龚湄燕 本课分成四部分讲解:  第一部分对StreamingContext 功能及源码剖析;  第二部分对DStream 功能及源码剖析;  第三部分对Receiver 功能及源码剖析;  最后一部分将StreamingContext、DStream、Receiver 结合起来分析其流程。 一、 StreamingContext 功能及源码剖析: 1、通过StreamingContext 对象jssc ,创建应用程序主入口,并连上Driver 上的接收数 据服务端口9999 写入源数据: 2、StreamingContext 的主要功能有:  主程序的入口;  提供了各种创建DStream 的方法接收各种流入的数据源(例如:Kafka、Flume、 Twitter 、ZeroMQ 和简单的TCP 套接字等);  通过构造函数实例化 StreamingContext 对象时,可以指定 master URL 、 appName、或者传入SparkConf 配置对象、或者已经创建的SparkContext 对 象;  将接收的数据流传入DStreams 对象中;  通过 StreamingContext 对象实例的 start 方法启动当前应用程序的流计算框架 或通过stop 方法结束当前应用程序的流计算框架。 二、 DStream 功能及源码剖析: 1、DStream 是RDD 的模板,RDD 是抽象的,所以DStream 也是抽象的。 2、DStream 的具体实现子类如下图所示: 3、以StreamingContext 实例的socketTextSteam 方法为例,其执行完的结果返回DStream 对象实例,其源码调用过程如下图: 注意:socket.getInputStream 获取数据,while 循环来存储储蓄数据(内存、磁盘)。 三、 Receiver 功能及源码剖析: 1、Receiver 代表数据的输入,接收外部输入的数据,如从Kafka 上抓取数据; 2、Receiver 运行在Worker 节点上; 3、Receiver 在 Worker 节点上抓取 Kafka 分布式消息框架上的数据时,具体实现类是 KafkaReceiver; 4 、Receiver 是抽象类,其抓取数据的实现子类如下图所示: 5、如果上述实现类都满足不了您的要求,您自己可以定义 Receiver 类,只需要继承 Receiver 抽象类来实现自己子类的业务需求。 四、 StreamingContext、DStream、Receiver 结合流程分析: (1)inputStream 代表了数据输入流(如:Socket、Kafka、Flume 等) (2 )Transformation 代表了对数据的一系列操作,如flatMap 、map 等 (3 )outputStream 代表了数据的输出,例如wordCount 中的println 方法: 数据数据在流进来之后最终会生成Job ,最终还是基于Spark Core 的RDD 进行执行: 在处理流进来的数据时是DStream 进行Transformation 由于是StreamingContext 所 以根本不会去运行,StreamingContext 会根据Transformation 生成“DStream 的链条” 及DStreamGraph,而DStreamGraph 就是DAG 的模板,这个模板是被框架托管的。 当我们指定时间间隔的时候,Driver 端就会根据这个时间间隔来触发Job 而触发Job 的方法就是根据OutputDStream 中指定

文档评论(0)

1亿VIP精品文档

相关文档