开发者社区> 学堂小助手> 正文

Kafka 数据源、Receiver 和 Direct 方式接收数据_3|学习笔记

简介: 快速学习 Kafka 数据源、Receiver 和 Direct 方式接收数据_3
+关注继续查看

开发者学堂课程【大数据实时计算框架 Spark 快速入门:Kafka 数据源、Receiver 和 Direct 方式接收数据_3】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/100/detail/1731


Kafka 数据源、Receiver 和 Direct 方式接收数据_3


不需要 Receivers:

Spark 1.3 引入了这种新的无接收端的“直接”方法,确保了更强的端到端保证。

这种方法不使用接收器来接收数据,而是定期查询 Katka 在每个主题+分区中的最新偏移量,并相应地定义在每个批次中处理的偏移量范围,当处理数据的作业启动时,Kafka 的简单消费者 AP 用于从 Kafka 读取定义的偏移范围(类似于从文件系统读取文件)。

注意,这是 Spark 1.3 中针对 Scala 和 Java AP 引入的实验性特性,在 Spark 1.4 中针对 Python API 引入的实验性特性。  

 

与基于接收方的方法(即方法 1 )相比,这种方法有以下优点。

简化的并行性:不需要创建多个输入 Katka 流并将它们联合起来。使用directStream. Spark Streaming 将创建与 Katka 分区一样多的 RDD 分区。它们将同时从Katka读取数据。所以 Katka 分区和 RDD 分区之间是一一对应的。这更容易理解和调整。

效率:要在第一种方法中实现零数据丢失,需要将数据存储在 Write Ahead Log中,这将进一步复制数据。

这实际上是低效的,因为数据被有效地复制了两次——一次由 Katka 复制,另一次由 Write Ahead Log 复制。

第二种方法消除了这个问题,因为没有接收器,因此不需要提前写入日志。只要你有足够的 Karka 保留,消息可以从 Kafka 恢复。

 

Exactly-once-semantics:第一种方法使用 Katka 的高级 APl 在 Zookeeper 中存储消耗的偏移量。

这是传统的来消费来自 Kafka 的数据。而这种方法(结合提前写日志)可以确保零数据丢失(即至少一次语义)。在某些失败情况下,有些记录有可能被消耗两次。

这是因为 Spark Streaming 可靠接收的数据与 Zookeeper 跟踪的偏移量之间不一致。

因此,在第二种方法中,我们使用了不使用 Zookeeper 的简单 Kaka API。

Spark Streaming 在其检查点内跟踪偏移量。这消除了 Spark 流和Zookeeper/Kafka 之间的不一致性,因此每个记录都被 Spark 流有效地精确接收一次,尽管失败。为了实现输出结果的精确一次语义。将数据保存到外部数据存储的输出操作必须是幂等的,或者是保存结果和偏移量的原子事务。

注意,这种方法的一个缺点是它不会在 Zookeeper 中更新偏移量,基于 Zookeeper 的 Kafka 监控不会显示进展。然而,你可以在每批中访问用这种方法处理的偏移量,并自己更新 Zookeeper。代码如下:

directKafikaStream.transformToPair(

new Function<JavaPairRDD<String,String>,3avaPairRDD<String,String>>( ){

@Override

public JavaPairRDDeString,String ca11(3avaPairRDDeString,Strings rdd) throws Exception {

OffsetRange[] offsets - ((HasOffsetRanges) rdd.rdd().offsetRanges();

offsetRanges.set(offsets);

return rdd;

}

}

). map(

).foreachRDD(

new Function<JavaPairRDD<String,String>, void>(){

@Override

public void call(JavaPairRDD-<String,Strings rdd) throws IOException {

for (OffsetRange o : offsetRanges.get({

System. out.peintln(

o.topic( + " " + o.partition() + " " + o.fromOffset( + "  " + o.unti1offset();

);

}

return null;

}

}

);

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Socket 接收和发送数据的深刻理解.
今天仔细研究了一下关于TCP/UDP接收和发送数据的具体实现和下层接收数据的缓冲区,原理UDP从数据缓冲区中接收数据的方式和TCP从缓冲区中读取数据的方式是不同的,UDP接收缓冲区中也会依次保存接收到的数据,如果缓冲区满了则再接收的数据就会丢失,UDP接收数据和发送数据的次数应该是相同的,UDP不管你每次接收的数据的多少,只要你接收了一次数据那么就相当于接收了发送端某次发送的数据,而不管你接收的多少,本次的数据都将清空,注意:这里说的是本次的数据。
789 0
C#工业物联网和集成系统解决方案的技术路线(数据源、数据采集、数据上传与接收、ActiveMQ、Mongodb、WebApi、手机App)
目       录 工业物联网和集成系统解决方案的技术路线... 1 前言... 1 第一章           系统架构... 3 1.1           硬件构架图... 3 1.2           组件构架图.
1282 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20487 0
Apache Kafka学习 (一)
前言:最近公司开始要研究大数据的消息记录,于是开始研究kafka。 市面上kafka的书很少,有的也版本比较落后,于是仗着自己英文还不错,上官网直接学习。 ^_^   1. 开始 - 基本概念 学习一样东西,我们首先要知道它是什么。
1168 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
28695 0
新型可扩展的数据保护方式——擦除编码
一、概述   在之前存储系统中,一般都采用RAID技术来对数据进行保护,一旦阵列中某块硬盘损坏,可通过RAID技术所形成的镜像来对丢失数据进行恢复。但随着海量数据问题的出现,RAID越来越难发挥其作用。
1235 0
关于hive数据导入方式的总结
从本地导入数据到hive: load data local inpath '/home/hive/tb_dw_cu_three_type_list_dtal/*.dat' overwrite into table csap.tb_dw_cu_three_type_list_dtal  partition(statis_date=20160121); 从HDFS直接导入数据到hive:
2042 0
1783
文章
0
问答
来源圈子
更多
技术图谱:由专家组参与技术图谱的绘制与编写,知识与实践的结合让开发者们掌握学习路线与逻辑,快速提升技能 电子书:电子书由阿里内外专家打造,供开发者们下载学习,更与课程相结合,使用户更易理解掌握课程内容 训练营:学习训练营 深入浅出,专家授课,带领开发者们快速上云 精品课程:汇集知识碎片,解决技术难题,体系化学习场景,深入浅出,易于理解 技能自测:提供免费测试,摸底自查 体验实验室:学完即练,云资源免费使用
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载