大数据Spark企业级实战版【学习笔记】-----Spark Streaming案例分析
2017-08-29 15:23
651 查看
1.3.2.3 Spark Streaming案例分析
在互联网应用中,网站流量统计作为一种常用的应用模式,需要在不同粒度上对不同数据进行统计,既有实时性需求,又需要涉及聚合、去重、连接等较为复杂的需求统计。传统上,若使用Hadoop MapReduce框架,可以容易地实现较为复杂的统计需求,但实时性却无法保证;若是采用Storm这样的流式框架,实时性可以得到保证,但需求的实现复杂度也大大提高。Spark Streaming在两者之间找到一个平衡点,能够以准实时的方式,容易实现较为复杂的统计需求。Kafka和SparkStreaming搭建实时流量统计框架:
l 数据暂存:Kafka作为分布式消息队列,既有非常优秀的吞吐量,又有较高的可靠性和扩展性,在这里采用Kafka作为日志传递中间件来接收日志,抓取客户端发送的流量日志,同时接收Spark Streaming的请求,将流量日志按序列发送给Spark Streaming集群。
l 数据处理:将SparkStreaming集群与Kafka集群对接,SparkStreaming从Kafka集群中获取流量日志并进行处理。Spark Streaming会实时地从Kafka集群中获取数据并将其存储在内部的可用内存空间中。当每一个batch窗口到来时,便对这些数据进行处理。
l 结果存储:为了便于前端展示和页面请求,处理得到的结果将写入到数据库中。
Kafka+Spark Streaming的框架有以下优点:
1.Spark框架的高效和低延迟保证了Spark Streaming操作的准实时性。
2.利用Spark框架提供的丰富API和高灵活性,可以精简地写出较为复杂的算法。
3.编程模型的高度一致使得上手SparkStreaming相当容易,同时也可以保证业务逻辑在实时处理和批处理上的复用。
在基于Kafka+Spark Streaming的流量统计应用运行过程中,有时会遇到内存不足、GC阻塞等各种问题。如何对Spark Streaming应用程序进行调优来减少甚至避免这些问题的影响?
1. 优化运行时间:
l 增加并行度。确保使用整个集群的资源,而不是把任务集中在几个特定的节点上。对于包含shuffle的操作,增加并行度以确保更为充分地使用集群资源。
l 减少数据序列化、反序列化的负担。Spark Streaming默认将接收到的数据序列化后存储以减少内存的使用。但序列化和反序列化需要更多的CPU时间,因此更加高效的序列化方式(Kryo)和自定义的序列化接口可以更高效地使用CPU。
l 设置合理的batch窗口。在SparkStreaming中,Job之间有可能存在着依赖关系,后面的Job必须确保前面的Job执行结束后才能提交。
2. 优化内存使用
l 控制batch size。Spark Streaming会把batch窗口内接收到的所有数据存放在Spark内部的可用内存区域中。
l 及时清理不再使用的数据。通过设置合理的spark.cleaner.ttl时长来及时清理超时的无用数据。
l 观察及适当调整GC策略。GC会影响Job的正常运行,延长Job的执行时间,引起一系列不可预料的问题。
相关文章推荐
- 大数据Spark企业级实战版【学习笔记】-----Spark Streaming 的构架
- 大数据Spark企业级实战版【学习笔记】-----Spark Streaming的编程模式
- 大数据Spark企业级实战版【学习笔记】--------开篇
- 大数据Spark企业级实战版【学习笔记】----Spark Streaming
- 大数据Spark企业级实战版【学习笔记】----Tachyon& BlinkDB&Akka
- 大数据Spark企业级实战版【学习笔记】----Spark术语
- 大数据Spark企业级实战版【学习笔记】----Spark速度为何如此快
- 大数据Spark企业级实战版【学习笔记】----Spark Shark& Spark SQL
- 第113课:Spark Streaming电商广告点击综合案例实战模拟点击数据的生成和数据表SQL建立
- 大数据spark“蘑菇云”行动超大型项目实战第68课:spark RDD案例和spark sql案例对比实战 看电影的例子分析 某门热门电影的年龄、性别分析
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- 大数据Spark “蘑菇云”行动第80课:Spark GraphX 综合案例分析与实战
- 第87课:Flume推送数据到SparkStreaming案例实战和内幕源码解密
- Flume推送数据到SparkStreaming案例实战和内幕源码解密
- 大数据IMF传奇行动绝密课程第82课:Spark Streaming案例动手实战并在电光石火间理解其工作原理
- 第90讲,Spark streaming基于kafka 以Receiver方式获取数据 原理和案例实战
- 【数据分析 R语言实战】学习笔记 第十一章 对应分析
- 第87讲:Flume推送数据到SparkStreaming案例实战和内幕源码解密
- 第87课:Flume推送数据到SparkStreaming案例实战和内幕源码解密--flume安装篇