Spark streaming:批处理时间缓慢增加
Spark streaming : batch processing time slowly increase
我将 spark 与 cassandra spark 连接器一起使用,并直接使用 kafka。
而且我的种子批量处理随着时间的推移缓慢增加。
即使没有什么要处理来自 kafka 的传入。
我觉得按batch大概是几毫秒,但是时间长了,一个batch可能要多几秒,直到达到batch interval,最后crash。
我一开始以为是内存泄漏,但我认为处理时间不是线性的,而是呈指数增长的。
真不知道是stage越来越长还是潜伏期
增加的阶段之间。
我用的是spark 1.4.0
对此有任何指示吗?
编辑:
仔细查看每批处理时间的演变,比较总作业处理时间。
而且看起来即使批处理时间增加,作业处理时间也没有增加。
示例:对于需要 7 秒的批处理,每个作业处理时间的总和为 1.5 秒。 (如下图所示)
是不是驱动端增加了计算时间,而不是执行器端增加了计算时间?
并且这个驱动程序计算时间没有显示在作业处理中 ui?
如果是这样怎么改正?
我终于找到了解决问题的方法。
我在向我的 rdd 添加过滤器和转换的函数中有这段代码。
TypeConverter.registerConverter(new SomethingToOptionConverter[EventCC])
TypeConverter.registerConverter(new OptionToSomethingConverter[EventCC])
因为它在每个批次中调用,所以 TypeConverter
中有很多时间相同的对象。
而且我真的不知道它是如何工作的 Cassandra Spark 转换器,但它看起来像是在内部反射白色对象。
并且make slow reflection x time batch使得batch的所有处理时间增加。
我将 spark 与 cassandra spark 连接器一起使用,并直接使用 kafka。
而且我的种子批量处理随着时间的推移缓慢增加。 即使没有什么要处理来自 kafka 的传入。
我觉得按batch大概是几毫秒,但是时间长了,一个batch可能要多几秒,直到达到batch interval,最后crash。
我一开始以为是内存泄漏,但我认为处理时间不是线性的,而是呈指数增长的。
真不知道是stage越来越长还是潜伏期 增加的阶段之间。
我用的是spark 1.4.0
对此有任何指示吗?
编辑: 仔细查看每批处理时间的演变,比较总作业处理时间。
而且看起来即使批处理时间增加,作业处理时间也没有增加。 示例:对于需要 7 秒的批处理,每个作业处理时间的总和为 1.5 秒。 (如下图所示)
是不是驱动端增加了计算时间,而不是执行器端增加了计算时间? 并且这个驱动程序计算时间没有显示在作业处理中 ui?
如果是这样怎么改正?
我终于找到了解决问题的方法。
我在向我的 rdd 添加过滤器和转换的函数中有这段代码。
TypeConverter.registerConverter(new SomethingToOptionConverter[EventCC])
TypeConverter.registerConverter(new OptionToSomethingConverter[EventCC])
因为它在每个批次中调用,所以 TypeConverter
中有很多时间相同的对象。
而且我真的不知道它是如何工作的 Cassandra Spark 转换器,但它看起来像是在内部反射白色对象。
并且make slow reflection x time batch使得batch的所有处理时间增加。