Spark Streaming 交互 Kafka的两种方式

一、Spark Streaming连Kafka(重点)

方式一:Receiver方式连:走磁盘

使用High Level API(高阶API)实现Offset自动管理,灵活性差,处理数据时,如果某一时刻数据量过大就会磁盘溢写,通过WALS(Write Ahead Logs)进行磁盘写入,0.10版本之后被舍弃,

相当于一个人拿着一个水杯去接水,水龙头的速度不定,水杯撑不下就会往盆(磁盘)中接。

zookeeper自动管理偏移量

Receiver方式说明:Receiver会以固定的时间向kafka中通过zookeeper自动管理偏移量拉取数据,当拉取的数据过多Executor处理不完就会落入磁盘中,

方式二:Direct方式直连:不走磁盘

使用Direct API(底层API)实现Offset偏移量自定义管理,灵活性极高,保证了数据的安全性,不用担心数据量过大,因为它有预处理机制,进行提前处理,之后批次提交任务。

相当于将水管直接拉到了需要用的地方,中间有预处理机制。不经过磁盘

实现自己维护偏移量(偏移量可以保存到MySQL,Redis,zookeeper)中

SparkStreaming的Receiver方式和Direct直连方式有什么区别?

Receiver接收固定时间间隔的数据(放在内存中的),使用Kafka高级到API,自动维护偏移量,达到固定的时间才进行处理,效率低并且容易丢失数据

Direct直连方式,相当于连接到Kafka的分区上,使用Kafka底层的API,效率高,需要自己维护偏移量。

原文地址:https://www.cnblogs.com/gentle-awen/p/10005913.html

时间: 2024-07-31 18:27:11

Spark Streaming 交互 Kafka的两种方式的相关文章

sparkStreaming读取kafka的两种方式

概述 Spark Streaming 支持多种实时输入源数据的读取,其中包括Kafka.flume.socket流等等.除了Kafka以外的实时输入源,由于我们的业务场景没有涉及,在此将不会讨论.本篇文章主要着眼于我们目前的业务场景,只关注Spark Streaming读取Kafka数据的方式. Spark Streaming 官方提供了两种方式读取Kafka数据: 一是Receiver-based Approach.该种读取模式官方最先支持,并在Spark 1.2提供了数据零丢失(zero-d

Java接入Spark之创建RDD的两种方式和操作RDD

首先看看思维导图,我的spark是1.6.1版本,jdk是1.7版本 spark是什么? Spark是基于内存计算的大数据并行计算框架.Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark 部署在大量廉价硬件之上,形成集群. 下载和安装 可以看我之前发表的博客 Spark安装 安装成功后运行示例程序 在spark安装目录下examples/src/main目录中. 运行的一个Java或Scala示例程序,使用bin/run-examp

Spark基于Yarn提交任务两种方式

yarn-client提交任务方式 客户端提交一个Application,在客户端启动一个Driver进程 Driver进程会向RS(ResourceManager)发送请求,启动AM(ApplicationMaster)的资源 RS收到请求,随机选择一台NM(NodeManager)启动AM.这里的NM相当于Standalone中的Worker节点 AM启动后,会向RS请求一批container资源,用于启动Executor RS会找到一批NM返回给AM,用于启动Executor AM会向NM

.Spark基于Standalone提交任务两种方式

Standalone-client模式: 1.client模式提交任务后,会在客户端启动Driver进程2.Driver会向Master申请启动Application启动的资源3.资源申请成功,Driver端将task发送到worker端执行4.worker将task执行结果返回到Driver端   Standalone-master模式: 1.cluster模式提交应用程序后,会向Master请求启动Driver.(而不是启动application)2.Master接受请求,随机在集群一台节点

spark streaming 对接kafka记录

spark streaming 对接kafka 有两种方式: 参考: http://group.jobbole.com/15559/ http://blog.csdn.net/kwu_ganymede/article/details/50314901 Approach 1: Receiver-based Approach 基于receiver的方案: 这种方式使用Receiver来获取数据.Receiver是使用Kafka的高层次Consumer API来实现的.receiver从Kafka中获

Spark Streaming整合Kafka

0)摘要 主要介绍了Spark Streaming整合Kafka,两种整合方式:Receiver-based和Direct方式.这里使用的是Kafka broker version 0.8.2.1,官方文档地址:(http://spark.apache.org/docs/2.2.0/streaming-kafka-0-8-integration.html). 1)Kafka准备 启动zookeeper ./zkServer.sh start 启动kafka ./kafka-server-star

spark streaming 接收kafka消息之一 -- 两种接收方式

源码分析的spark版本是1.6. 首先,先看一下 org.apache.spark.streaming.dstream.InputDStream 的 类说明: This is the abstract base class for all input streams. This class provides methods start() and stop() which is called by Spark Streaming system to start and stop receivi

Spark Streaming 读取 Kafka 数据的两种方式

在Spark1.3之前,默认的Spark接收Kafka数据的方式是基于Receiver的,在这之后的版本里,推出了Direct Approach,现在整理一下两种方式的异同. 1. Receiver-based Approach val kafkaStream = KafkaUtils.createDstream(ssc, [zk], [consumer group id], [per-topic,partitions] ) 2. Direct Approach (No Receivers) v

Spark RDD转换成DataFrame的两种方式

Spark SQL支持两种方式将现有RDD转换为DataFrame.第一种方法使用反射来推断RDD的schema并创建DataSet然后将其转化为DataFrame.这种基于反射方法十分简便,但是前提是在您编写Spark应用程序时就已经知道RDD的schema类型.第二种方法是通过编程接口,使用您构建的StructType,然后将其应用于现有RDD.虽然此方法很麻烦,但它允许您在运行之前并不知道列及其类型的情况下构建DataSet 方法如下 1.将RDD转换成Rows 2.按照第一步Rows的结