本期内容 :

  • Direct Acess
  • Kafka

  Spark Streaming接收数据现在支持的两种方式:

  01、 Receiver的方式来接收数据,及输入数据的控制

  02、 No Receiver的方式

  以上两种方式中,No Receiver的方式更符合读取、操作数据的思路,Spark作为一个计算框架他的底层有数据来源,也就是直接操作数据来源中的数据,

  如果操作数据来源的话肯定需要一个封装器,这个封装的类型一定是RDD的封装类型,Spark Streaming为了封装类型推出了自定义的RDD是KafkaRDD。

一、  No Receivers:   

  基于Spark Streaming的Bach-Oriented接口是在Kafka消费数据的一个实现,实现需要确定开始与结束的Offset(数据偏移量),Broker是Kafka中的概念,

  也就是Spark Streaming直接去操作Kafka中的数据。

  

  

 

  在ForEachRDD中可以获取OffsetRanges中产生所有分区的数据,即对源数据的控制。

  

  

  

封装了一个与Kafka的交互而已。

  

  

二、 DirectKafkaInPutDStreams :

  在实际运行的时候会产生KafkaRDD ,不同的Topic对应不同生成的Partition ,RatePerPartition控制了每秒所能够消费数据的速度,交互接口是KafkaCluster

  

 KafkaRDD本身包含很多Partition ,他有多少Partition就对应多少KafkaPartition

  

作为一个KafkaPartition 核心的方法就是消费多少数据,而且KafkaRDD的一个Partition只能属于一个Topic的,其实一般就是直接消费了一个Kafka的Topic

  

是从KafkaRDD的角度看,下一步就是读取数据。

  

  

直接抓Kafka数据的方式与Receiver的方式的实际价值 :

  1、 Direct的方式读取数据,因为Direct是没有缓存的,也就是不存在内存溢出等问题,

  2、 使用Receiver的方式去读取数据是存在缓存问题

  2、 使用Direct的方式,KafkaRDD默认数据就是分布在多个Executor ,KafkaRDD默认就是分布式的

  3、 使用Receiver的方式,默认情况下是和具体的Worker的Executor绑定了,Receiver方式是不方便做分布式,但是需要配置才可以做分布式的

  4、如果是Direct方式是直接读取Kafka数据,Dream多少次都无所谓,如果Dream就不会再进行下一步的处理了

  5、 使用Receiver方式,如果数据来不及处理,也就是数据操作Dream,如果操作多次Spark程序可能程序崩溃

Spark Streaming源码解读之No Receivers彻底思考的更多相关文章

  1. 15、Spark Streaming源码解读之No Receivers彻底思考

    在前几期文章里讲了带Receiver的Spark Streaming 应用的相关源码解读,但是现在开发Spark Streaming的应用越来越多的采用No Receivers(Direct Appr ...

  2. Spark Streaming源码解读之JobScheduler内幕实现和深度思考

    本期内容 : JobScheduler内幕实现 JobScheduler深度思考 JobScheduler 是整个Spark Streaming调度的核心,需要设置多线程,一条用于接收数据不断的循环, ...

  3. Spark Streaming源码解读之流数据不断接收和全生命周期彻底研究和思考

    本节的主要内容: 一.数据接受架构和设计模式 二.接受数据的源码解读 Spark Streaming不断持续的接收数据,具有Receiver的Spark 应用程序的考虑. Receiver和Drive ...

  4. 11.Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究

    上篇文章详细解析了Receiver不断接收数据的过程,在Receiver接收数据的过程中会将数据的元信息发送给ReceiverTracker:   本文将详细解析ReceiverTracker的的架构 ...

  5. Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考

    本期内容 : 数据接收架构设计模式 数据接收源码彻底研究 一.Spark Streaming数据接收设计模式   Spark Streaming接收数据也相似MVC架构: 1. Mode相当于Rece ...

  6. Spark Streaming源码解读之Receiver生成全生命周期彻底研究和思考

    本期内容 : Receiver启动的方式设想 Receiver启动源码彻底分析 多个输入源输入启动,Receiver启动失败,只要我们的集群存在就希望Receiver启动成功,运行过程中基于每个Tea ...

  7. Spark Streaming源码解读之生成全生命周期彻底研究与思考

    本期内容 : DStream与RDD关系彻底研究 Streaming中RDD的生成彻底研究 问题的提出 : 1. RDD是怎么生成的,依靠什么生成 2.执行时是否与Spark Core上的RDD执行有 ...

  8. Spark Streaming源码解读之Job动态生成和深度思考

    本期内容 : Spark Streaming Job生成深度思考 Spark Streaming Job生成源码解析 Spark Core中的Job就是一个运行的作业,就是具体做的某一件事,这里的JO ...

  9. 16.Spark Streaming源码解读之数据清理机制解析

    原创文章,转载请注明:转载自 听风居士博客(http://www.cnblogs.com/zhouyf/) 本期内容: 一.Spark Streaming 数据清理总览 二.Spark Streami ...

随机推荐

  1. 【jq】c#零基础学习之路(5)自己编写简单的Mylist<T>

    public class MyList<T> where T : IComparable { private T[] array; private int count; public My ...

  2. Chromuim proxy Api 提取代里proxy调用Chrome隐身多窗口 多COOKIE 工具

    Chromuim proxy Api提取proxy调用Chrome隐身 多COOKIES 多窗口工具每一个代理拥有一个独立的窗口和USERDATA 独立COOKIES 伪装UA UA:<scri ...

  3. Fiddler (HTTP抓包)简介

    1.什么是Fiddler? Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一.它能够记录客户端和服务器之间的所有HTTP请求,可以针对特定的HTTP请求,分析请 ...

  4. 关于python如何简单跳出多层循环

    上述代码的逻辑是,在跳出子循环之前定义一个变量flag为Ture,第一层循环跳出之后,如果要跳出第二个循环,直接调用变量flag,可以直接跳出第二层循环.这里要注意的是缩进,不然会出错误. 如果是多层 ...

  5. 前端JavaScript规范

    前端JavaScript规范 http://www.imooc.com/article/1402 http://greengerong.com/blog/2015/05/09/qian-duan-ja ...

  6. TOMCAT 无法安装P7B格式的证书

    背景:通过按以下链接的方式生成了CSR文件,并申请到P7B格式的证书 现象:TOMCAT安装该证书时,要求输入Keystore key, 但是P7B证书自身并不携带私钥.导致无法通过TOMCAT安装该 ...

  7. Windows 2012 中文乱码的解决办法

    背景:服务器安装2012 R2英文环境,软件为中文显示.已下载中文语言包安装到服务器上 现象:TXT文档的中文在服务器上打开显示为乱码,复制到本地电脑上可正常显示 解决办法:控制面板-语言-更改日期. ...

  8. 获取tp-link中的拨号密码

    一日,公司网络巨慢,丢包非常严重,打电话给电信,说信号稳定,可能是我们的路由器有问题,让我们直接用电脑拨号 心中一闷,鬼知道拨号密码是多少,于是百度了一下,大概有以下几种方法 一.使用工具,把路由器的 ...

  9. Microsoft Visual Studio 2013 Update 5 direct download link for full ISO

    From:http://www.nickdu.com/?p=604 Visual Studio 2013 Update 5 is now released and maybe you are also ...

  10. css 多个不定数量提交按钮居中显示,纯css解决

    前几天在公司修改一个css 多个按钮居中问题,其实这样的问题很多前端程序员都遇到过,举个例子吧: 在一行中有三个按钮或是两个按钮...个数不定,然后间距固定:然后就有很多人把所有按钮放到一个div中, ...