Spark未知问题—updateStateByKey的checkpoint引发的一系列问题
楼主在应用spark-streaming时候,用到了updateStateByKey这个算子。updateStateByKey需要事先指定一个checkpoint地址,用于存储Metadata checkpointing和Data checkpointing。
但是我在执行的时候,发现checkpoint文件随着时间的进行,会变得越来越大,同时spark运行也越来越慢。大概执行了三四天之后,执行时间会大于spark-streaming的batch-interval,导致阻塞,同时还发生了ERROR:
ERROR LiveListenerBus: Listener EventLoggingListener threw an exception
org.apache.hadoop.ipc.RemoteException(java.io.IOException): BP-1680992760-10.66.200.135-1496659127387:blk_1230053254_156330429 does not exist or is not under Constructionnull
最后用spark-ui发现,在调用checkpoint之前有一些map和filter算子执行的很慢,后来我做了两件事:1,将map和filter用flatmap替换,2,加大运算资源。
- 问题最后定位于:
hadoop自身的问题,并不影响程序运行,导致spark-streaming慢的原因是,自己没有维护偏移量。具体可以参考我的另外一篇博客:
spark-streaming越来越慢的bug