总的来说,需要考虑以下两点: 1. 有效地运用集群资源去减少每个批次处理的时间 2. 正确的设置batch size,以使得处理速度能跟上接收速度 一.  为了减少处理时间,主要有以下几个优化点: 1. 接收数据的并行度. 每个InputDStream只创建一个Receiver用于接收数据,如果接收数据是系统的瓶颈,可以创建多个InputDStream.配置不同的InputDStream读取数据源的不同分区.比如原先用一个InputDStream读取Kafka的两个topic的数据,可以拆分成两…
1. 数据序列化 默认使用的是Java自带的序列化机制.优点是可以处理所有实现了java.io.Serializable 的类.但是Java 序列化比较慢. 可以使用Kryo序列化机制,通常比Java 序列化机制性能高10倍.但是并不支持所有实现了java.io.Serializable 的类.使用 conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer") 开启Kryo序列化…
官方文档地址:http://spark.apache.org/docs/latest/streaming-programming-guide.html Spark Streaming是spark api的扩展 能实现可扩展,高吞吐,可容错,的流式处理 从外接数据源接受数据流,处理数据流使用的是复杂的高度抽象的算法函数map reduce join window等 输出的数据可以存储到文件系统和数据库甚至是直接展示在命令行 也可以应用ml 和graph processing在这些数据流上 spar…
Accumulators and Broadcast Variables 这些不能从checkpoint重新恢复 如果想启动检查点的时候使用这两个变量,就需要创建这写变量的懒惰的singleton实例. 下面是一个例子: def getWordBlacklist(sparkContext): if ('wordBlacklist' not in globals()): globals()['wordBlacklist'] = sparkContext.broadcast(["a", &…
shuffle调优参数 new SparkConf().set("spark.shuffle.consolidateFiles", "true") spark.shuffle.consolidateFiles:是否开启shuffle block file的合并,默认为false//设置从maPartitionRDD上面到到下个stage的resultTask时数据的传输快可以聚合(具体原理可以看下shuffle的原理设置和没设置的区别)spark.reducer.m…
1.数据倾斜 数据倾斜指的是,并行处理的数据集中,某一部分(如Spark或Kafka的一个Partition)的数据显著多于其它部分,从而使得该部分的处理速度成为整个数据集处理的瓶颈. 数据倾斜俩大直接致命后果. 1.数据倾斜直接会导致一种情况:Out Of Memory. 2.运行速度慢. 主要是发生在Shuffle阶段.同样Key的数据条数太多了.导致了某个key(下图中的80亿条)所在的Task数据量太大了.远远超过其他Task所处理的数据量. 一个经验结论是:一般情况下,OOM的原因都是…
官网文档:<http://spark.apache.org/docs/latest/streaming-programming-guide.html#a-quick-example> Spark Streaming提供的提供的理念是一个批次处理一定时间段内的数据,一批次处理接收到的这一批次的数据:而Structured Streaming提供的理念是使用DataFrame/DataSet方式接收流,这样的流是一个可以看做为一个无界的大表,可以持续输出统计结果,而统计结果也会跟随时间(流数据的流…
本文讲解Spark流数据处理之Spark Streaming.本文的写作时值Spark 1.6.2发布之际,Spark 2.0预览版也已发布,Spark发展如此迅速,请随时关注Spark Streaming官方文档以了解最新信息. 文中对Spark Streaming的讲解主要使用到Scala语言,其他语言请参考官方文档,这点请知晓. 概述 Spark Streaming是Spark核心API的扩展,用于可伸缩.高吞吐量.可容错地处理在线流数据.Spark Streaming可以从很多数据源获取…
Spark调优 | Spark Streaming 调优 1.数据序列化 2.广播大变量 3.数据处理和接收时的并行度 4.设置合理的批处理间隔 5.内存优化 5.1 内存管理 5.2优化策略 5.3垃圾回收(GC)优化 5.5Spark Streaming 内存优化 6.实例项目调优 6.1合理的批处理时间(batchDuration) 6.2合理的 Kafka 拉取量(maxRatePerPartition 参数设置) 6.3缓存反复使用的 Dstream(RDD) 6.4其他一些优化策略…
摘抄自:https://tech.meituan.com/spark-tuning-basic.html 前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作,应用范围与前景非常广泛.在美团•大众点评,已经有很多同学在各种项目中尝试使用Spark.大多数同学(包括笔者在内),最初开始尝试使用Spark的原因很简单,主要就是为了让大数据计算作业的执行速…