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

StreamingContextDStreamReceiver深度剖析

                                                                                                       编写人:姜伟、唐陈昊、龚湄燕

本课分成四部分讲解,第一部分对StreamingContext功能及源码剖析;第二部分对DStream功能及源码剖析;第三部分对Receiver功能及源码剖析;最后一部分将StreamingContextDStreamReceiver结合起来分析其流程。


1、  通过Spark Streaming对象jssc,创建应用程序主入口,并连上Driver上的接收数据服务端口9999写入源数据:

第84课:StreamingContext、DStream、Receiver深度剖析_第1张图片

2、  StreamingContext的主要功能有:

主程序的入口;

提供了各种创建DStream的方法接收各种流入的数据源(例如:KafkaFlumeTwitterZeroMQ和简单的TCP套接字等);

通过构造函数实例化Spark Streaming对象时,可以指定master URLappName、或者传入SparkConf配置对象、或者已经创建的SparkContext对象;

将接收的数据流传入DStreams对象中;

通过Spark Streaming对象实例的start方法启动当前应用程序的流计算框架或通过stop方法结束当前应用程序的流计算框架;

第84课:StreamingContext、DStream、Receiver深度剖析_第2张图片

        

二、DStream功能及源码剖析:

1、  DStreamRDD的模板,DStream是抽象的,RDD也是抽象

2、  DStream的具体实现子类如下图所示:

第84课:StreamingContext、DStream、Receiver深度剖析_第3张图片

3、  StreamingContext实例的socketTextSteam方法为例,其执行完的结果返回DStream对象实例,其源码调用过程如下图:

第84课:StreamingContext、DStream、Receiver深度剖析_第4张图片

第84课:StreamingContext、DStream、Receiver深度剖析_第5张图片

第84课:StreamingContext、DStream、Receiver深度剖析_第6张图片

 

第84课:StreamingContext、DStream、Receiver深度剖析_第7张图片

 

第84课:StreamingContext、DStream、Receiver深度剖析_第8张图片

第84课:StreamingContext、DStream、Receiver深度剖析_第9张图片

socket.getInputStream获取数据,while循环来存储储蓄数据(内存、磁盘)

  1. 第84课:StreamingContext、DStream、Receiver深度剖析_第10张图片

1、  Receiver代表数据的输入,接收外部输入的数据,如从Kafka上抓取数据;

2、  Receiver运行在Worker节点上;

3、  ReceiverWorker节点上抓取Kafka分布式消息框架上的数据时,具体实现类是KafkaReceiver

4、  Receiver是抽象类,其抓取数据的实现子类如下图所示:

5、  如果上述实现类都满足不了您的要求,您自己可以定义Receiver类,只需要继承Receiver抽象类来实现自己子类的业务需求。

 

 

 

 

 


第84课:StreamingContext、DStream、Receiver深度剖析_第11张图片

1inputStream代表了数据输入流(如:SocketKafkaFlume)

2Transformation代表了对数据的一系列操作,如flatMapmap

3outputStream代表了数据的输出,例如wordCount中的println方法:

         第84课:StreamingContext、DStream、Receiver深度剖析_第12张图片

第84课:StreamingContext、DStream、Receiver深度剖析_第13张图片

数据数据在流进来之后最终会生成Job,最终还是基于Spark CoreRDD进行执行:在处理流进来的数据时是DStream进行Transformation由于是StreamingContext所以根本不会去运行,StreamingContext会根据Transformation生成”DStream的链条”及DStreamGraph,而DStreamGraph就是DAG的模板,这个模板是被框架托管的。当我们指定时间间隔的时候,Driver端就会根据这个时间间隔来触发Job而触发Job的方法就是根据OutputDStream中指定的具体的function,例如wordcountprint,这个函数一定会传给ForEachDStream,它会把函数交给最后一个DStream产生的RDD,也就是RDDprint操作,而这个操作就是RDD触发Action

总结:

使用Spark Streaming流框架技术可以处理各种数据来源类型,如:数据库、HDFS,服务器log日志、网络流,其强大超越了你想象不到的场景,只是很多时候大家不会用,其真正原因是对SparkSpark Streaming本身不了解。

 

感谢王家林老师的知识分享

王家林老师名片:

中国Spark第一人

新浪微博:http://weibo.com/ilovepains

微信公众号:DT_Spark

博客:http://blog.sina.com.cn/ilovepains

手机:18610086859

QQ:1740415547

邮箱:[email protected]

YY课堂:每天20:00现场授课频道68917580

王家林:DT大数据梦工厂创始人、Spark亚太研究院院长和首席专家、大数据培训专家、大数据架构师。

Spark、Flink、Docker、Android技术中国区布道师。
国内最早一批从事Android、Hadoop、Spark、Docker的研究者,在Spark、Hadoop、Android、Docker等方面有丰富的源码、实务和性能优化经验。是该领域的知名咨询顾问、培训专家;
Spark最佳畅销书《大数据spark企业级实战》和《Spark大数据实例开发教程》作者;
Android移动互联网兴起以来,近10本的IT畅销书作者;
为大量企业进行技术培训和服务,包括:

三星、惠普、爱立信、摩托罗拉、索尼、华为、夏普、南方航空公司、中国国际航空公司、金立、海信、长虹、英特尔、阿尔法特、中国联通、华三、AIA、亿迅、中国电信、网龙、福赛、中国人寿、阳光保险、兴业银行等。 

找我报名有会员价哦。

 

 

 

 

 

你可能感兴趣的:(spark,大数据,Streaming,IMF,王家林,DT_Spark)