网站大量收购独家精品文档,联系QQ:2885784924

SparkStreaming性能调优详解.PDF

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SparkStreaming性能调优详解.PDF

Spark Streaming性能调优详解 Spark大数据博客 - Spark Streaming性能调优详解 Spark Streaming提供了高效便捷的流式处理模式,但是在有些场景下,使用默认的配置达不 到最优,甚至无法实时处理来自外部的数据,这时候我们就需要对默认的配置进行相关的修改。 由于现实中场景和数据量不一样,所以我们无法设置一些通用的配置(要不然Spark Streaming开 发者就不会弄那么多参数,直接写死不得了),我们需要根据数据量,场景的不同设置不一样的 配置,这里只是给出建议,这些调优不一定试用于你的程序,一个好的配置是需要慢慢地尝试。 1、设置合理的批处理时间(batchDuration)。 在构建StreamingContext的时候,需要我们传进一个参数,用于设置Spark Streaming批处 理的时间间隔。Spark会每隔batchDuration时间去提交一次Job,如果你的Job处理的时间超过了b atchDuration的设置,那么会导致后面的作业无法按时提交,随着时间的推移,越来越多的作业 被拖延,最后导致整个Streaming作业被阻塞,这就间接地导致无法实时处理数据,这肯定不是 我们想要的。 另外,虽然batchDuration的单位可以达到毫秒级别的,但是经验告诉我们,如果这个值过 小将会导致因频繁提交作业从而给整个Streaming带来负担,所以请尽量不要将这个值设置为小 于500ms。在很多情况下,设置为500ms性能就很不错了。 那么,如何设置一个好的值呢?我们可以先将这个值位置为比较大的值(比如10S),如果 我们发现作业很快被提交完成,我们可以进一步减小这个值,知道Streaming作业刚好能够及时 处理完上一个批处理的数据,那么这个值就是我们要的最优值。 如果想及时了解Spark、Hadoop或者Hbase相关的文章,欢迎关注微信公共帐号:iteblog_hadoop 2、增加Job并行度 1 / 3 Spark Streaming性能调优详解 Spark大数据博客 - 我们需要充分地利用集群的资源,尽可能的将Task分配到不同的节点,一方面可以充分利用 集群资源;另一方面还可以及时的处理数据。比如我们使用Streaming接收来自Kafka的数据,我 们可以对每个Kafka分区设置一个接收器,这样可以达到负载均衡,及时处理数据(关于如何使用 Streaming读取Kafka中的数据,可以参见 《Spark Streaming和Kafka整合开发指南(一)》和 《Spark Streaming和Kafka整合开发指南(二)》)。 再如类似reduceByKey()和Join函数都可以设置并行度参数。 3、使用Kryo系列化。 Spark默认的是使用Java内置的系列化类,虽然可以处理所有自继承java.io.Serializable的类 系列化的类,但是其性能不佳,如果这个成为性能瓶颈,可以使用Kryo系列化类,关于如何在Sp ark中使用Kroy,请参见 《在Spark中自定义Kryo序列化输入输出API》 。使用系列化数据可以很好地改善GC行为。 4、缓存需要经常使用的数据 对一些经常使用到的数据,我们可以显式地调用rdd.cache()来缓存数据,这样也可以加快数 据的处理,但是我们需要更多的内存资源。 5、清除不需要的数据 随着时间的推移,有一些数据是不需要的,但是这些数据是缓存在内存中,会消耗我们宝贵 的内存资源,我们可以通过配置spark.cleaner.ttl为一个合理的值;但是这个值不能过小,因为如 果后面计算需要用的数据被清除会带来不必要的麻烦。而且,我们还可以配置选项spark.streami ng.unpersist为true(默认就是true)来更智能地去持久化(unpersist)RDD。这个配置使系统找出 那些不需要经常保有的RDD,然后去持久化它们。这可以减少Spark RDD的内存使用,也可能改善垃圾回收的行为。 6、设置合理的GC GC是程序中最难调的一块,不合理的GC行为

文档评论(0)

tangtianxu1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档