项目架构是数据实时数据写入到kafka中, sparkstreaming通过direct消费kafka并将offset保存至zookeeper中 批处理时间间隔是1S,然后数据保存到HBase
- 使用Spark-On-Yarn模式
- 正常重新启动spark程序
1ms写入kafka一条数据,测试了500万条,spark正常处理, 正常写入到HBase
证明offset正常保存,正常写入到HBase
但是过了一天
1ms写入kafka一条数据,测试了100万条 消息丢失率大概为18%左右
20ms写入kafka一条数据,正常处理,正常写入
查看了yarn web历史数据,显示executor被杀死
然后考虑是因为executor资源被占用导致内存不足,造成消息丢失
Executor被杀死但是资源没有释放
之前executor给的资源是2G,上调至4G重启sparkstreaming程序, 当天测试没问题
第二天又出现消息丢失问题, 流失率也在19%左右, 所以感觉是executor虽然被杀死,但是没释放,不知道如何处理
小初杂货铺