SparkStreaming笔记
2016-04-06 23:33
351 查看
1.SparkStreaming的批处理时间间隔
很容易陷入的一个误区就是,以为时间间隔30秒就是每30秒从kafka读取一次。其实不然,可以理解为数据向水流一样源源不断的从kafka中读取出来(只要定义了DStream,Spark程序就会将接收器在各个节点上启动,接收器会以独立线程的方式源源不断的接受数据),每积累30秒钟的数据作为一个RDD供进行一次处理。
2.性能优化可以思考的途径:
a.增加并行度---------可以理解为增加executor-cores,尤其是与kafka的partition数目相同为佳,可以并行读
b.减少序列化/反序列化的负担-------用更优化的序列化方式Kryo
c.设置合适的批处理时间间隔----因为作业之间存在先后关系,后一个作业必须等待前一个作业处理完成再开始;所以最好的实时处理的状态是,每一次批处理间隔都可以正好可以处理完成上一次时间间隔积累的数据;否则,则会造成后序作业的阻塞,不能满足实时的要求
d.减小因任务提交和分发所带来的负担----据说standalone和coarse-gained mesos会比较好;但我们已经是确定用yarn提交任务了,所以此点不具备参考价值
3.内存使用优化
a.要确保内存至少能够满足能够容纳当前一次批处理作业的所有数据,否则就应该增加内存
b.设置合适的spark.cleaner.ttl时长清理无用数据---需要小心设置以防止数据被超时错误清理;更合适的方式是将spark.streaming.unpersist设置为true,使得系统能够自动清理不再需要使用的RDD
c.设置合适的GC策略
4.作业的调度
我们对于Dstream的转换与操作,最终都会转换为操作链;但整个链并不会立即执行,它会在StreamingContext启动后执行。
Spark维护了一个周期定时器,每到一个时间间隔,就会产生一个作业;作业之间是有先后关系的,默认情况下一次运行一个,但也可以修改spark.streaming.concurrentJobs来配置并行的作业数目(这个参数可能还是存在一定风险的,如果作业存在写操作,那就可能需要考虑规避写冲突?)
很容易陷入的一个误区就是,以为时间间隔30秒就是每30秒从kafka读取一次。其实不然,可以理解为数据向水流一样源源不断的从kafka中读取出来(只要定义了DStream,Spark程序就会将接收器在各个节点上启动,接收器会以独立线程的方式源源不断的接受数据),每积累30秒钟的数据作为一个RDD供进行一次处理。
2.性能优化可以思考的途径:
a.增加并行度---------可以理解为增加executor-cores,尤其是与kafka的partition数目相同为佳,可以并行读
b.减少序列化/反序列化的负担-------用更优化的序列化方式Kryo
c.设置合适的批处理时间间隔----因为作业之间存在先后关系,后一个作业必须等待前一个作业处理完成再开始;所以最好的实时处理的状态是,每一次批处理间隔都可以正好可以处理完成上一次时间间隔积累的数据;否则,则会造成后序作业的阻塞,不能满足实时的要求
d.减小因任务提交和分发所带来的负担----据说standalone和coarse-gained mesos会比较好;但我们已经是确定用yarn提交任务了,所以此点不具备参考价值
3.内存使用优化
a.要确保内存至少能够满足能够容纳当前一次批处理作业的所有数据,否则就应该增加内存
b.设置合适的spark.cleaner.ttl时长清理无用数据---需要小心设置以防止数据被超时错误清理;更合适的方式是将spark.streaming.unpersist设置为true,使得系统能够自动清理不再需要使用的RDD
c.设置合适的GC策略
4.作业的调度
我们对于Dstream的转换与操作,最终都会转换为操作链;但整个链并不会立即执行,它会在StreamingContext启动后执行。
Spark维护了一个周期定时器,每到一个时间间隔,就会产生一个作业;作业之间是有先后关系的,默认情况下一次运行一个,但也可以修改spark.streaming.concurrentJobs来配置并行的作业数目(这个参数可能还是存在一定风险的,如果作业存在写操作,那就可能需要考虑规避写冲突?)
相关文章推荐
- LeetCode *** 83. Remove Duplicates from Sorted List
- String、StringBuffer和StringBuilder的区别(一)
- React Native配置和使用
- 第七章读书笔记——链接
- 设计模式之适配器模式 Adapter
- BroadcastReceiver
- JavaScript编程题(含腾讯2016校招题)
- mysql必知必会--第二回 排序检索数据
- 作业4
- OSX + OGRE + XCode
- (转)python爬取拉勾网信息
- Maven之自定义archetype生成项目骨架
- HTML小知识点积累
- android系统功能调用(Notification、广播开机自启动、A应用启动B应用)
- window利用ssh连接上传文件及解压及乱码问题的一系列处理
- JavaSE学习笔记(2016.4.6)
- C++重要的几个概念
- 简单的leetcode(二)
- Linux 升级 Python 至 3.x
- bzoj3109【CQOI2013】新数独