spark streaming总结

SparkStreaming可通过`spark.streaming.kafka.maxRatePerPartition`参数控制从Kafka每秒消费的数据量。它包含UpdateStateByKey和Window两种状态操作,使用时需开启Checkpoint以实现容错。SparkStreaming的容错机制依赖于Checkpoint到HDFS等可靠存储,确保数据恢复。在YARN上,Spark可以部署在cluster或client模式。为了优雅关闭,需设置`spark.streaming.stopGracefullyOnShutdown`。启用WAL(预写日志)能提高driver容错性。性能优化包括合理使用RDD缓存、join优化、高效算子及减少网络IO。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spark Streaming控制每秒消费数据的速度

通过spark.streaming.kafka.maxRatePerPartition参数来设置Spark Streaming从kafka分区每秒拉取的条数

Spark Streaming的状态操作

在Spark Streaming中存在两种状态操作

UpdateStateByKey
Windows操作
使用有状态的transformation,需要开启Checkpoint

spark streaming 的容错机制
它将足够多的信息checkpoint到某些具备容错性的存储系统如hdfs上,以便出错时能够迅速恢复

Spark Streaming精准一次消费
  1. 手动维护偏移量
  2. 处理完业务数据后,再进行提交偏移量操作
运行模式(cluster模式和client模式)

1.cluster模式

./bin/spark-submit --class org.apache.spark.examples.SparkPi
–master yarn
–deploy-mode cluster
–driver-memory 1g
–executor-memory 1g
–executor-cores 2
–queue default
lib/spark-examples*.jar

./bin/spark-submit --class cn.edu360.spark.day1.WordCount
–master yarn
–deploy-mode cluster
–driver-memory 1g
–executor-memory 1g
–executor-cores 2
–queue default
/home/bigdata/hello-spark-1.0.jar
hdfs://node-1.edu360.cn:9000/wc hdfs://node-1.edu360.cn:9000/out-yarn-1
2.client模式

./bin/spark-submit --class org.apache.spark.examples.SparkPi
–master yarn
–deploy-mode client
–driver-memory 1g
–executor-memory 1g
–executor-cores 2
–queue default
lib/spark-examples*.jar \

Spark容错性分析

4.1 Worker容错:
同Spark:worker挂了将会导致partition失效,如果task依赖的上层partition数据已经失效了,则会先将其依赖的partition计算任务再重算一遍。

4.2 Driver容错:
1.Driver的出错情况

(1)当数据源(InputStream)是HDFS时,driver数据恢复机制不重要

(2)当数据源是kafka、Flume时,由于数据被worker executor接收至内存中,若driver挂了,executor内存中的数据就不可用了,此时需要容错机制——主要依赖预写日志(WAL)和持久化日志。

checkpointing机制

spark streaming主要机制checkpointing,它将数据存储在一个可靠的文件系统,比如hdfs.我们将会讨论怎样设置自动重启应用程序.
spark1.1仅支持Java和Scala。spark1.2支持Python,尽管如此它支持仅text数据。

checkpoint的作用,用于恢复数据。它会定期保存状态到可靠的文件系统比如hdfs,s3
比如你每5-10批数据设置checkpointing。当发生丢失数据的时候,Spark Streaming最近的checkpoint.

Spark Streaming 一个stage耗时

Spark Streaming stage耗时由最慢的task决定,所以数据倾斜时某个task运行慢会导致整个Spark Streaming都运行非常慢。

系统组件
  • Master:记录DStream之间的依赖关系或者血缘关系,并负责任务调度以生成新的RDD
  • Worker:从网络接收数据,存储并执行RDD计算
  • Client:负责向Spark Streaming中灌入数据
    Network Input Tracker:跟踪每一个网络received数据,并且将其映射到相应的input DStream上
  • Job Scheduler:周期性的访问DStream Graph并生成Spark Job,将其交给Job Manager执行
  • Job Manager:获取任务队列,并执行Spark任务
Spark Streaming 优雅关闭

把spark.streaming.stopGracefullyOnShutdown参数设置成ture,Spark会在JVM关闭时正常关闭StreamingContext,而不是立马关闭
Kill 命令:yarn application -kill 后面跟 applicationid

启动WAL的配置

(1)给StreamingContext设置checkpoint的目录,该目录必须是HADOOP支持的文件系统,用来保存WAL和做Streaming的checkpoint
(2)Spark.Streaming.receiver.writeAheadLog.enable 设置为true

Spark性能优化
  1. 多个Action计算最好基于同一个RDD进行计算操作, 并且对相同的RDD进行Cache操作,避免重复计算,增加任务的执行时间;并且持久化级别最好使用MEMORY_ONLY_SER来减少内存使用;
  2. 在使用join的地方看是否可以使用map算子和广播变量的方式替代;
  3. 使用高效的算子, 例如:使用reduceByKey/aggregateByKey来代替groupByKey,因为前者可以进行combiner操作,减少网络IO;
    使用MapPartition来代替Map操作, 尤其是在需要网络连接的地方;
  4. 使用foreachPartition代替foreach操作,可以对数据进行批量处理;
  5. 在filter操作后,可以使用colease操作,可以减少任务数;
  6. 序列化尽量使用Kyro方式, 其性能更好;
  7. 减少对复杂数据结构的使用,可以有效减少序列化时间;
  8. 对应简单的函数,最好使用闭合结构,可以有效减少网络IO;
  9. 使用Repartition操作可以有效增加任务的处理并行度;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值