应用spark streaming的时候,可以在spark UI页面监控spark streaming的运行,UI页面有一个Streaming选项卡,展示如下:
里面有四个选项,分别是input rate,,scheduling delay,processing time和total delay,其中input rate下有一个该应用所使用的输入流的方法,这里是使用的kafkaUtil的direct stream。
- input rate:即从数据源中接收数据的速率。
- scheduling delay:即一个batch在等待前一个batch处理完成前在队列中所等待的时间。
- processing time:数据的处理时间,即从接收到数据开始并进行数据转换存储操作的整个过程所使用的的时间
- total delay:即schedule delay + processing time所使用的的时间
1.1 input rate参数调整
如果kafka中含有大量未被消费的数据,在刚启动spark streaming的时候会有大量数据涌入(特别在使用kafkaUtil
的createStream
方法的时候,createStream
中的receiver会直接把数据接收过来放入内存),如果不限制接受速率,内存可能无法放下所有数据从而造成OOM。在streaming窗口中数据的处理用时超过窗口的区间时间ÿ